caffe安裝系列——安裝cuda和cudnn
阿新 • • 發佈:2019-02-10
長期招聘計算機視覺/深度學習等方向的工程師或實習生。感興趣的話,請傳送郵件,可以內推。
說明
- 網上關於caffe的安裝教程非常多,但是關於每一步是否操作成功,出現了什麼樣的錯誤又該如何處理沒有給出說明。因為大家的作業系統的環境千差萬別,按照部落格中的教程一步步的安裝,最後可能失敗——這是很常見的哦。有的教程甚至省略了一些細節部分,讓小白更不知道如何判斷每一步是否操作成功,如何處理出現的錯誤。
- 作者花費了很長時間才成功地將caffe裝完,期間遇到好多錯誤,多次重灌作業系統。現在將經驗寫下來,一方面為了和大家分享,討論;另一方面是為了記錄一下下~~~
環境
作業系統: Ubuntu 14.04(64bit)
GCC/G++:4.7.x
OpenCV: 2.4.11和3.0.0
Matlab :R2014b(a)
Python: 2.7
顯示卡:Telsa K40m & Telsa K20xm
安裝步驟
安裝cuda
- 注意1:安裝cuda可以通過二進位制安裝包安裝,也可以通過deb包線上安裝。本文使用二進位制安裝包安裝。
- 注意2:由於前面已經安裝了顯示卡驅動,因此關於顯示卡驅動的選項,選擇no,即不再安裝顯示卡驅動。
# 安裝依賴庫
apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libgl1-mesa-dev libglu1-mesa libglu1-mesa-dev libxi-dev
# 新增執行許可權,並安裝。注意不要重複安裝顯示卡驅動。
# cuda**run根據自己下載的版本更改名稱。
# 選擇安裝Cuda Samples,後邊還會編譯它。
# 選擇建立軟連線。cuda -> cuda7.0
stop lightdm
chmod a+x cuda_7.0.28_linux.run
sudo ./cuda_7.0.28_linux.run
- 修改/etc/profile檔案,將cuda新增到環境變數中。【注:關於這一點,安裝完cuda之後,命令列中有提示!!!細心看一下】
- 將/usr/local/cuda-7.0/bin新增到環境變數PATH路徑中,這樣一來,就可以在任何路徑下呼叫cuda相關的可執行檔案了。
- 將/usr/local/cuda7.0/lib64新增環境變數LD_LIBRARY_PATH
- 操作1:將以下內容新增到檔案/etc/profile的最後面,儲存後,執行命令
source /etc/profile
,使配置生效。
PATH=/usr/local/cuda/bin:$PATH
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LD_ LIBRARY_PATH
- 操作2:在目錄
/etc/ld.so.conf.d/
下新建檔案 cuda.conf,並新增如下內容。然後執行命令sudo ldconfig
,使配置生效。 - 解釋:下面第一行是上面提到的cuda庫檔案路徑,後面3行是後來綜合除錯錯誤和其它博文總結得到的。所以,最好加上,省的出錯哦。。。
/usr/local/cuda/lib64
/lib
/usr/lib
/usr/lib32
- 檢查cuda是否配置好,在命令列中執行以下命令。
#輸入以下命令,檢查是否配置好。如下圖所示,說明安裝好。
nvcc --version
安裝CUDA SAMPLES
- 為什麼安裝cuda samples?
一方面為了後面學習cuda使用,另一方面,可以檢驗cuda是否真的安裝成功。如果cuda samples全部編譯通過,沒有一個Error(Warning忽略),那麼就說明成功地安裝了cuda。但如果沒有通過編譯,或者雖然最後一行顯示PASS,但是編譯過程中有ERROR,請自行GOOGLE解決之後,再向下安裝,否則失之毫厘謬以千里!!!
make時,請使用
make -j
,可以最大限度的使用cpu編譯,加快編譯的速度。
# 切換到cuda-samples所在目錄
# 注意,換成自己的路徑
cd /home/xuezhisd/NVIDIA_CUDA-7.0_Samples
# 編譯 make (安裝命令 sudo apt-get install cmake)
make –j
# 編譯完畢,切換release目錄
cd ./bin/x86_64/linux/release
# 檢驗是否成功
# 執行例項 ./deviceQuery
./deviceQuery
# 可以認真看看自行結果,它顯示了你的NVIDIA顯示卡的相關資訊。
- ./deviceQuery執行結果如下圖所示:
- 一個Error例子
- 安裝CUDA SAMPLES的過程中,可能會出現錯誤“/usr/bin/ld: cannot find –lGL”
- 通過Google搜尋,找到以下解決方法:
locate libGL.so
# 返回結果
#/usr/lib/i386-linux-gnu/mesa/libGL.so.1
#/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so
- 但是,依然不能編譯通過。忽略進行後面的步驟,依然會提示一些.so檔案找不到。最終在OpenCV那裡完全無法再安裝了,返回卸掉解除安裝NVIDIA DRIVER 和cuda,重新安裝驅動和cuda*,成功地編譯cuda samples。
- 安裝的驅動的方法是在命令列中執行:
sudo stop lightdm
sudo apt-get install nvidia-346
- 然後將libGLobal.so連結到nvidia提供的libGLobal.so.346.82。後面編譯cuda samples和opencv過程中順利通過。
sudo ln –s /usr/lib/nvidia-346-updates/libGL.so.346.82 /usr/lib/libGL.so
即使用NVIDIA提供的libGL.so可以完成編譯,不再報錯。
注意:上面這個錯誤,就是在先裝顯示卡驅動,後裝gcc4.7過程遇到的。所以,請先安裝gcc4.7和g++4.7,然後再安裝NVDIA顯示卡驅動,再安裝cuda。
安裝cudnn
- 安裝cudnn比較簡單,簡單地說,就是複製幾個檔案:庫檔案和標頭檔案。將cudnn的標頭檔案複製到cuda安裝路徑的include路徑下,將cudnn的庫檔案複製到cuda安裝路徑的lib64路徑下。
#解壓檔案
tar -zxvf cudnn-6.5-linux-x64-v2.tgz
#切換路徑
cd cudnn-6.5-linux-x64-v2
#複製lib檔案到cuda安裝路徑下的lib64/
sudo cp lib* /usr/local/cuda/lib64/
#複製標頭檔案
sudo cp cudnn.h /usr/local/cuda/include/
#更新軟連線
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5
sudo ln -s libcudnn.so.6.5 libcudnn.so
- 到目前為止,cudnn已經安裝完了。但是,是否安裝成功了呢,還得通過下面的cudnn sample測試。
#執行cudnn-sample-v2
tar –zxvf cudnn-sample-v2.tgz
cd cudnn-sample-v2
make
./mnistCUDNN
#改程式執行成功,說明cudnn安裝成功。
- 此時可能出現錯誤:./mnist CUDNN: error while loading shared libraries: libcudart.so.6.5: cannot ope
方法1:在命令列中執行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
- 方法2:在/etc/profile檔案最後新增
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
, 並在命令列中執行source /etc/profile
。