天天看點

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

一、CUDA-10.1安裝:

說明:NVIDIA驅動版本需要與CUDA版本對應,具體參考下圖。

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

1. 下載下傳cuda安裝包:

  • cuda官網下載下傳:

    https://developer.nvidia.com/cuda-10.1-download-archive-update2?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal

  • 根據系統資訊選擇對應的版本,下面采用runfile方式安裝:
    Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

2. 下載下傳完後,用MD5檢驗:

  • 建議将下載下傳的cuda_10.1.243_418.87.00_linux.run放在home目錄下。
  • 用MD5檢驗,輸入以下指令,出現類似以下資訊即可。如果序号不和,得重新下載下傳:
md5sum cuda_10.1.243_418.87.00_linux.run
           
Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

3. 安裝前,首先要禁用 nouveau驅動:

(因安裝NVIDIA驅動時已經禁用),在終端運作:

lsmod | grep nouveau
           
  • 若無内容輸出,則表示禁用成功。
  • 如果有輸出則代表nouveau正在加載,需要手動禁掉nouveau,可參考上篇部落格安裝NVIDIA驅動時的操作。

4. 按 Ctrl+Alt+F1 至 Ctrl+Alt+F6(其中任意一個)進入指令行界面:

登入賬戶

5. 關閉圖形化界面:

sudo service lightdm stop
           

6. 進行安裝:

sudo sh cuda_10.1.243_418.87.00_linux.run --no-opengl-libs
           

!!!重點:要麼在此處加上 --no-opengl-libs 選項,要麼在後面通過互動式界面進行手動選擇。建議在這裡加上!!!

  • 執行指令後,稍等一會兒,會出現互動界面,輸入 accept;
  • 然後出現選擇頁面進行手動設定(如是否安裝NVIDIA驅動及驅動設定),因上篇部落格已安裝過最新的NVIDIA驅動,是以這裡不再安裝NVIDIA驅動,即Driver項不勾選,類似下圖!
    Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6
  • 若前面沒有加 --no-opengl-libs 選項,則此處要在options裡手動勾選do not install OpenGL項,即不安裝OpenGL!最後選擇 install .

    !!!注意:若不小心安裝了 OpenGL,則後面會遇到循環登陸的問題,原因就是 NVIDIA 顯示卡的 OpenGL 庫覆寫了目前 Intel 顯示卡的庫。解決辦法是再登入到文本指令行模式,用以下指令先解除安裝 CUDA 和 NVIDIA 驅動,再按正确的步驟重新安裝 NVIDIA 驅動和 CUDA:

sudo /usr/local/cuda-10.1/bin/cuda-uninstaller 
sudo /usr/bin/nvidia-uninstall
           

(NVIDIA 驅動安裝可參考上一篇部落格)

7. 安裝完成後,重新開機電腦,檢查Device Node Verification:

輸入以下指令:

ls /dev/nvidia*
           

可能出現a、b兩種結果,請對号入座。

a. 若結果顯示:

/dev/nvidia0      /dev/nvidiactl      /dev/nvidia-uvm
           

或顯示出類似的資訊,應該有三個(包含一個類似/dev/nvidia-nvm的),則表示安裝成功。

b. 也可能會是這樣:

ls: cannot access/dev/nvidia*: No such file or directory
           

或是這樣的,隻出現:

/dev/nvidia0     /dev/nvidiactl
           

即a中的一個或兩個,但沒有/dev/nvidia-num,表示檔案顯示不全,則進行如下操作:

sudo vim /etc/rc.local
           
  • 如果你是第一次打開這個檔案,它應該是空的(除了一行又一行的#注釋項外)。檔案的第一行是:
#!/bin/sh -e
           

把-e去掉(這步很重要,否則它不會加載這文本的内容)。

  • 然後把下列内容複制到exit 0之前,儲存退出。
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
#Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`

N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done

mknod -m 666 /dev/nvidiactl c 195 255

else
exit 1
fi

/sbin/modprobe nvidia-uvm

if [ "$?" -eq 0 ]; then
#Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`

mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
           

8. 重新開機,再次輸入以下指令:

ls /dev/nvidia*
           

若顯示以下三個檔案,則說明安裝成功;若沒有,檢查寫入的内容是否正确,并重新開機後再次檢視:

/dev/nvidia0       /dev/nvidiactl       /dev/nvidia-uvm
           

9. 設定環境變量,寫入 /etc/profile 檔案:

在終端中輸入:

sudo gedit /etc/profile
           

在打開的檔案末尾,添加以下兩行(64位系統為lib64,32位系統為lib):

export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
           

儲存檔案,并重新開機。因為source /etc/profile是臨時生效,重新開機電腦才是永久生效。

10. 重新開機電腦後,檢查上述的環境變量是否設定成功:

  • 驗證驅動版本,輸入:
cat /proc/driver/nvidia/version 
           

結果顯示:

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6
  • 驗證CUDA Toolkit,輸入:
nvcc -V
           

結果顯示:

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

11. 嘗試編譯cuda提供的例子:

打開終端,輸入:

cd /home/xxx/NVIDIA_CUDA-10.1_Samples
make
           

系統就會自動進入到編譯過程,整個過程大概需要十幾到二十分鐘,請耐心等待。(第一次運作時可能會報錯,提示的錯誤資訊可能會是系統中沒有gcc,解決辦法就是通過指令重新安裝gcc就行,在終端輸入:$ sudo apt-get install gcc 安裝完gcc後, 再make就正常了。)

如果編譯成功,最後會顯示Finished building CUDA samples,如下圖所示:

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

運作編譯生成的二進制檔案。編譯後的二進制檔案預設存放在NVIDIA_CUDA-10.1_Samples/bin中,接着在終端中輸入:

cd /home/xxx/NVIDIA_CUDA-10.1_Samples/bin/x86_64/linux/release       #其中xxx是你自己的使用者名
./deviceQuery  
           

結果如下圖所示,看到 Result = PASS 代表 CUDA 安裝且配置成功,若失敗 Result = FAIL:

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

最後再檢查一下系統和 CUDA-Capable device 的連接配接情況。在終端輸入:

./bandwidthTest 
           

顯示如下圖檔,則代表成功:

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

二、cuDNN-v7.6安裝:

若之前安裝過,需先删除舊版本的cuDNN:

sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
           

1. 從Nvidia官網下載下傳對應版本的安裝檔案:

官網:https://developer.nvidia.com/rdp/cudnn-archive

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

這裡選擇 Installing From A Tar File 的方式進行安裝,是以點選 cuDNN Library for Linux 進行下載下傳。

2. 解壓下載下傳的檔案:

可以看到cuda檔案夾:

tar -xvf cudnn-10.1-linux-x64-v7.6.3.30.tgz
           
Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

3. 複制以下檔案到 CUDA Toolkit 目錄,并改變檔案的權限:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
           

4. 檢視cudnn版本:

在終端輸入:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
           

出現如下圖所示的版本資訊,說明安裝成功:

Ubuntu16.04安裝CUDA-10.1及cuDNN-v7.6

大功告成啦!

繼續閱讀