天天看點

ubuntu+cuda+theano

基礎平台:64-bit,Ubuntu14.04

1.安裝NVIDIA驅動(參考技術文章,基本是複制啊,蟹蟹作者~)

(1) 在官網下載下傳NVIDIA驅動,根據自己買的型号選擇下載下傳,放到 /home/lvxia/ 目錄下面,我下載下傳的是NVIDIA-Linux-x86_64-367.27.run.

(2) 屏蔽開源驅動 nouveau(原文章說“可以不編輯blacklist.conf,NVIDIA.run驅動程式可以自己停止其他開源驅動,但是需要重新開機”)

sudo gedit /etc/modprobe.d/blacklist.conf      

添加以下内容儲存

blacklist vga16fb 
blacklist nouveau 
blacklist rivafb 
blacklist nvidiafb 
blacklist rivatv 
(這裡有一行空格)      

(3) 删除舊NVIDIA驅動

sudo apt-get --purge remove nvidia-*(需要清除幹淨)
sudo apt-get --purge remove xserver-xorg-video-nouveau      

(4) 重新開機電腦。

(5) 按Ctrl + Alt +F1(F1~F6均可)到x-server, Ctrl+Alt+F7是傳回

(6) 關閉圖形環境,否則驅動無法正常安裝

     輸入使用者名密碼登入,然後鍵入指令後執行(數字不能用小鍵盤輸入)

sudo service lightdm stop      

    成功關閉服務後将出現:lightdm stop/waiting

(7) 進入驅動所在的檔案夾,這裡就是/home/lvxia,執行

sudo sh NVIDIA*.run      

原文章連結裡的 sudo sh NVIDIA.run 執行失敗,鍵入使用者密碼。後面就一路Accept就可以~報錯The distribution-provided pre-install script failed!不必理會,繼續安裝。最重要的一步,安裝程式問你是否使用nv的xconfig檔案,這裡一點要選yes,否則在啟動x-window時不會使用nv驅動。

至此,安裝成功~

(8) 重新開機 X-window 服務

sudo service lightdm start      

檢視顯示卡是否裝好,運作

glxinfo | grep rendering      

假如顯示"direct rendering: Yes",則已安裝。

原技術文章寫了另一PPA源方法,我沒有測驗過,就不貼了~~

2.安裝Theano、cuda支援

     這裡看了很多不錯的技術部落格,但是因為沒有一個是完全适合我的情況的,也入了不少坑,是以我自己也記錄一個吧~

(1) Ubuntu-安裝-theano+caffe-超詳細教程

(2) Ubuntu 14.04系統安裝Nvidia CUDA7.5并搭建Python Theano深度學習開發環境

(3) Ubuntu14.04安裝cuda

     蟹蟹作者們~~

2.1 安裝Theano

(1) 預先安裝工具

sudo apt-get install -y python-dev python-pip python-nose gcc g++ git gfortran      

(2) 安裝BLAS, LAPACK, ATLAS

sudo apt-get install -y libopenblas-dev liblapack-dev libatlas-base-dev      

(3) 安裝NumPy

後面安裝的每一步測試為 0 errors,才能進行下一步~~時間都挺長的啊~

sudo pip install numpy
#進行測試。
python -c ‘import numpy; numpy.test()‘      

也可以指令python進入—>import numpy—>numpy.test()。

(4) 安裝scipy

sudo pip install scipy
python -c ‘import scipy; scipy.test()‘      

(5) 安裝Theano

sudo pip install Theano
sudo python -c ‘import theano; theano.test()‘      

這個測試的時候遇到 ImportError:No module named nose-parameterized 錯誤,後來執行:

pip install nose_parameterized      

再次測試就木有問題啦,等了好久~以上操作我都是參考部落格2的,然後後面我按照他的操作裝cuda時,install libgl1-mesa-glx的時候出現依賴包問題解決不了,報以下錯誤:

The following packages have unmet dependencies:

unity-control-center:      Depends:libcheese-gtk23(>=3.4.0) but it is not going to be installed

                                  Depends:libcheese7(>=3.0.1) but it is not going to be installed

令人抓狂的錯誤提示,後面搞這個搞了一兩天,最後還是沒有正面解決這個問題,不更新/更新系統更新檔、不換/換軟體源都不行,明明已經安裝了依賴的包,但是卻總提示包不被安裝,最後通過另一篇部落格裡介紹的方法安裝cuda了。。

2.2 安裝Cuda(參考部落格3)

(1) 驗證電腦是否有顯示卡支援

lspci | grep -i nvidia      

我買的是GTX 960,窮人版本…

(2) 檢視Linux的版本

uname -m && cat /etc/*release      

(3) 檢視gcc版本

gcc --version      

(4) 下載下傳nvidia cuda的倉庫安裝包nvidia-cuda,找到自己電腦對應系統對應版本。

ubuntu+cuda+theano

注意選擇的是deb(network).

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.5-18_amd64.deb      

直接下載下傳到主目錄下了~~

(5) 安裝cuda軟體包

sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb      

(6) 更新本地倉庫

sudo apt-get update      

(7) 安裝cuda啦

sudo apt-get install cuda      

原來的技術部落格裡說Ubuntu系統安裝好後不要更新系統更新檔,原因見 部落格3.

(8) 測試

echo ‘export PATH=/usr/local/cuda-7.5/bin:$PATH‘ >> ~/.bashrc

echo ‘export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH‘ >> ~/.bashrc

source ~/.bashrc      

這裡最好重新開機一下電腦,因為我按照操作後測試deviceQuery時一開始是不對的,重新開機電腦後就好了~

2.3 驗證

(1) 檢視NVCC編譯器的版本

nvcc -V i      

(2) 檢視顯示卡的驅動版本

cat /proc/driver/nvidia/version      

(3) 安裝cuda的示例代碼

cuda-install-samples-7.5.sh /home/lvxia/cuda      

(4) 編譯代碼

cd cuda/NVIDIA_CUDA-7.5_Samples/
make      

(5) 運作代碼

cd bin/x86_64/linux/release/
sudo ./deviceQuery
sudo ./bandwidthTest      

最後一行 result=pass表示通過~

3. 驗證環境

(1) 建立test.py,複制如下内容儲存,(主目錄/home/lvxia下)

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 xrange(iters):
    r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (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‘)      

(2)建立 .theanorc 設定GPU代替CPU運算(主目錄)

可以使用 gedit 打開,因為 vi 不太會操作。。複制如下内容到檔案中儲存。這個檔案在home目錄下看不到,可以通過指令 ls –all 看到的~

[global]
floatX=float32
device=gpu      

(3) 運作test.py

python test.py      

最後一行顯示 used the gpu 就對啦~

然後有句提示CNMEM is disabled, cuDNN not available, 資料說CNMEM可以不用管,Theano支援cuDNN(可選),但是Tensorflow必須要cuDNN,是以就裝cuDNN了。

(4) 安裝cuDNN

cuDNN是專門針對deep learning架構設計的一套GPU計算加速方案,首先需要注冊一下,然後才能下載下傳cuDNN。

進入Downloads目錄

tar xvzf cudnn-7.5-linux-x64-v5.0-ga.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cd -a cuda/lib64/libcudnn*  /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*      

有個技術部落格裡說的問題我這裡沒遇到。

再運作test.py,提示 CNMEM is disabled, cuDNN 5005對啦~!

後面發現了一些不錯的部落格,沒有測試,貼在這後面看看 使用GPU和Theano加速深度學習、Theano、Lasagne、TensorFlow在Ubuntu支援GPU的安裝

end,happy~

繼續閱讀