前言
之前安装在Ubuntu上安装CUDA的时候,只会用deb文件安装,前一阵子装服务器的工程师来帮我们安装系统的时候顺便把CUDA也安装了,我也就跟着学了一手。现在整理一下。总的来说就是用自己的驱动安装完了之后,不能到附加驱动里切换,同时在安装CUDA的时候不安装驱动,就是这个区别。
安装显卡驱动
我在安装CUDA的时候没有像网上的博客那样去禁用原先的显卡驱动,就直接安装。
sudo ./NVIDIA-Linux-x86_64-384.90.run –no-x-check –no-nouveau-check
如果重启之后出现了循环登录的情况,就用
nvidia-uninstall
卸载显卡驱动,进去之后再安装显卡驱动就可以了。安装完之后输入nvidia-smi看能不能读出显卡来。不行就重启/登出试下。
安装CUDA8.0
sudo ./cuda_8.0.176_384.81_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
Do you wish to run the installation with 'sudo'?
(y)es/(n)o: y
Please enter your password:
Do you want to install the OpenGL libraries?
(y)es/(n)o/(q)uit [ default is yes ]:
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /home/xxx ]:
除了安装显卡驱动那一项,都选yes。安装完之后就会出现Incomplete install什么的,那是没有安装它自己的显卡驱动的原因。
之后添加CUDNN加速库。
tar -xzvf CUDNN6.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
至此,CUDA8.0安装就算完成了。
安装CUDA9.0
9.0和8.0的大致方法差不多。
sudo ./cuda_9.0.176_384.81_linux.run
也会出现上面8.0的选项,同样的就是除了安装显卡驱动之外都选择yes。结束的时候也会和8.0一样就是Incomplete install,也是因为没有安装它自己的显卡驱动。
这时候,可以安装CUDNN加速库。
tar -xzvf CUDNN7.tgz
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*
至此,9.0安装结束。
配置环境变量
最后,最重要的一步就是配置环境变量。因为是双CUDA所以,/etc/profile就不一样了。
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
export LIBRARY_PATH="/usr/local/cuda/lib64:$LIBRARY_PATH"
然后重启/登出,应该就可以了,可以用nvcc -V来查看,也可以在8.0配置完了就配置环境变量。关于切换8.0和9.0,下次再补。