在ubuntu上安裝多個版本的CUDA,並實現CUDA版本的自由切換

本文以CUDA9.0爲例進行安裝的詳細介紹。

安裝前提:以root賬戶或者加入到sudo用戶組中的賬戶登錄服務器。

CUDA安裝文件下載

CUDA9.0下載鏈接:https://developer.nvidia.com/cuda-toolkit-archive,根據平臺配置選擇下載即可。

這裏下載完畢之後需要自己把文件重命名爲cuda_9.0.176_384.81_linux.run

#先執行下面的命令安裝相關依賴,否則會出現Missing recommended library錯誤

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

 

#開始安裝

sudo sh cuda_9.0.176_384.81_linux.run

 

#一堆協議說明

 

#直接按q退出協議說明

 

#接受協議

Do you accept the previously read EULA?

accept/decline/quit: accept

 

#不支持配置提醒,可以忽略

You are attempting to install on an unsupported configuration. Do you wish to continue?

(y)es/(n)o [ default is no ]: y

 

#是否安裝顯卡驅動包,這裏注意由於已經安裝了新版顯卡驅動,所以選擇n如果你是首次安裝選擇y

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?

y)es/(n)o/(q)uit: n

 

# 安裝CUDA 9.0 Toolkit工具包

Install the CUDA 9.0 Toolkit?

(y)es/(n)o/(q)uit: y

 

#工具包安裝地址,默認回車即可

Enter Toolkit Location

[ default is /usr/local/cuda-9.0 ]:

 

#添加symbolic link鏈接 **注意這個連接,如果你之前安裝過另一個版本的cuda,除非你確定想要用這個新版本的cuda,否則爲了不影響目前服務器系統環境這裏就選no因爲指定該鏈接後服務器系統會把默認使用的cuda指向這個新安裝的版本** 如果你是首次安裝可以選擇yes。由於我這裏安裝過cuda版本,所以選擇no

Do you want to install a symbolic link at /usr/local/cuda?

(y)es/(n)o/(q)uit: n

 

#安裝樣例

Install the CUDA 9.0 Samples?

(y)es/(n)o/(q)uit: y 

 

#樣例安裝地址,這裏選擇與安裝cuda toolkit工具包的地址保持一致

Enter CUDA Samples Location

 [ default is /root ]: /usr/local/cuda-9.0

 

#輸入樣例安裝地址回車之後報錯,別擔心我們慢慢分析,根據錯誤提示信息可知,運行安裝文件時可以使用--override參數來解決。

 

#加上--override參數之後重新安裝

 

# CUDA安裝完成

注意!!!如果安裝運行時加上了--override之後報如下錯誤

Installing the CUDA Toolkit in /usr/local/cuda-9.0 ...

Warning: cannot find Toolkit in /usr/local/cuda-9.0. Use --toolkitpath to specify the toolkit location.

Installing the CUDA Samples in /home/user ...

sh: 1: /usr/local/cuda-9.0/bin/cuda-install-samples-9.0.sh: not found

chown: cannot access '/usr/local/cuda-9.0/NVIDIA_CUDA-9.0_Samples': No such file or directory

===========

= Summary =

===========

Driver:   Not Selected

Toolkit:  Installation Failed

Samples:  Installation Failed

解決方案可以參照博客:http://www.javashuo.com/article/p-edwbcoqj-ns.html

#編譯並測試設備 deviceQuery:

[email protected]:~$ cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery

[email protected]:/usr/local/cuda-9.0/samples/1_Utilities/deviceQuery$ sudo make

[email protected]:/usr/local/cuda-9.0/samples/1_Utilities/deviceQuery$ ./deviceQuery

Result = PASS 代表設備測試通過

CUDA9.0安裝大功告成,不過還沒結束!我們還需要安裝與CUDA9.0相對應的cuDNN7。

cuDNN安裝庫下載

cuDNN7下載鏈接:https://developer.nvidia.com/rdp/cudnn-archive,選擇相應的版本下載即可,注意下載過程中需要登錄NVIDIA的賬號,根據提示操作即可。

下載完成之後得到的文件是cudnn-9.0-linux-x64-v7.6.5.32.solitairetheme8,然後重命名爲cudnn-9.0-linux-x64-v7.6.5.32.tar,然後再解壓cudnn-9.0-linux-x64-v7.6.5.32.tar文件會得到cuda文件夾,該文件夾包含兩個文件夾include、lib64。

cuDNN安裝開始!

相關文件複製

#切換到剛剛解壓出來的文件夾路徑

[email protected]:~$ cd cuda/

#複製include裏的頭文件到/usr/local/cuda-9.0/include/中

[email protected]:~/cuda$ cd include/

[email protected]:~/cuda/include$ sudo cp cudnn.h  /usr/local/cuda-9.0/include/

#複製lib64下的所有lib開頭的文件到cuda-9.0安裝路徑下的lib64文件夾下

[email protected]:~/cuda/include$ cd ../lib64/

[email protected]:~/cuda/lib64$ sudo cp lib* /usr/local/cuda-9.0/lib64/

 

更新軟鏈接

#切換到cuda-9.0安裝路徑下的lib64文件夾下

[email protected]:~/cuda/lib64$ cd /usr/local/cuda-9.0/lib64/

#刪除原有動態文件,版本號注意變化,可在上述cudnn-9.0-linux-x64-v7.6.5.32.tar文件解壓得到的文件夾cuda中的lib64文件夾中查看

[email protected]:~/usr/local/cuda-9.0/lib64$ sudo rm -rf libcudnn.so libcudnn.so.7

#生成軟鏈接,版本號注意變化,同樣可在上述cudnn-9.0-linux-x64-v7.6.5.32.tar文件解壓得到的文件夾cuda中的lib64文件夾中查看

[email protected]:~/usr/local/cuda-9.0/lib64$ sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7

[email protected]:~/usr/local/cuda-9.0/lib64$ sudo ln -s libcudnn.so.7 libcudnn.so

#立刻生效

[email protected]:~/usr/local/cuda-9.0/lib64$ sudo ldconfig -v

cuDNN安裝結束!

至此CUDA-9.0的整個安裝就結束了!接下來看普通用戶如何在SSH會話狀態下實現CUDA版本的自由切換!

下載CUDA版本切換腳本:https://github.com/phohenecker/switch-cuda,將switch-cuda.sh腳本下載到自己賬戶上,執行以下操作來進行自由切換。

#查看服務器上所有的CUDA版本

[email protected]:~$ source switch-cuda.sh 

#任意切換CUDA版本

[email protected]:~$ source switch-cuda.sh 9.0

感謝閱讀!有幫助請您收藏。