切換至 cuda-8.0
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda
nvcc --version
which nvcc
切換至 cuda-10.0
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
nvcc --version
which nvcc
為什么需要安裝cudnn
cuDNN的全稱為NVIDIA CUDA® Deep Neural Network library,是NVIDIA專門針對深度神經網絡(Deep Neural Networks)中的基礎操作而設計基於GPU的加速庫。cuDNN為深度神經網絡中的標准流程提供了高度優化的實現方式,例如convolution、pooling、normalization以及activation layers的前向以及后向過程。
cuDNN只是NVIDIA深度神經網絡軟件開發包中的其中一種加速庫。想了解NVIDIA深度神經網絡加速庫中的其他包請戳鏈接https://developer.nvidia.com/deep-learning-software。
各深度學習框架安裝cuDNN需知
基本上所有的深度學習框架都支持cuDNN這一加速工具,例如:Caffe、Caffe2、TensorFlow、Torch、Pytorch、Theano等。
Caffe可以通過修改Makefile.config中的相應選項來修改是否在編譯Caffe的過程中編譯cuDNN,如果沒有編譯cuDNN的話,執行一些基於Caffe這一深度學習框架的程序速度上要慢3-5倍(Caffe官網上說不差多少,明明差很多嘛)。Caffe對cuDNN的版本不是很嚴格,只要大於cuDNN 4就可以。
TensorFlow目前的版本r1.2,強行要求裝cuDNN,而且對版本也有相應的限制(cuDNN 5.1)。不過就官方說明看,TensorFlow將在下一個版本r1.3中加入對cuDNN 6.0的支持。
Torch通過LuaJit可以自動檢測目前系統中的cuDNN版本來進行相應的編譯(如沒有cuDNN,也可在進行Torch的安裝)。
如何安裝cudnn
首先說一下網上大多數中文安裝cuDNN教程的錯誤方式,這種方式真的坑人無數。
簡單地說網上的大多錯誤的安裝cuDNN的方式都是將下載后的cuDNN壓縮包解壓。然后再將cudnn的頭文件(cuda/include目錄下的.h文件)復制到cuda安裝路徑的include路徑下,將cudnn的庫文件(cuda/lib64目錄下的所有文件)復制到cuda安裝路徑的lib64路徑下。這種方法如果不重置cuDNN相應的符號鏈接的話是不能成功的安裝cuDNN的。
下面我們說一下正確的安裝cuDNN方式,其實跟着官方安裝說明進行安裝就可以了。
從https://developer.nvidia.com/cudnn上下載cudnn相應版本的壓縮包(可能需要注冊或登錄)。
如果這個壓縮包不是.tgz格式的,把這個壓縮包重命名為.tgz格式。解壓當前的.tgz格式的軟件包到系統中的任意路徑(這個路徑很重要,以下將該路徑的絕對路徑簡稱為/your/path/to/cudnn),解壓后的文件夾名為cuda,文件夾中包含兩個文件夾:一個為include,另一個為lib64。
例如:我將這個壓縮包解壓在了/usr/local目錄下,那么該文件的絕對路徑為/usr/local/cuda
tar -zvxf archive_name.tar.gz -C /usr/local
1
將解壓后的文件中的lib64文件夾關聯到環境變量中。這一步很重要。
cd ~
sudo gedit .bashrc
1
2
在彈出的gedit文檔編輯器(.bashrc中)中最后一行加入:
export LD_LIBRARY_PATH=/your/path/to/cuda/lib64:$LD_LIBRARY_PATH
1
其中/your/path/to/cudnn/lib64是指.tgz解壓后的文件所在路徑中的lib64文件夾。
保存更改的文件后,緊接着:
source .bashrc
1
再重啟一下Terminal(終端),該步驟可以成功的配置cuDNN的Lib文件。
配置cuDNN的最后一步就是將解壓后的cuDNN文件夾(一般該文件名為cuda)中的include文件夾(/your/path/to/cudnn/include)中的cudnn.h文件拷貝到/usr/local/cuda/include中,由於進入了系統路徑,因此執行該操作時需要獲取管理員權限。
打開終端,進入/your/path/to/cudnn/include。其中/your/path/to/cudnn/include指的是.tgz解壓后的文件所在路徑中的include文件夾。例如:
cd /YOUR/PATH/TO/cuda/include
sudo cp *.h /usr/local/cuda/include/
1
2
其中這里的cuda/include對於我自己的安裝來說就是/your/path/to/cudnn/include。因為我將cudnn的.tgz壓縮包解壓到了home的當前用戶的路徑下,解壓后的文件夾名為cuda。
之后,再重置cudnn.h文件的讀寫權限:
sudo chmod a+r /usr/local/cuda/include/cudnn.h
1
至此,cuDNN的配置就全部安裝完成了。
另外:
查看cuda版本的方法:
cat /usr/local/cuda/version.txt
1
查看cudnn版本的方法:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2