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即可。
比如:
重新編譯matconvnet把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
以我的實驗環境為例,在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檔案。