ubuntu下安裝cuda+cudnn步驟
今天自己在電腦上安裝了cuda ,對於小白,一天真的時很漫長,簡單記錄一下,日後方便自己再次安裝。自己是根據官網上的安裝檔案進行操作的。http://developer.nvidia.com/cuda-downloads。
給出官網上的型號適用圖:
安裝步驟如下:
1、前期準備
(1)確定有cuda使用的GPU ,可使用下面命令檢視:
$ lspci | grep -i nvidia
如果沒有看到任何設定,則使用命令 update-pciids 來升級PCI 硬體資料庫,然後重新執行上面 lspci 命令。
本人電腦上出現了GPU 版本,如下所示:
(2)檢視系統版本
$ uname -m && cat /etc/*release
你可以看到類似如下資訊:
x86_64
Red Hat Enterprise Linux Workstation release 6.0 (Santiago)
從x86_64可以看出使用的是64位。
本人電腦顯示結果如下圖所示:
(3)驗證gcc
使用命令驗證gcc版本:
$ gcc --version
從文章開頭可以知道ubuntu16.04系統需要5.3.1以上的gcc。如果電腦上沒有gcc則需要進行安裝,之後需要對cuda程式碼使用gcc進行除錯。安裝程式碼如下:
sudo apt-get install build-essential
(4)驗證系統是否有正確的核心頭和安裝包
使用如下命令可以檢視核心的版本號:
uname -r
對於ubuntu系統,可以使用如下命令進行核心頭與開發包的安裝:
$ sudo apt-get install linux-headers-$(uname -r)
(5)選擇安裝方法
一種時獨立的,一種是分散式的。這裡我沒有進行太多研究,因為我還都不懂,所以就沒有過多考慮。
以上為前期準備工作。
2、安裝
我使用的時deb檔案。所以接下來介紹的是deb檔案的安裝方法,大家也可以下載sh檔案。
先從網站上下載了cuda的deb檔案。
(1)執行deb檔案
$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
(2)升級
$ sudo apt-get update
(3)安裝CUDA
$ sudo apt-get install cuda
3、安裝後的操作
(1)修改環境變數
使用命令開啟bashrc檔案:
gedit ~/.bashrc
在bashrc檔案最後面新增上下面的cuda路徑:
$ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
其次,在bashrc檔案最後面還需要加上依賴庫地址。
64位的使用者新增如下的依賴庫地址:
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
32位的使用者新增如下的依賴庫地址:
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
注:地址最好寫成一行,否則在開啟終端時會提示路徑錯誤。
結果如下圖所示:
若寫成下圖所示格式,開啟終端時會提示路徑錯誤:
(2)驗證
a、為了修改、編譯和執行示例,必須安裝具有寫入許可權的示例。提供方便安裝指令碼:
$ cuda-install-samples-8.0.sh <dir>
其中dir為目標地址。
完成這些後要對電腦重新啟動,才能進行下面操作。
b、驗證驅動程式版本
$ cat /proc/driver/nvidia/version
再依次執行下面操作:
驗證cuda版本:
nvcc -V
結果如下圖:
nvidia-smi
c、執行例子
進入例程所在目錄:
cd /usr/local/cuda/samples/7_CUDALibraries/batchCUBLAS/
檢視當前目錄:
ls
含有五個檔案:
batchCUBLAS.cpp batchCUBLAS.h Makefile NSIGHTEclipse.xml readme.txt
直接使用make進行編譯
make
會顯示如下資訊:
/usr/local/cuda-8.0/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o batchCUBLAS.o -c batchXUBLAS.cpp
/usr/local/cuda-8.0/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o batchCUBLAS.o -lcublas
再次檢視資料夾下的檔案
ls
資料夾下包括:
batchCUBLAS batchCUBLAS.o batchCUBLAS.cpp batchCUBLAS.h Makefile NSIGHTEclipse.xml readme.txt
比之前多了2個檔案。編譯的結果放在了 /usr/local/cuda/samples/bin/x86_64/linux/release 中。
此時可以在/usr/local/cuda/samples/bin/x86_64/linux/release 目錄下執行:
./deviceQuery
會出現如下結果:
/usr/local/cuda/samples/7_CUDALibraries/batchCUBLAS/ 下的batchCUBLAS實現矩陣乘運算,可以在該目錄下執行如下程式碼:
$ ./batchCUBLAS -m4096 -n4096 -k4096
安裝CUDNN
安裝cudnn比安裝cudn相對來說簡單的多得多,所以就不單獨拿出一篇文章來介紹了。很簡單。
CuDNN是專門針對Deep Learning框架設計的一套GPU計算加速方案,目前支援的DL庫包括Caffe,ConvNet, Torch7等。
CuDNN可以在官網免費獲得,註冊帳號後即可下載。官網沒有找到安裝說明,下載得到的壓縮包內也沒有Readme. 不過google一下就會找到許多說明。基本原理是把lib檔案加入到系統能找到的lib資料夾裡, 把標頭檔案加到系統能找到的include資料夾裡就可以。參考:http://www.cnblogs.com/platero/p/4118139.html
1、下載
在網站 https://developer.nvidia.com/cudnn 下載·「 cuDNN v** library for Linux 」
2、執行如下命令
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
cd cudnn-8.0-linux-x64-v5.1 進入解壓縮的檔案內,名稱會有所不同,所以解壓的時候要注意。有時可能也會是cuda
複製相關資訊
sudo cp lib* /usr/local/cuda/lib64/
sudo cp cudnn.h /usr/local/cuda/include/
cudnn.h有時可能在include 資料夾內,需要進入include 資料夾內對 cudnn.h 進行復制。
3、
修改 caffe 的·配置檔案
進入caffe目錄下,開啟Makefile.config檔案,將Use_cudnn解註釋。
cd caffe
gedit Makefile.config
修改配置檔案:
4、驗證
對caffe進行重新編譯,如果成功載入cudnn的lib庫,則編譯成功,否則新增失敗。
驗證後出現錯誤:
/usr/bin/ld: 找不到 -lcudnn
我解決的方法是將壓縮出來的檔案單個複製到指定的資料夾下:
sudo cp libcudnn.so /usr/local/cuda/lib64/
sudo cp libcudnn.so.5 /usr/local/cuda/lib64/
sudo cp libcudnn.so.5.1.10 /usr/local/cuda/lib64/
sudo cp libcudnn_static.a /usr/local/cuda/lib64/
之後再編譯caffe,