硬件和系统:显卡是GTX-1080ti,系统是Ubuntu16.04LTS桌面版。整个安装流程分为两大部分,第一部分是安装NVIDIA的文件,包括显卡驱动,cuda以及cudnn;第二部分则是安装tensorflow-gpu版本。
NVIDIA相关文件安装
NVIDIA主要有三个文件安装,显卡驱动#cuda和cudnn,首先简要介绍一下为什么要安装它们:
- 显卡驱动:这个无需多言,没有它显卡就不能用了,更别提用它来加速;
- cuda:cuda是NVIDIA推出的通用并行计算架构,它使GPU以并行计算的方式更快地解决复杂的计算问题;
- cudnn:cudnn是NVIDIA推出的专门用来对深度学习加速的库,它支持Matlab,TensorFlow及PyTorch等深度学习的加速优化。
它们都是从NVIDIA官网下载的,只是cudnn的下载需要注册帐号。我下载的 - 驱动文件是:NVIDIA-Linux-x86_64-390.87.run(版本为390.87)
- cuda文件是:cuda_9.0.176_384.81_linux.run(该cuda支持版本大于384.81的驱动)
- cudnn文件是:cudnn-9.0-linux-x64-v7.tgz(适用于cuda-9.0,实际版本为7.0.5)
下面是它们具体的安装过程。
1#安装显卡驱动
在安装Ubunutu系统时,系统一般会自己安装nouveau显卡驱动,这是一个第三方的开源显卡驱动,适用于
多种复杂的硬件环境。但它不是NVIDIA官方的驱动,支持不了cuda,只是为了让用户在最开始使用Ubuntu系统时能够以正常的分辨率显示图形界面,所以需要禁用它,然后再安装NVIDIA驱动。
桌面版的Ubuntu,有一个最简单的方式:在“软件和更新”–>“附加驱动”里,系统会自动检测到NVIDIA官方的显卡驱动,例如‘使用NVIDIA binary driver-version 384.130来自nvidia-384(专有,tested)’只要选中它,点击‘应用更改’然后重启即可,这样就完成了nouveau的禁用和版本为384.130的驱动安装,而且384.130的驱动版本也满足cuda9.0的支持大于384.81的驱动的要求。但是!我这样做了重启之后一直在循环登录,进不了系统,原因是384.130的驱动太旧,不能完美支持我的显卡。所以我只能下载390.87的版本手动安装,安装之前还要禁用nouveau。
禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,通过以下命令打开该文件:
sudo gedit /etc/modprobe.d/blacklist.conf
在打开文件的最后一行添加:blacklist nouveau(把nouveau加入黑名单)然后执行以下命令使之生效:
sudo update-initramfs -u
最后输入以下命令测试:
lsmod | grep nouveau
如果没有反应说明nouveau禁用成功,接下来安装显卡驱动。把解压出来的CUDA 安装文件(cuda_9.0.176_384.81_linux.run)移动到 HOME 路径下,按Ctrl+Alt+F1 进入命令行界面,输入用户名和密码进入后,输入以下命令:
sudo /etc/init.d/lightdm stop //禁用X-Window服务,关闭图形界面
sudo chmod a+x NVIDIA-Linux-x86_64-390.87.run(下载的驱动文件名)//赋予驱动文件可执行权限
sudo ./NVIDIA-Linux-x86_64-390.87.run -no-opengl-files //安装
–no-opengl-files表示只安装驱动文件,不安装OpenGL文件,这个参数很重要。等待驱动安装,其中有一些选项,一般默认即可。安装完之后再输入:
sudo /etc/init.d/lightdm start //开启图形界面
重启,此时驱动应该安装成功了,在终端输入:
nvidia-smi //列出驱动版本和GPU的信息列表
nvidia-settings //弹出驱动设置对话框
如果显示列表或弹出对话框则表示驱动安装成功。
2#安装cuda
在安装cuda之前需要先安装依赖,否则会报以下的错误:
Installing the CUDA Toolkit in /usr/local/cuda-9.0 ...
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so
所以,通过sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
这条命令安装所需依赖。然后进入到cuda文件目录下,执行以下命令:
sudo sh cuda_9.0.176_384.81_linux.run --no-opengl-libs
参数no-opengl-libs表示不安装opengl的库,执行此命令后大概1分钟左右会出现安装协议,狂按回车键,一直到100%后,出现下面提示并要求你输入相关选择:
Do you accept the previously read EULA?
accept/decline/quit: accept //输入accpet同意协议
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n //不安装NVIDIA加速图形驱动,因为之前装过了
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y //安装CUDA 9.0 Toolkit
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]: //cuda默认安装位置,直接回车
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y //创建软链接
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: y //安装CUDA示例
Enter CUDA Samples Location
[ default is /home/user ]: //CUDA示例默认位置,直接回车
Installing the NVIDIA display driver...
Installing the CUDA Toolkit in /usr/local/cuda-9.0 ...
Installing the CUDA Samples in /home/user ...
Copying samples to /home/user/NVIDIA_CUDA-9.0_Samples now...
Finished copying samples.
===========
= Summary =
===========
Driver: Installed
Toolkit: Installed in /usr/local/cuda-9.0
Samples: Installed in /home/user
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 //删除CUDA操作
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. //警告未安装CUDA中的驱动,不管它,之前已经安装符合要求的驱动
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
然后,使用gedit命令打开配置文件添加cuda环境变量:
sudo gedit ~/.bashrc
在文件最后添加以下内容并保存:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
执行以下命令使配置生效:
source ~/.bashrc
测试CUDA 是否安装成功,输入:
//测试1
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
//测试2
cd /usr/local/cuda-9.0/samples/1_Utilities/bandwidthTest
sudo make
./bandwidthTest
如果最后出现Result = PASS,说明成功;如果出现Result = FAIL,说明显卡驱动版本和CUDA 9.0不适配,需要重新安装合适的版本。
完成后可用 nvcc -V 命令验证是否安装成功,出现以下信息则表明成功:
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
3#安装cudnn
最后安装cudnn,其实cudnn不是安装,而是将它的文件移动到cuda制定的目录下,使cudnn能够调用到相关库函数就行,可以直接把cudnn相关文件移动过去,这里采用软链接的办法。先将cudnn-9.0-linux-x64-v7.tgz解压,得到include 和 lib64 两个文件夹,命令行进入include 文件夹下,进行以下操作:
sudo cp cudnn.h /usr/local/cuda/include/ //复制头文件
然后进入cudnn/lib64 文件夹下,执行:
sudo cp lib* /usr/local/cuda/lib64/ //复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 //删除原有动态文件
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 //生成软衔接
sudo ln -s libcudnn.so.7 libcudnn.so //生成软链接
随后将路径/usr/local/cuda/lib64 添加到动态库,分两步:
(1)安装vim
sudo apt-get install vim-gtk
(2)更改cuda配置文件:
sudo vim /etc/ld.so.conf.d/cuda.conf
打开文件后,按住i进入编辑状态,添加文字:
/usr/local/cuda/lib64
然后按esc,输入:(注意有冒号)
:wq #保存退出
再输入sudo ldconfig
使使链接生效。
安装tensorflow-gpu
直接使用pip(3) install tensorflow-gpu==1.8.0
安装指定版本的tensorflow-gpu