1. 程式人生 > >caffe安裝系列——安裝cuda和cudnn

caffe安裝系列——安裝cuda和cudnn

長期招聘計算機視覺/深度學習等方向的工程師或實習生。感興趣的話,請傳送郵件,可以內推

說明

  • 網上關於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
    中,作為共享庫使用。這樣一來,後面編譯Cuda Samples 和OpenCV時,就不會提示找不到庫的錯誤了。
  • 操作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