在Ubuntu18.04快速切換Cuda10.0 和 Cuda9.2

使用Nvidia顯卡搭配Cuda已是目前資料科學專案開發的基本配備,在Cuda版本快速更新的狀況下,如何在ubuntu18.04上面快速切換不同版本的Nvidia驅動程式環境設定。

Nvidia顯卡的驅動程式Cuda9.2版本2018年5月發行之後,Cuda10.0 在3個月之前(2018年10月)才剛發行,許多深度學習的 framework在Cuda9.2的版本執行起來相對穩定,而在Cuda10.0的環境不一定能夠執行成功(各框架在Cuda相容性的Bug還沒完全修復)。因此在自己的開發環境上保持Cuda9.2和Cuda10.0版本切換的彈性,可以嘗試最新效能較好的版本,也可以隨時退回之前的舊版本。

本篇文章已ubuntu18.04+GeForce GTX 1070為執行環境,在開始設定之前先確定

✓ 確認Nvidia-driver cuda9.2. 已安裝好.

✓ 確認Nvidia-driver cuda10.0 已安裝好.

在terminal執行以下指令,應該要可以看到顯卡的狀態。
如果沒有,就回去裝好再繼續看以下內容。

$ nvidia-smi

接下來我們要新增兩個環境設定檔在指定的路徑,在這邊以根目錄為例。

$ cd 
$ touch cuda9.2-env
$ cat cuda9.2-env​

貼上

export PATH=$PATH:/usr/local/cuda-9.2/bin
export CUDADIR=/usr/local/cuda-9.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.2/lib64

ESC + :wq 存檔離開

同樣新增

$ touch cuda10.0-env
$ cat cuda10.0-env

貼上

export PATH=$PATH:/usr/local/cuda-10.0/bin
export CUDADIR=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64

ESC + :wq 存檔離開

接下來分別測試Cuda9.2和Cuda10.0的環境是否都安裝好了。

✓ 首先,確認以上兩個環境設定檔已在指定的目錄下.

$ ls
# cuda10.0-env cuda9.2-env

✓ 切換到平常放程式碼的文件夾,新增cuda-testing文件夾.

$ cd projects
$ mkdir cuda-testing
$ cd cuda-testing/

✓ 把測試範例複製到cuda-testing文件夾裡面.

$ cp -a /usr/local/cuda-10.0/samples samples-10.0
$ cp -a /usr/local/cuda-9.2/samples samples-9.2
$ ls
# samples-10.0  samples-9.2

✓ 測試Cuda9.2.

$ cd samples-9.2/
$ source ~/cuda9.2-env
$ make -j 4

✓ 測試Cuda10.0.

$ cd ../samples-10.0/
$ source ~/cuda10.0-env
$ make -j 4

如果執行成功,看到訊息 `finished building CUDA samples` 就代表兩個都裝好囉!!

以後要在自己的專案使用不同的cuda環境,就可以簡單使用以下方法切換:

$ cd the-path-to-my-project
$ source ~/cuda10.0-env

or
$ cd the-path-to-my-project
$ source ~/cuda9.2-env

輕鬆完成!!!

最後還有一個小彩蛋。在測試範例的文件夾裡執行以下語法。

mia@pc:~/projects/cuda-testing/samples-10.0$ cd bin/x86_64/linux/release/
mia@pc:~/projects/cuda-testing/samples-10.0/bin/x86_64/linux/release/$ ./nbody

有執行成功的朋友歡迎在下面回覆你的截圖喔。下次見。

---

相關連結

NVIDIA Driver Downloads​
How to install CUDA 9.2 on Ubuntu 18.04​
How To Install CUDA 10 (together with 9.2) on Ubuntu 18.04 with support for NVIDIA 20XX Turing GPUs