安装其他版本的CUDA与cuDNN步骤一样!!
吃鸡总有吃腻的那天,看着屏幕前倒在我枪口下的队友,我毅然决然的决定在自己的PC机上装个Ubuntu,开始步入深度调参这条不归路…
原本PC上只有一块M.2的固态硬盘,为了搭建深度学习环境,搞了一块500G的古董机械硬盘,首先分出来100G在Win下用装GTAV,剩下不到400G用来装Ubuntu。
我看着手中的U盘微微一笑?,熟练的把他插进了机箱上的USB口。如题目所讲,我装了一个Ubuntu16.04 LTS
,台式机硬件配置见这里。
刚装完系统会发现屏幕的分辨率不对,这是因为独显驱动的问题,首先在官网找到自己显卡对应的驱动,官网
http://www.nvidia.com/Download/index.aspx?lang=cn
我下载的是NVIDIA-Linux-x86_64-384.111.run
,我的Ubuntu用户名为pizi
,在/home/pizi/
下创建了driver
目录,之后用到的安装包全放在这里,路径里最好不要有中文名。
我的安装过程很暴力:
cd /home/pizi/driver
sudo chmod 777 NVIDIA-Linux-x86_64-384.111.run
然后CTRL+ALT+F1
登录控制台,输入账户和密码,之后:
sudo service lightdm stop
在这里因为用到sudo
,所以会提示输入密码,如果看到乱码不要慌张,默默的输入密码然后回车就是了,后面如果出现也一样。接着:
sudo init 3
cd /home/pizi/driver
# 进入安装程序
sudo ./NVIDIA-Linux-x86_64-384.111.run
安装第一部会提示协议条款,accept
即可;之后按照提示进行安装,中间会提示警告32-bit
文件无法安装,忽略即可,接着下一步;接下来根据提示一步一步安装即可…(我记得有一步提示有个什么文件用不用安装,都装了呗)
安装完成后,重启:
sudo reboot
重启后会发现分辨率已经自动改正好了,在命令行输入:
nvidia-smi
可以
sudo ./NVIDIA-Linux-x86_64-384.111.run --uninstall
进行卸载
在PC上装了SSH-Service,在实验室可以远程继续装环境了,以下过程全在远程SSH(本地应该也没问题)下完成。
为什么装CUDA8.0
?应为这个版本即支持TensorFlow
,又可以用MXNet
,还可以用Matlab
和caffe
等。
在这里找下载地址,需要注册一个帐号:
https://developer.nvidia.com/cuda-release-candidate-download
我下载了cuda_8.0.61_375.26_linux.run
,并把它放到了/home/pizi/driver
。接下来开始安装:
cd /home/pizi/driver
sudo chmod 777 cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run
会提示安装协议,accept
即可:
Do you accept the previously read EULA?
accept/decline/quit: accept
提示是否安装显卡驱动,因为第一步已经装过了,所以这里n
:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: n
然后选择安装目录,默认就好(直接回车):
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
接着是否创建链接,y
创建即可:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
接下来提示是否安装Sample,程序示例,以及保存位置,最好进行安装,一会测试是否安装成功用,保存位置默认即可:
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /home/pizi ]:
其实到现在CUDA 8.0
已经安装好了,它的提示中有一段:
Please make sure that
- PATH includes /usr/local/cuda-8.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.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-8.0/bin
倒着看,首先说可以在/usr/local/cuda-8.0/bin
运行卸载程序,看了一下,里面有perl
脚本uninstall_cuda_8.0.pl
用来卸载,就算之前没有安装Sample页面关系,里面有cuda-install-samples-8.0.sh
脚本可以安装,目录如下图:
然后又提示需要添加环境变量和设置,这样操作(我感觉nano
比较好用,也可以用vim/vi/gedit):
sudo nano /etc/profile
# 在最后加入
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
# ctrl + x 保存
source /etc/profile
sudo nano /etc/ld.so.conf
# 在最后加入
/usr/local/cuda-8.0/lib64
# ctrl + x 保存
sudo ldconfig
大功告成,输入ldconfig -v|grep cuda
,如果看到:
libicudata.so.55 -> libicudata.so.55.1
libcuda.so.1 -> libcuda.so.384.111
libcudart.so.8.0 -> libcudart.so.8.0.61
就算设置好动态链接库了。接下来为编译Sample安装必须的开发工具:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安装完成后你可以选择编译全部Samples(速度慢):
cd /usr/local/cuda-8.0/NVIDIA_CUDA-8.0_Samples
# 多线程编译
sudo make -j8
编译完成后在NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
目录里可以看到变好的二进制文件,可以随便选择一个运行测试,比如./deviceQuery
,当然,在可以NVIDIA_CUDA-8.0_Samples
目录里进入1_Utilities/deviceQuery
进行make
,在输出二进制目录里运行编译好的程序。
如果安装过程中提示toolkit installation failed using unsupported compiler
。这是因为GCC版本不合适所导致的。试试sudo ./cuda_8.0.61_375.26_linux.run -override
。
其实CUDA和cuDNN都是编译好的二进制文件,把他们放到自己的系统目录,设置好环境变量就可以使用了,对于cuDNN,选择6.0是因为TensorFlow
官方的推荐,MXNet
也可以使用。在下面地址下载:
https://developer.nvidia.com/cudnn
我下载了cudnn-8.0-linux-x64-v6.0.tgz
,依然放入了home/pizi/driver
,接下来进行安装:
tar -xvf cudnn-8.0-linux-x64-v5.1.tgz
# 解压到了cuda文件夹
cd cuda
sudo cp ./include/cudnn.h /usr/local/cuda-8.0/include
sudo cp -a ./lib64/libcudnn* /usr/local/cuda-8.0/lib64
至此,全部安装完成?。
sudo apt upgrade
后发现无法找到显卡驱动,nvidia-smi
无法显示,不要慌张,重新安装一下显卡驱动就行了,其他环境不用动。看完文章后你会发现CUDNN与cuDNN都是编译好的二进制文件及头文件,完全可以分开放,分开放的好处是可以自由的组合不同版本的CUDNN与cuDNN,比如我再搭建GPU容器那篇文章里,在共享文件夹里放了不同版本的CUDA与cuDNN,每个容器可以自由选择,只需要在/etc/profile
于ldconfig
中配置相应的路径即可。
比如/etc/profile
:
# CUDN配置
export PATH=$PATH:/A-pool/cuda/cuda-9.0/bin:/A-pool/cuda/cuda-9.0/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/A-pool/cuda/cuda-9.0/lib64
export CUDA_HOME=/A-pool/cuda/cuda-9.0
# cuDNN配置
export PATH=$PATH:/A-pool/cudnn/cuda-9.0-cudnn-7.0/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/A-pool/cudnn/cuda-9.0-cudnn-7.0/lib6
/etc/ld.so.conf
:
/A-pool/cuda/cuda-9.0/lib64
/A-pool/cudnn/cuda-9.0-cudnn-7.0/lib64
[1] http://blog.csdn.net/u012581999/article/details/52433609
[2] http://blog.csdn.net/Suodislie/article/details/70228138
[3]原文来自我的个人博客 https://feelncut.com/2018/01/09/46.html