Ubuntu 多版本 CUDA 共存

0 前言

因爲之前在電腦上已經裝了 Python3.6 + Tensorflow 1.11,所以用 Acaconda 創建了一個 Python2.7 的環境,在裏面裝 Tensorflow 1.4 ,但是這樣有一個問題,就是 CUDA 不兼容,Tendoflow 1.4 需要 CUDA8.0 + cuDNN 6。

所以這裏提供了一個能讓多版本 CUDA 共存的辦法。

1 下載

下載 CUDA 8.0:CUDA下載,下載 runfile 文件。

下載 cuDNN 6:cuDNN下載,下載 tgz 文件。

需要註冊一個賬號,而且能科學上網最好。。。

2 安裝

安裝 CUDA,我下載的文件名是 cuda_8.0.44_linux.run,使用以下命令開始安裝:

> sudo chmod 777 cuda_8.0.44_linux.run
> ./cuda_8.0.44_linux.run

然後是一個用戶協議,一直按回車就可以了。

接下來是一些需要選擇的問題:

Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n  					# 之前已經安裝過驅動就不用了

Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-9.0 ]:	# 直接回車

/usr/local/cuda-9.0 is not writable.
Do you wish to run the installation with 'sudo'?
(y)es/(n)o: y
Please enter your password: 

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: n					# y 也可以

然後安裝 cuDNN,我下載的文件名是 cudnn-8.0-linux-x64-v6.0.tgz,使用以下命令安裝:

> tar xvzf cudnn-8.0-linux-x64-v6.0.tgz
> sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
> sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
> sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

至此,安裝完成。

3 自由切換

上一步之後,/usr/local/ 目錄下可以找到三個文件夾:

cuda					# 軟鏈接
cuda-8.0
cuda-9.0

然後切換的思路是將使用 cuda 爲路徑,需要 cuda-8.0 時就將 cuda 指向 cuda-8.0 ,反之亦然。

我們先將配置文件改一下:

> gedit ~/.bashrc		# bash 用戶
> gedit ~/.zshrc		# zsh 用戶

我的原本是:

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

將其中的 cuda-9.0 改爲 cuda

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

這時,切換隻需:

> sudo rm -rf /usr/local/cuda
> sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda   	# 切換到 9.0 同理

現在就可以自由切換了!

不過對於我這麼懶的人來說,打兩行這麼長的命令還是麻煩了一點,如果你也很懶,不妨往下繼續。

創建一個文件名叫 cuda8,在裏面寫入:

> sudo rm -rf /usr/local/cuda
> sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda		# 切換到 9.0 同理
> nvcc -V												# 顯示當前版本號,看看是否切換成功

然後保存,執行:

> chmod 777 cuda8
> sudo cp /bin

然後以後想要切換到,cuda-8.0 只需在終端裏輸入 cuda8 就可以了。

再創建一個文件 cuda9,按照以上步驟操作一遍就大功告成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章