在配置Ubuntu Server的CUDA和TensorFlow的过程中,遇到了很多问题(驱动无法正常运行、CUDA无法正常配置等等),在网上找了很多资料,最终正确安装驱动、CUDA、cuDNN和TensorFlow(GPU版本),因此将安装过程记录下来,方便以后再配环境。
版本要求:
- Ubuntu 16.04 LTS
- CUDA 9.0
- cuDNN v7
- Python 3.6
- TensorFlow r1.10
- PyTorch 0.4.1
1 准备工作
1.1 检查GPU是否符合CUDA运行要求
在Shell中运行命令:
1 | lspci | grep -i nvidia |
查看GPU型号,然后在https://developer.nvidia.com/cuda-gpus页面中查找设备的GPU是否在支持CUDA的列表中。
1.2 检查GCC版本
1 | gcc --version |
对于Ubuntu 16.04来说,gcc版本需要>5.4.0。
1.3 检查Kernel版本
1 | uname -r |
对于Ubuntu 16.04来说,内核版本需要>4.4.0。
然后需要安装对应版本的Kernel Header:
1 | sudo apt-get install linux-headers-$(uname -r) |
1.4 安装对应的库
1 | sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev \ |
2 安装CUDA
2.1 首先安装显卡驱动(选做,CUDA自带的驱动可能会无法正常运行)
(1) 禁用Nouveau
运行命令:
1 | lsmod | grep nouveau |
如果有显示内容,则说明Nouveau驱动正在运行,需要根据教程关闭Nouveau。
(2) 卸载之前的显卡驱动
(3) 下载并安装驱动
在NVIDIA驱动下载页面按照自己的GPU型号、系统以及CUDA版本选择驱动并进行下载,得到诸如nvidia-diag-driver-local-repo-ubuntu1604_3XY.AB-1_amd64.deb的文件(XY.AB需要根据下载版本进行修改)。
然后运行以下命令:
1 | sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604_3XY.AB-1_amd64.deb(XY.AB需要根据下载版本进行修改) |
运行后系统会进行重启,在运行命令前请保存所有正在运行的工作。
重启后运行:
1 | sudo nvidia-smi |
如果正常输出显卡状态说民驱动安装成功。
2.2 安装CUDA
在CUDA下载页面下载Runfile形式的CUDA安装包,形式为cuda_9.0.176_384.81_linux.run。
具体CUDA和cuDNN版本参考TensorFlow安装要求,对于r1.10版本来说支持的CUDA版本为9.0。
(Optional)
对于有GUI的系统来说,需要在启动时按下Ctrl + Alt + F1/F4
进入tty1/tty4模式,然后运行:
1 | sudo service lightdm stop |
停止GUI运行。
开始安装CUDA。
1 | sudo sh cuda_9.0.176_384.81_linux.run |
- 一路按空格,输入
accept
同意用户协议 - 安装程序询问是否安装驱动,输入
no
- 询问是否安装CUDA Toolkit,输入
yes
- 更改CUDA Toolkit安装位置,这里不作修改
- 是否创建/usr/local/cuda符号链接,如果只安装一个CUDA版本,输入
yes
- 询问是否安装CUDA Samples,输入
yes
- 更改CUDA Samples安装位置,这里不作修改
如果没有报错,则说明安装成功。如果提示:
Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
则需要安装依赖库:
1 | sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev |
然后重新运行CUDA安装程序即可。
2.3 配置环境变量
运行:
1 | sudo vi /etc/profile |
用vi编辑启动脚本。用方向键将光标定位至文件末尾然后按i
插入以下内容:
1 | export PATH=$PATH:/usr/local/cuda-9.0/bin |
在Shell中运行:
1 | export PATH=$PATH:/usr/local/cuda-9.0/bin |
2.4 验证CUDA是否安装成功
(1) 验证驱动版本
运行:
1 | cat /proc/driver/nvidia/version |
查看驱动版本。
(2) 查看nvcc版本
运行:
1 | nvcc -V i |
查看nvcc版本。
(3) 运行示例(选做)
按照教程运行示例。
3 安装cuDNN
在cuDNN下载页面下载TensorFlow支持的cuDNN版本,目前支持的是cuDNN v7。在下载时需要注册NVIDIA账号和开发者账号。
下载后得到一个诸如cudnn-9.0-linux-x64-v7.tgz的压缩包。
运行:
1 | tar -xvzf cudnn-9.0-linux-x64-v7.tgz |
进行解压,在当前目录得到cuda文件夹。
然后运行
1 | sudo cp cuda/include/cudnn.h /usr/local/cuda/include |
将cuDNN拷贝至CUDA目录中。
可以按照官方教程来验证cuDNN的安装。
4 安装Tensorflow
如果没安装pip,则需要安装pip:
1 | sudo apt-get install python3-pip python3-dev |
然后尝试从官方源下载安装TensorFlow:
1 | pip3 install tensorflow-gpu |
如果安装缓慢或者网络错误,请尝试切换至清华大学提供的镜像源:
1 | pip3 install tensorflow-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple |
接下来验证安装,在Shell或者IDE中运行代码:
1 | # Python Code |
等待,如果能够正常输出
1 | Hello, TensorFlow! |
说明安装成功。如果输出错误信息,可以参考官方文档解决。
5 安装PyTorch
运行:
1 | conda install pytorch torchvision -c pytorch |
安装完成后,在Shell或者IDE里运行:
1 | # Python Code |
如果看到True
和显卡名称,说明安装成功。