教研室服務(wù)器多人使用,由于大家使用不同的框架,或者框架的版本不同,需要對應(yīng)不同版本的cuda,所以今天給服務(wù)器配置了多版本cuda 8.0和9.0
Cuda的下載
目前服務(wù)器上裝有Cuda,本次就是在已有Cuda8.0的基礎(chǔ)上再裝Cuda9.0并配置版本切換。
到CUDA Toolkit Download下載,我下載的是cuda_9.0.176_384.81_linux.run

推薦使用 runfile,因?yàn)槭褂?deb可能會將已經(jīng)安裝的較新的顯卡驅(qū)動替換。
Cuda9.0 安裝
進(jìn)入到放置 cuda_9.0.176_384.81_linux.run 的目錄:
sudo chmod +x cuda_9.0.176_384.81_linux.run # 為 cuda_9.0.176_384.81_linux.run 添加可執(zhí)行權(quán)限
./cuda_9.0.176_384.81_linux.run # 安裝 cuda_9.0.176_384.81_linux.run
截取安裝過程中幾個(gè)比較重要的選項(xiàng):
先按q退出說明
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 # 如果在這之前已經(jīng)安裝好更高版本的顯卡驅(qū)動就不需要再重復(fù)安裝,如果需要重復(fù)安裝就選擇 yes,此外還需要關(guān)閉圖形界面。
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]: # 一般選擇默認(rèn)即可,也可以選擇安裝在其他目錄,在需要用的時(shí)候指向該目錄或者使用軟連接 link 到 /usr/local/cuda。
/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? # 是否將安裝目錄通過軟連接的方式 link 到 /usr/local/cuda,yes or no 都可以,取決于你是否使用 /usr/local/cuda 為默認(rèn)的 cuda 目錄。
(y)es/(n)o/(q)uit: n
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: n
安裝時(shí)可能會遇到
unsupported compiler x.x.x Use --override to override this check錯(cuò)誤類型
可以使用以下命令解決
./cuda_9.0.176_384.81_linux.run --override
安裝完成后得到以下信息:
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-9.0
Samples: Not Selected
Please make sure that
- PATH includes /usr/local/cuda-9.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-9.0/lib64, or, add /usr/local/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
安裝完成之后在/usr/local/ 中可以找到以下文件:
cuda-8.0 # 筆者之前安裝的cuda-8.0
cuda-9.0 # 剛剛安裝的cuda-9.0
cuda # cuda-8.0 的軟連接
配置Cuda環(huán)境
在~/.bashrc文件末尾添加:
#在文件結(jié)尾處添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
多個(gè)cuda版本切換
安裝完cuda9.0過后在 /usr/local/下看的如下:

這里,cuda-8.0和cuda-9.0就是我們安裝的兩個(gè)cuda版本了,而cuda是一個(gè)軟鏈接,它指向我們指定的cuda版本(注意上面在設(shè)置環(huán)境變量時(shí),使用的是cuda,而不是cuda-9.0和cuda-9.1,這主要是為了方便我們切換cuda版本,可以讓我們不用每次都去該環(huán)境變量的值)
可以使用stat命令查看當(dāng)前cuda軟鏈接指向的哪個(gè)cuda版本,如下所示:
stat cuda
File: 'cuda' -> '/usr/local/cuda-9.0/'
Size: 20 Blocks: 0 IO Block: 4096 symbolic link
Device: fd00h/64768d Inode: 162662458 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-10-16 18:43:37.973536070 +0800
Modify: 2018-10-16 18:43:34.981552769 +0800
Change: 2018-10-16 18:43:34.981552769 +0800
Birth: -
可以看到現(xiàn)在筆者的cuda是指向的cuda9.0,再用nvcc --version 命令看下我們當(dāng)前使用的是哪個(gè)版本
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
使用的也是cuda 9.0
當(dāng)我們想使用cuda-8.0版本時(shí),只需要?jiǎng)h除上面的軟鏈接,然后重新建立指向cuda-8.0版本的軟鏈接即可(注意名稱還是cuda,因?yàn)橐cbashrc文件里設(shè)置的保持一致)
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda
在看下現(xiàn)在使用的cuda是哪個(gè)版本
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sun_Sep__4_22:14:01_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44
切換成了8.0
修改軟鏈接無法改變Cuda版本,解決方案
筆者在配置的時(shí)候,一步步按照之前的方法配置,但是無論怎樣修改軟鏈接都無法改變使用的cuda版本。并發(fā)現(xiàn)
使用
cat /usr/local/cuda/version.txt
得到版本為9.0,使用
nvcc --version
得到版本為8.0,考慮是之前的環(huán)境配置沒配置好。
解決方案
修改 /etc/profile 文件
sudo vim /etc/profile
在末尾加上
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
再source一下就可以了
source /etc/profile
cuDNN 安裝
安裝完了Cuda過后不要忘了為Cuda安裝cuDNN。
到cudnn download下載與Cuda相對應(yīng)版本的cuDNN

我們選擇,cuDNN v7.3.1 Library for Linux
下載完后解壓,得到一個(gè)文件夾 cuda/
執(zhí)行以下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*