一、說明
- 本文是繼《Ubuntu-安裝-cuda7.0-單顯卡-超詳細教程》 之后的續篇。theano和caffe是深度學習庫,對運算能力需求很大,最好使用cuda進行加速。所以,請先閱讀《Ubuntu-安裝-cuda7.0-單顯卡-超詳細教程》,成功安裝cuda之后,再來安裝theano和caffe。
二、安裝Theano
1. 安裝各種包
-
安裝gfortran, numpy, scipy, sklearn, blas, atlas等包
# 安裝gfortran,后面編譯過程中會用到 sudo apt-get install gfortran # 安裝blas,Ubuntu下對應的是libopenblas,其它操作系統可能需要安裝其它版本的blas——這是個OS相關的。 sudo apt-get install libopenblas-dev # 安裝lapack,Ubuntu下對應的是liblapack-dev,和OS相關。 sudo apt-get install liblapack-dev # 安裝atlas,Ubuntu下對應的是libatlas-base-dev,和OS相關。 sudo apt-get install libatlas-base-dev # 安裝pip sudo apt-get install python-pip sudo apt-get install python-dev sudo apt-get install python-nose sudo apt-get install g++ sudo apt-get install git
2. 安裝numpy和scipy
-
安裝這兩個python庫有點問題,如果使用apt-get安裝,后面的test不能通過。如果使用pip安裝,有得考慮各種依賴關系。
-
所以,先使用apt-get安裝,然后再卸載,最后再使用pip安裝。這樣,既能不考慮依賴關系,又能通過后面的test()測試。
#安裝numpy和scipy sudo apt-get install python-numpy sudo apt-get install python-scipy sudo apt-get install python-sklearn #卸載numpy和scipy sudo apt-get remove python-numpy sudo apt-get remove python-scipy # 安裝numpy sudo pip install numpy # 測試numpy#,如果沒有安裝python-nose,測試會出錯!python -c " import numpy numpy.test() # 安裝s cipy sudo pip install scipy # 測試scipypython -c " import scipy scipy.test()"
3. 安裝Theano
-
前面的操作如果沒有出現錯誤,就可以開始安裝Theano了。命令如下所示。
# 安裝Theano sudo pip install Theano # 測試Theano import theano; theano.test()
4. 安裝pyCUDA
- 測試Theano時,提示PyCUDA import錯誤,因此需要安裝pyCUDA。而PyCUDA需要以Boost為基礎,所以應該先安裝Boost。
-
使用pip安裝pyCUDA。
#安裝boost sudo apt-get install libboost-all-dev
-
如果使用pip安裝pyCUDA出錯,使用下面安裝方式。參考文章:《Ubuntu Theano CUDA》
sudo ldconfig /usr/local/cuda-7.0/lib64
5. 解決cuda_ndarray.cu錯誤
-
如果出現錯誤:ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.6.5 cannot open shared object file: No such file or directory,需要運行以下命令:
sudo ldconfig /usr/local/cuda-7.0/lib64
6. 配置Theano
-
在主目錄下新建.theanorc文件
cd ~vi .theanorc
-
在.theanorc中輸入下面的內容
[cuda]root=/usr/local/cuda/bin/[global]floatX = float32device = gpu0[nvcc]fastmath = True
7. 測試Theano是否在使用GPU
-
將下列python代碼復制到useGPU.py,並運行。
from theano import function, config, shared, sandboximport theano.tensor as Timport numpyimport timevlen = 10 * 30 * 768 # 10 x #cores x # threads per coreiters = 1000rng = numpy.random.RandomState(22)x = shared(numpy.asarray(rng.rand(vlen), config.floatX))f = function([], T.exp(x))print f.maker.fgraph.toposort()t0 = time.time()for i in xrange(iters): r = f()t1 = time.time()print 'Looping %d times took' % iters, t1 - t0, 'seconds'print 'Result is', rif numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]): print 'Used the cpu'else: print 'Used the gpu'
-
假定上面已經設置文件
.theanorc
,運行命令如下所示:python useGPU.py
-
如果出現下面的錯誤信息,請運行命令
sudo ldconfig /usr/local/cuda-7.0/lib64
參考#錯誤信息ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.0: cannot open shared object file: No such file or directory
Theano相關資料
- 參考:Using the GPU & THEANO_FLAGS & THEANORC
- CUDA Toolkit默認安裝在
/usr/local/cuda/
,含有bin, lib, include等子文件夾。/usr/local/cuda/bin/
文件夾稱為cuda root文件夾。 -
使用Theano時,必須告訴它CUDA root文件夾,有3種方法:
- 定義$CUDA_ROOT環境變量。例如,
CUDA_ROOT=/usr/local/cuda/bin/
- 在THEANO_FLAGS中添加cuda.root標識。例如,
THEANO_FLAGS='cuda.root=/usr/local/cuda/bin/'
-
在.theanorc文件夾中添加[cuda]
[cuda]root=/usr/local/cuda/bin/
- 定義$CUDA_ROOT環境變量。例如,
-
還需要更改設備選項(gpu or gpu0 or gpu1),設置默認的浮點計算類型(float32)
- 方法一:THEANO_FLAGS=’cuda.root=/usr/local/cuda/bin/,device=gpu,floatX=float32’
-
方法二:設置
.theanorc
文件的[global]選項:[cuda]root=/usr/local/cuda/bin/[global]device = gpufloatX = float32
- 注意:
- 如果電腦有多個GPU,而配置是‘device=gpu’,驅動會選擇其中一個使用(一般是
gpu0
)。可以使用 nvida-smi 改變這一規則。 - 可以通過指定 ‘device=gpuX’來選擇一個特定的GPU。
- 默認使用GPU計算。如果GPU有問題,Theano會退回使用CPU。可以通過設置標識‘force_device=True’,當GPU不能使用時,彈出錯誤信息。
- 如果電腦有多個GPU,而配置是‘device=gpu’,驅動會選擇其中一個使用(一般是
安裝OpenCV
下載OpenCV
- 下載地址:https://github.com/jayrambhia/Install-OpenCV,這是根據大神編譯過的版本進行安裝的。
- 切換到文件保存的文件夾,然后安裝依賴項:
#切換路徑cd ~/Downloads/Install-OpenCV-master/Ubuntu#安裝OpenCV的依賴項sudo ./dependencies.sh
- 修改opencv2_4_9.sh
- 如果不添加CUDA_GENERATION,編譯過程會失敗 參考文章
#切換路徑cd 2.4#修改opencv2_4_9.sh, 添加CUDA_GENERATION#根據顯卡支持Fermi或Kepler做相應的修改。此處以Fermi為例。sudo gedit opencv2_4_9.sh
將以下內容
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ..
修改為:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_GENERATION=Fermi ..
即在最后的..
前面添加CUDA_GENERATION=Fermi
- 安裝最新版opencv2_4_9
#添加執行權限sudo chmod +x opencv2_4_9.sh#安裝OpenCVsudo ./opencv2_4_9.sh
等待…..,直到安裝完成。如下圖所示。
安裝其它依賴項
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler python-pandas
安裝glog
- Google Logging Library(glog),下載地址:https://code.google.com/p/google-glog/,然后解壓安裝:
tarzxvfglog−0.3.3.tar.gz ./ configure
make sudo make install
下載caffe
下載地址:https://github.com/BVLC/caffe
本地解壓
切換路徑cd ~/Downloads/caffe-master/python
執行以下命令,安裝python環境
for req in (catrequirements.txt);dosudopipinstallreq; done
安裝Matlab
選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁盤映像掛載器打開”
進入裝載的虛擬光盤,拷貝全部文件至home/Matlab 文件夾
3. 授權安裝文件夾 $ chmod a+x Matlab -R
4. 安裝 $ sudo ./install
拷貝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64
sudocplibmwservices.so/usr/local/MATLAB/R2014a/bin/glnxa64/安裝完畢,程序默認啟動路徑:sh /usr/local/MATLAB/R2014a/bin/matlab
參考文章
Ubuntu14.04安裝Theano詳細教程
caffe官方安裝教程
Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置說明
Caffe在Ubuntu 14.04 64bit 下的安裝
Ubuntu Theano CUDA
Unsupported gpu architecture ‘compute_11’解決方法
Caffe + Ubuntu 15.04 + CUDA 7.0 新手安裝配置指南(推薦)