教研室服务器多人使用,由于大家使用不同的框架,或者框架的版本不同,需要对应不同版本的cuda,所以今天给服务器配置了多版本cuda 8.0和9.0
Cuda的下载
目前服务器上装有Cuda,本次就是在已有Cuda8.0的基础上再装Cuda9.0并配置版本切换。
到CUDA Toolkit Download下载,我下载的是cuda_9.0.176_384.81_linux.run
推荐使用 runfile,因为使用.deb可能会将已经安装的较新的显卡驱动替换。
Cuda9.0 安装
进入到放置 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 添加可执行权限
./cuda_9.0.176_384.81_linux.run # 安装 cuda_9.0.176_384.81_linux.run
截取安装过程中几个比较重要的选项:
先按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 # 如果在这之前已经安装好更高版本的显卡驱动就不需要再重复安装,如果需要重复安装就选择 yes,此外还需要关闭图形界面。
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]: # 一般选择默认即可,也可以选择安装在其他目录,在需要用的时候指向该目录或者使用软连接 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 为默认的 cuda 目录。
(y)es/(n)o/(q)uit: n
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: n
安装时可能会遇到
unsupported compiler x.x.x Use --override to override this check错误类型
可以使用以下命令解决
./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环境
在~/.bashrc文件末尾添加:
#在文件结尾处添加
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
多个cuda版本切换
安装完cuda9.0过后在 /usr/local/下看的如下:
这里,cuda-8.0和cuda-9.0就是我们安装的两个cuda版本了,而cuda是一个软链接,它指向我们指定的cuda版本(注意上面在设置环境变量时,使用的是cuda,而不是cuda-9.0和cuda-9.1,这主要是为了方便我们切换cuda版本,可以让我们不用每次都去该环境变量的值)
可以使用stat命令查看当前cuda软链接指向的哪个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: -
可以看到现在笔者的cuda是指向的cuda9.0,再用nvcc --version 命令看下我们当前使用的是哪个版本
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
当我们想使用cuda-8.0版本时,只需要删除上面的软链接,然后重新建立指向cuda-8.0版本的软链接即可(注意名称还是cuda,因为要与bashrc文件里设置的保持一致)
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda
在看下现在使用的cuda是哪个版本
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版本,解决方案
笔者在配置的时候,一步步按照之前的方法配置,但是无论怎样修改软链接都无法改变使用的cuda版本。并发现
使用
cat /usr/local/cuda/version.txt
得到版本为9.0,使用
nvcc --version
得到版本为8.0,考虑是之前的环境配置没配置好。
解决方案
修改 /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相对应版本的cuDNN
我们选择,cuDNN v7.3.1 Library for Linux
下载完后解压,得到一个文件夹 cuda/
执行以下命令:
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*