Ubuntu 18.04安装CUDA(版本10.2)和cuDNN
1.系統要求
2.安裝前的要求
3.runfile安裝(不支持跨平臺)
4.后續安裝操作
5.安裝cuDNN
6.匯總問題
???????本文基于Ubuntu 18.04.3 LTS 64位安裝CUDA 10.2和對應版本的cuDNN,GPU型號為ZOTAC RTX2080Ti-11GD5。
???????NVIDIA DEVELOPER ZONE提供的CUDA TOOLKIT DOCUMENTATION,極具參考價值。
1.系統要求
???????為了能夠使用CUDA,我們需要進行如下配置或下載:
???????1)支持CUDA的GPU。NVIDIA給出的官方網址,可以用來查詢GPU是否支持CUDA;
???????2)受支持的Linux版本,具有gcc編譯器和工具鏈。由下圖可以看到CUDA 10.2支持的本地Linux發行版;
???????
2.安裝前的要求
???????1)確認系統安裝了gcc編譯器;
# 查看當前系統的gcc版本
$ gcc --version
# 若沒有安裝gcc,則執行以下命令
$ apt install gcc
???????2)確認系統安裝了滿足要求的Kernel Header和Development Package;
# 查看系統正在運行的Kernel Header
$ uname -r
# 執行系統更新后,為了確保Kernel Header和正在運行的Kernel相匹配,需要執行以下命令
$ sudo apt-get install linux-headers-$(uname -r)
???????3)選擇一種安裝方法,并下載CUDA工具包(下載鏈接)
???????CUDA工具包的安裝機制有兩種,定制發行包(RPM和Deb包)和獨立發行包(runfile包)。獨立發行包的優點是支持更多的Linux發行版,而且不需要更新Linux的本機軟件包管理系統。定制發行包與Linux的本機軟件包管理系統對接。官方給出的建議是盡可能使用定制發行包,但在本次安裝中所使用的是獨立發行包(runfile包)。
???????
???????
# 下載完成后,需要驗證工具包是否完整
$ md5sum cuda_10.2.89_440.33.01_linux.run
???????下載頁面下方提供了installer Checksums,可以與執行以上命令生成的校驗碼進行比對,一致則確認文件完整。
???????
???????4)處理安裝沖突的方法(在安裝過程中,未做該步驟)
???????在安裝CUDA之前,應將以前安裝的與之沖突的CUDA工具包和NVIDIA驅動程序卸載。
???????CUDA工具包安裝兼容表
???????
???????NVIDIA驅動程序安裝兼容表
???????
# 使用下面的命令卸載工具包的runfile安裝
$ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
# 使用下面的命令卸載驅動程序的runfile安裝
$ sudo /usr/bin/nvidia-uninstall
# 或者使用下面的命令卸載RPM/Deb安裝
$ sudo apt-get --purge remove <package_name>
3.runfile安裝(不支持跨平臺)
???????1)禁用Nouveau
???????為了安裝顯示驅動程序,Nouveau驅動程序必須首先被禁用。每個Linux的發行版有不同的方法禁用Nouveau。
# 若執行以下命令打印內容,則Nouveau驅動程序被加載
$ lsmod | grep nouveau
# Nouveau驅動程序被加載時,執行如下;否則到此為止
# 創建包含以下內容的文件/etc/modprobe.d/blacklist-nouveau.conf
? blacklist nouveau
? options nouveau modeset=0
# 重新生成kernel initramfs
$ sudo update-initramfs -u
???????2)設備節點驗證
???????檢查設備文件/dev/nvidia*是否存在并且有正確的文件權限(0666)。CUDA驅動程序使用這些設備文件與NVIDIA驅動程序的內核模態部分進行通信。正常情況下,諸如CUDA應用程序或X服務器(如果有的話)等使用NVIDIA驅動程序的應用程序將會自動創建這些文件,除非丟失了與NVIDIA驅動程序綁定在一起的setuid nvidia-modprobe工具。然而,一些系統禁用setuid二進制文件,當這些文件不存在時,可以使用以下啟動腳本手動創建它們。
#!/bin/bash
/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
???????3) 安裝CUDA工具包
???????重啟電腦,在登陸界面按組合鍵Ctrl+Alt+F1(F1~F6親試都可以,Ctrl+F7可以退出)進入文本模式,登錄用戶。
# 關閉圖形化界面
$ sudo service lightdm stop
# 查看狀態,確認是否關閉,關閉成功狀態為dead
$ sudo service lightdm status
# 進入下載CUDA runfile文件的路徑,安裝CUDA工具包
$ sudo sh cuda_10.2.89_440.33.01_linux.run
????????
???????
???????
???????在該步驟遇到的問題可以跳轉到最后的匯總問題中查找鏈接解決。
4.后續安裝操作
???????1)設置環境變量
???????路徑變量需要包括/usr/local/cuda-10.2/bin和/usr/local/cuda-10.2/NsightCompute-<tool-version>.?<tool-version>(CUDA隨附的Nsight Compute版本,例如2019.1)。
# 添加路徑到PATH變量
$ export PATH=/usr/local/cuda-10.2/bin:/usr/local/cuda-10.2/NsightCompute-2019.1${PATH:+:${PATH}}
# 此外,使用runfile安裝時,64位系統上的LD_LIBRARY_PATH變量需要包含/usr/local/cuda-10.2/lib64
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64\
? ? ? ? ? ? ? ? ? ? ? ? ?${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
???????2)重啟圖形化界面
# 執行下面命令,重啟圖形化界面
$ sudo service lightdm start
# 查看圖形化界面是否啟動
$ sudo service lightdm status
???????按組合鍵Ctrl+Alt+F7返回到圖形化登錄界面,輸入賬戶密碼。如果登錄成功,就表示不會遇到循環登錄的問題,說明CUDA安裝成功。循環登錄的情況并未遇到,可以查看文末的參考鏈接,里面有所提及。?
???????3)安裝持久化守護程序(官方推薦)
???????在Linux上,NVIDIA提供了用戶空間守護程序,支持跨CUDA作業運行的驅動程序狀態的持久化。與持久化模式相比,守護程序方法提供了一種更優雅和魯棒的解決方法。
# 以root用戶啟動NVIDIA Persistence Daemon
$ /usr/bin/nvidia-persistenced --verbose
???????4)確認安裝成功
???????在繼續之前,重要的是確認CUDA工具包能夠找到并且正確地與支持CUDA的硬件通信。為此,需要編譯并運行其中一些示例程序。注意:確認在runfile安裝機制中正確設置了PATH和LD_LIBRARY_PATH變量。
# 通過執行以下命令來確定驅動程序的版本,該命令在獨顯中不起作用
$ cat /proc/driver/nvidia/version
?
???????匯編示例。如果不加make后的參數,可能會遇到錯誤。
# 進入~/NVIDIA_CUDA-10.2_Samples目錄,使用下面命令進行匯編
$ make -k
???????編譯完成后,運行二進制文件。在~/NVIDIA_CUDA-10.2_Samples目錄下找到并運行deviceQuery文件,如果CUDA軟件安裝和配置正確的話,deviceQuery的輸出應該如下所示。
$ cd ~/NVIDIA_CUDA-10.2_Samples/bin/x86_64/linux/release
$ ./deviceQuery
???????
???????真正的輸出取決于系統。第一行顯示檢測到設備,第二行顯示設備型號,最后一行顯示測試通過。如果設備支持CUDA且CUDA驅動程序已經安裝,但是deviceQuery文件報告現在沒有支持CUDA的設備,那就可能是/dev/nvidia*文件丟失或者權限問題,還有可能是未關閉SELinux。
5.安裝cuDNN
???????下載cuDNN(除deb安裝外,還有壓縮包的下載鏈接,前者需要注冊登錄),然后按照NVIDIA官方提供的安裝文檔進行安裝。進入下載目錄,執行以下命令。
# 安裝runtime庫
$ sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb
# 安裝developer庫
$ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb
# 安裝代碼示例和《cuDNN庫用戶指南》
$ sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.2_amd64.deb
???????驗證cuDNN在Linux上是否安裝成功。為了驗證cuDNN已經安裝并正確運行,需要編譯位于/usr/src/cudnn_samples_v7目錄下的mnistCUDNN樣例。
# 將cuDNN示例復制到可寫路徑
$ cp -r /usr/src/cudnn_samples_v7/ $HOME
# 進入到可寫路徑
$ cd ?$HOME/cudnn_samples_v7/mnistCUDNN
# 編譯mnistCUDNN示例
$ make clean && make
# 運行mnistCUDNN示例
$ ./mnistCUDNN
???????如果已經正確安裝cuDNN,示例將運行在Linux系統上。這時,你將會看到Test passed!的提示。
6.匯總問題
???????1)安裝過程中出現gcc++的問題,可以參考該鏈接。
???????2)在安裝完成后,強迫癥患者會升級和更新軟件包,相關命令可參考該鏈接(慎用,可能問題是NVIDIA驅動失效,需重裝)。
???????3)安裝NVIDIA驅動程序的過程中出現內核版本不一致的問題,并無影響,參看該鏈接。在這里需要多說一句,BIOS中的安全啟動項需要在安裝前檢查是否被禁用,很多參考中(例如)針對不同問題都提出禁用的建議。
???????4)除NVIDIA提供的官方文檔外,還參考了以下文章,感謝博主和知友。
???????①?Ubuntu 16.04 上安裝 CUDA 9.0 詳細教程
???????②?Ubuntu16.04下安裝cuda和cudnn的三種方法(親測全部有效)
???????③?Ubuntu 18.04安裝CUDA和cuDNN
???????④?環境乃一生之敵 01 nvidia驅動+cuda安裝幫助
???????⑤ CUDA及NVIDIA驅動安裝總結(只安裝NVIDIA驅動)
???????5)NVIDIA顯卡驅動的安裝問題,可以參考該鏈接(提到獨顯和集顯切換)和該鏈接。
???????6)CUDA driver version is insufficient for CUDA runtime version,在重新安裝NVIDIA驅動程序后解決了該問題(NVIDIA驅動程序的下載鏈接)。
?
總結
以上是生活随笔為你收集整理的Ubuntu 18.04安装CUDA(版本10.2)和cuDNN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker tensorflow-ju
- 下一篇: Anaconda 镜像使用帮助