1. 程式人生 > >linux配置matconvnet(GPU support)

linux配置matconvnet(GPU support)

ps:個人實驗,僅供參考

硬體:

1、Intel(R) Xeon(R) E5-2620v2 2.10GHz 12core

2、NVIDIA Quadro K2000顯示卡compute capability 2.0及以上可使用matconvnet GPU加速

3、RAM 16GB

環境:

1、fedora17 x86_64

2、cuda 7.5

3、matlab2015a

4、matconvnet 1.0 beta16

5、cudnn 6.5 v2

一、安裝fedora17

試過很多linux版本,Fedora17配置起來比較簡單。主要原因是matconvnet在編譯時需要使用gcc4.7,其他版本可能導致編譯失敗。

Fedora17 x86_64下載地址:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Fedora/x86_64/iso/

安裝過程中注意選擇software development

二、安裝cuda和Nvidia顯示卡驅動

1、安裝所需依賴項(如果在安裝Fedora17時選擇的是software development這些依賴是安裝好的)

sudo rpm -q gcc kernel-headers kernel-devel  檢視是否安裝gcc、kernel-headers、kernel-devel

sudo yum install gcc kernel-headers kernel-devel聯網情況下可以使用yum命令安裝依賴

sudo rpm -ivh xxx.rpm使用下載好的rpm安裝包安裝依賴

2、禁用nvidia第三方驅動nouveau,啟用nvidia驅動

sudo vi /etc/modprobe.d/blacklist.conf修改blacklist

新增blacklist nouveau禁用nouveau

找到blacklist nvidia這一行刪除或註釋掉(在前面新增#)

vi編輯器的一些操作:底行模式下按i進行輸入,esc返回底行模式,:wq寫入檔案並退出。不懂的找度娘。

3、重建initramfs

sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak備份initramfs檔案

sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)建立initramfs檔案

操作錯誤可能會導致系統無法啟動,可以放入系統盤進入終端模式通過備份還原initramfs檔案,再重複步驟3

4、文字模式開機

ln -sf /lib/systemd/system/multi_user.target /etc/systemd/system/default.target

不同釋出版的linux設定文字模式開機的方法不同,這個命令在Fedora17下可用。

5、重啟電腦

lsmod|grep nouveau確保nouveau沒有載入(沒有任何輸出資訊)

6、安裝nvidia驅動和cuda

安裝cuda時會提示你是否安裝相容驅動,不過cuda自帶的相容驅動可能會導致電腦重啟無法進入圖形介面,建議下載最新的nvidia驅動。

可以先安裝cuda在安裝nvidia驅動,這樣可以避免安裝cuda自帶的相容驅動。

具體安裝執行nvidia官網下載的.run 檔案即可,例如:sudo XXX.run

cuda7.5下載地址:https://developer.nvidia.com/cuda-downloads

nvidia驅動下載地址:http://www.nvidia.cn/Download/index.aspx?lang=cn

7、新增系統變數

sudo vi ~/.bashrc修改bashrc檔案

新增export PATH=$PATH:/usr/local/cuda-7.5/bin

新增export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64

source ~/.bashrc使修改立即生效

具體新增內容在cuda安裝完成後會有提示,修改bashrc檔案要謹慎,操作錯誤會導致系統命令不能使用。

8、圖形模式開機

ln -sf /lib/systemd/system/graphic.target /etc/systemd/system/default.target

9、重啟電腦

nvcc -V檢視nvcc編譯器資訊

如果操作成功則cuda安裝成功,如果不成功可檢視/usr/local路徑下是否安裝上cuda,確認cuda已經安裝後檢查系統變數是否新增正確。

10、測試cuda sample

如果在安裝過程中選擇安裝了cuda sample,預設會在安裝cuda的使用者的使用者資料夾(~/ 目錄)下生成NVIDIA_CUDA-7.5_Sample。

進入目錄執行make命令進行編譯。編譯過程中可能會提示缺少lib,需要安裝相應lib。大部分缺少的lib可在安裝盤的package目錄下找到,比如:缺少lglut可以找到free-glut的rpm安裝包。

編譯成功後會生成bin目錄。

三、安裝matlab

下載matlab的安裝包進行安裝就可以,不多做介紹了。

安裝matlab後建立啟動器的方法:

sudo gedit /usr/share/applications/matlab.desktop

[Desktop Entry]

Name=Matlab2015a

Comment=Matlab2015a

Exec=/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin/matlab -desktop新增matlab的執行路徑,-desktop不能缺少。

Icon=

Terminal=false

Type=Application

Categories=Application

四、安裝matconvnet

下載matconvnet:http://www.vlfeat.org/matconvnet/

安裝過程參考:http://www.vlfeat.org/matconvnet/install/

1)新增路徑

解壓matconvnet,開啟matlab進入matconvnet目錄下執行:run matlab/vl_setupnn

2)編譯matconvnet

vl_compilenn('verbose',1)

3)編譯GPU支援

matlab與建議使用的cuda toolkit


如果使用的是上表中對應matlab版本的cuda可直接執行:vl_compilenn('enableGpu',true)

否則在編譯GPU支援時需要在引數中寫入cuda路徑。

比如我使用過的是matlab2015a+cuda7.5,編譯命令為:

vl_compilenn('enableGpu',true,...

'cudaRoot','/usr/local/cuda-7.5',...

'cudaMethod','nvcc')

五、安裝cudnn

下載cudnn:https://developer.nvidia.com/cudnn

需要先申請註冊,通常會在4小時內收到郵件回覆,最多不超過兩天。

安裝時解壓cudnn並在系統環境中新增LD_LIBRARY_PATH即可。

比如:

把cudnn拷貝到cuda同一目錄下命名為cudnn-6.5,即/usr/local/cudnn-6.5

編輯bashrc:sudo vi ~/.bashrc

修改LD_LIBRARY_PATH:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cudnn-6.5

使修改生效:source ~/.bashrc

重新編譯matconvnet

以我的實驗環境為例,在matlab下執行命令:

vl_compilenn('enableGpu',true,...

'cudaRoot','/usr/local/cuda-7.5',...

'cudaMethod','nvcc',...

'enableCudnn','true',...

'cudnnRoot','/usr/local/cudnn-6.5')

編譯過程中若報錯提示找不到libcudnn,可能原因是cudnn的librarypath沒有新增生效。

六、測試

執行vl_testnn('gpu',true)進行測試。

如果是64位系統可能會報錯,參考https://github.com/vlfeat/matconvnet/issues/246和https://github.com/vlfeat/matconvnet/commit/dc9b5755a0d9335f8814e9a878bc3ab0f8fe09ee

修改vl_test_nnlayers.m檔案。