教研室服务器多人使用,由于大家使用不同的框架,或者框架的版本不同,需要对应不同版本的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 with the name of this run file:
sudo .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*