Ubuntu15.04 64位安装Theano(已经测试可执行)
備注:之前服務器上已經安裝caffe,后安裝Theano,所有有些步驟簡略。
安裝caffe詳情見
Caffe + Ubuntu 15.04 + CUDA 7.5 在服務器上安裝配置及卸載重新安裝(已測試可執行)
安裝所需的安裝包見
鏈接: http://pan.baidu.com/s/1jIRJ6mU
提取密碼:xehi
Theano官方網站:
http://deeplearning.net/software/theano/#
BLAS(Basic Linear Algebra Subprograms)是基礎線性代數子程序庫,里面擁有大量已經編寫好的關于線性代數運算的程序; LAPACK?(Linear Algebra PACKage)包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特征值問題和奇異值問題等; ATLAS是python下的一個線性代數庫,是基于另外兩個線性代數庫BLAS和lapack的; NumPy提供了一個在python中做科學計算的基礎庫,它重在數值計算,甚至可以說是用于多維數組處理的庫; SciPy是基于numpy,提供了一個在python中做科學計算的工具集,也就是說它是更上一個層次的庫; Theano則是基于NumPy以及SciPy的一個更高級的用于科學計算的庫。
要安裝Theano,就需要先安裝好numpy和scipy; 要安裝numpy和scipy,就需要ATLAS; 要安裝ATLAS,就需要安裝BLAS和LAPACK;
相關庫的安裝順序
安裝順序:BLAS → LAPACK → ATLAS → numpy → scipy → Theano第1步:安裝cuda,若已經安裝可進入第2步
sudo dpkg -i cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb sudo apt-get update sudo apt-get install -y cuda但此時查詢cuda會出現問題
nvcc -V問題是
The program 'nvcc' is currently not installed. You can install it by typing: sudo apt-get install nvidia-cuda-toolkit但是我們已經安裝了cuda,在 /usr/local 能夠看到文件夾 cuda-7.5。 這需要如下設置
執行sudo gedit ~/.bashrc,在最后面,64位的話粘貼以下內容:
export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH接著執行 source ~/.bashrc 使其立即生效
下面查詢
可見如下結果
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2015 NVIDIA Corporation Built on Tue_Aug_11_14:27:32_CDT_2015 Cuda compilation tools, release 7.5, V7.5.17第2步:配置cuda
執行
會彈出顯卡配置的界面,至少7個大項,其中有一項叫GPU-0(Quadro K5200)和GPU-1(Tesla K40c),如果能看到自己的顯卡的話,應該就算安裝成功了。下面進行配置。
使用自帶的samples進行GPU運算測試。進入到cuda-7.5的samples目錄,一般都是cd /usr/local/cuda-7.5/samples,然后會有一個Makefile文件,執行命令
sudo make不出意外地話,會出現帶有紅顏色的error錯誤,大概是這樣的:unsupported GNU version! gcc versions later than 4.9 are not supported! 意思也很明顯了,就是gcc的版本高于4.9,Cuda不支持。
解釋一下:ubuntu15.04自帶的gcc是4.9.2,可以通過
gcc --version查看,但是cuda不支持超過4.9.2的gcc編譯器。要么安裝一個低版本的編譯器,要么把cuda的這個限制給去掉。
方法1:降級安裝gcc/g++版本為4.7.x
(a). 下載gcc/g++ 4.7.x
(b). 鏈接gcc/g++實現降級
cd /usr/bin sudo rm gcc sudo ln -s gcc-4.7 gcc sudo rm g++ sudo ln -s g++-4.7 g++方法2 去掉 cuda的限制
sudo cd /usr/local/cuda/include/ #進入到頭文件目錄cuda(而不是cuda-7.5); sudo cp host_config.h host_config.h.bak #備份原頭文件; sudo gedit host_config.h #編輯頭文件;ctrl+F查找4.9出現的地方,大約位于115行,在第113行處應該顯示if GNUC>4 || (GNUC == 4 && GNUC_MINOR > 9),因為我們的是4.9.2,因此,把上面的2個4都改成5就ok了,保存退出。
備注:Matlab 2014a(2015a)的版本是4.7.x所以在使用matla調用mex文件的時候,基本上都會報錯。綜上所述,建議使用方法1來修改。
接著進行編譯
cd /usr/local/cuda-7.5/samples sudo make這個過程會比較長,讓他在哪編譯一會,剩下的時間可以用來安裝Theano。
第3步: 安裝 Theano
更新源
sudo apt-get update安裝依賴包
sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git安裝scipy依賴包
scipy的安裝需要依賴于numpy、lapack、atlas(后兩者都是線性代數工具包),而numpy和sci的測試程序的運行又依賴于nose,因此,整個安裝過程必須要按順序執行的,否則是無法執行下去的。
1、先安裝nose包
sudo apt-get install python-nose
2、接下來安裝各種包
# 安裝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
安裝Theano
sudo pip install Theano測試numpy是否啟用了blas加速,進入python
在命令行輸入
輸出False表示加速成功,如果輸出True,參考官方教程修改,理論上很少加速失敗。失敗請查看高性能Numpy/Scipy加速:使用Intel MKL和Intel Compilers或OpenBLAS(待續)
第4步: 編輯Theano配置文件
sudo gedit ~/.theanorc寫入以下下內容:
[global] openmp=False floatX=float32 device=gpu allow_input-downcast=True [blas] ldflags= [nvcc] flags=-D_FORCE_INLINES [lib] cnmem = 1第5步:命令端其他測試
NumPy (~40s)
python -c "import numpy;numpy.test()"SciPy (~2m)
python -c "import scipy;scipy.test()"Theano (~30m)
python -c "import theano;theano.test()"在Theano測試時可能會有問題
Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN Version is too old. Update to v5, was 4004.)所以這需要升級為cuDNN v5。
出現了no module named nose-parameterized問題
pip install nose-parameterized第6步:測試經典的GPU測試代碼保存至test.py
sudo gedit test.py寫入以下內容
from theano import function, config, shared, sandbox import theano.tensor as T import numpy import time vlen = 10 * 30 * 768 # 10 x #cores x # threads per core iters = 1000 rng = 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 range(iters):r = f() t1 = time.time() print ('Looping %d times took' % iters, t1 - t0, 'seconds') print ('Result is', r) if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):print ('Used the cpu') else:print ('Used the gpu')結果顯示如下
Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN 5103) /home/bids/.local/lib/python2.7/site-packages/theano/sandbox/cuda/__init__.py:600: UserWarning: Your cuDNN version is more recent than the one Theano officially supports. If you see any problems, try updating Theano or downgrading cuDNN to version 5.warnings.warn(warn) [GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)] ------------------------------------------------------- Looping 1000 times took 0.630527973175 seconds --------------------------------------------------------- Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.299677611.62323296] Used the gpu如果想用cpu測試的話,就sudo gedit ~/.theanorc,將其中的gpu修改為cpu就可以了。
結果顯示如下
結果顯示 GPU加速效果明顯
Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN 5103)
解決方法
cnmem package: https://github.com/NVIDIA/cnmem
cd $HOME % git clone https://github.com/NVIDIA/cnmem.git cnmem % cd cnmem % mkdir build % cd build % cmake .. % makelink with cnmem
The source folder contains a header file include/cnmem.h and the build directory contains the library libcnmem.so, put them into your cuda path: /usr/local/cuda/include,/usr/local/cuda/lib64
sudo cnmem sudo cp -rf ./include/cnmem.h /usr/local/cuda/include sudo cp -rf ./build/libcnmem.so /usr/local/cuda/lib64sudo gedit ~/.theanorc [global] openmp=False floatX=float32 device=cpu allow_input-downcast=True [blas] ldflags= [nvcc] flags=-D_FORCE_INLINES [lib] cnmem = 1
測試
python test.py Using gpu device 0: Tesla K40c (CNMeM is enabled with initial size: 95.0% of memory, cuDNN 5110)參考主頁:
Ubuntu15.10_64位安裝Theano+cuda7.5詳細筆記
Ubuntu-安裝-theano+caffe-超詳細教程
Caffe + Ubuntu 15.04 + CUDA 7.5 在服務器上安裝配置及卸載重新安裝(已測試可執行)
Ubuntu14.04安裝Theano詳細教程
Theano: CNMeM is disabled, CuDNN not available
Windows10 64Bit完美配置Theano并實現GPU加速并解決((CNMeM is disable,CuDNN not available))
總結
以上是生活随笔為你收集整理的Ubuntu15.04 64位安装Theano(已经测试可执行)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 释放cpugpu内存、显存和
- 下一篇: 平安优享金上征信吗?逾期影响很严重!