一 环境参数
操作系统:centos7.x
Python:python3
所需软件
cuda_8.0.44_linux.run
NVIDIA-Linux-x86_64-384.111.run
cudnn-8.0-linux-x64-v6.0.tgz
二 安装流程
1.关闭UEFI
在BIOS里面检查你的UEFI是否开启,如果开启的话请立马关掉它(这个很重要,因为它很有可能导致kernel安装失败,遇到了这个坑,浪费了好多时间),具体怎么关掉就不多说,由于每种电脑型号的BIOS都有所不同。
2.确认自己的显卡支持cuda
# lspci | grep -i nvidia
3.确认Linux版本是否支持cuda
# uname -m && cat /etc/*release
4.检查gcc是否安装
# gcc --version
5.安装kernel-devel和kernel-headers
# sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
其中$(uname -r)就是个参数,uname -r表示kernel的版本号。
6.关闭X server
# systemctl stop gdm.service
7.禁用nouveau
(因为它是一般linxu系统自带的显卡驱动,会和nvidia冲突,所以必须要关掉)
- 将 nouveau 驱动加入黑名单:在 /usr/lib/modprobe.d/dist-blacklist.conf 中加入 blacklist nouveau(这种方式仅限在centos 7.x,其他Linux 版本的系统需要查看具体文档自行解决)。
(2)备份 initramfs 文件:
#sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
(3)重建 initramfs 文件:
# sudo dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
8.关机重启
#reboot
9.安装NVIDIA驱动
安装NVIDIA驱动是很重要的步骤,该步成功了,后面的步骤就相对容易了。
(1)使用第2步中的方法,找到你的驱动型号,然后在官网找到与之匹配的型号
官网地址:http://www.nvidia.cn/Download/index.aspx?lang=cn
# sudo sh NVIDIA-Linux-x86_64-384.66.run --kernel-source-path=/usr/src/kernels/$(uname -r)
安装过程中会弹出以下界面,每一步按照提示选择即可, 具体的安装执行过程
在accept的页面选择Accept,
在32-bit页面选择No
在X- configuration页面选择Yes
在安装过程中,可能会出现一下两种错误:
第一种:The driver installation is unable to locate the kernel source. Please make sure that the kernel source packages are installed and set up correctly.
If you know that the kernel source packages are installed and set up correctly, you may pass the location of thekernel source with the '--kernel-source-path' flag.
解决方案:
# sudo yum install epel-release
# sudo yum install --enablerepo=epel dkms
第二种:
ERROR: Unable to load the 'nvidia-drm' kernel module.
解决方案:One probable reason is that the system is boot from UEFI but Secure Boot option is turned on in the BIOS setting.
Turn it off and the problem will be solved.
这也就是为什么在第一步中关掉UEFI的原因了。
10.安装cuda
在这个页面选择与系统版本匹配的cuda,这里建议不要下载太新的cuda版本,因为下载太新的版本很有可能和tensorflow版本匹配不上。
下载地址:https://developer.nvidia.com/cuda-80-download-archive
安装的命令
# sudo sh cuda_8.0.61_375.26_linux-run
此处选择n。
11.配置cuda环境变量
编辑~/.bashrc文件
# sudo vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-8.0/
注意cuda的版本号
12.安装cuDNN
在官网上(https://developer.nvidia.com/rdp/cudnn-archive)下载cuDNN包,
选择了cudnn-8.0-linux-x64-v6.0.tgz。
# tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz
# cp cuda/include/* /usr/local/cuda/include
# cp cuda/lib64/* /usr/local/cuda/lib64
13 安装GPU版本的ternsorflow
TensorFlow各版本自主下载地址:
cpu版本:https://pypi.python.org/pypi/tensorflow/1.4.0
gpu版本:https://pypi.python.org/pypi/tensorflow-gpu/1.4.0
此处安装的1.4版本,如果版本有差异,上述过程涉及到的软件需要进行版本调整
# pip3 install tensorflow-gpu==1.4.0
14 问题采坑总结
libcudnn.so.6.0 cannot open shared object file: No such file or directory
"libcudnn.so.X.0 cannot open shared object file: No such file or directory"错误,这是运行tensorflow程序过程中比较常见的一个错误,此处也是花费时间最多的一个地方,因为cuda的路径可能设置错了。
解决方案:
解决办法是将一些文件复制到/usr/local/lib文件夹下:
#注意自己CUDA的版本号!
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.6.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.6.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.6.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.6 /usr/local/lib/libcudnn.so.6 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcusolver.so.8.0 /usr/local/lib/libcusolver.so.8.0 && sudo ldconfig
sudo ldconfig /usr/local/cuda/lib64
然后在执行:
sudo ldconfig /usr/local/cuda/lib64
libtensorflow_framework.so: undefined symbol: cudnnSetRNNDescriptor_v6
解决方案:
Cudnn版本有问题
1 移除已有的cudnn版本:
$ sudo rm /usr/local/cuda/include/cudnn.h
$ sudo rm /usr/local/cuda/lib64/libcudnn.so
$ sudo rm /usr/local/cuda/lib64/libcudnn.so.5.*
2 重装cudnn-6.0
安装NVIDIA驱动时you appear to be running an x server please exit x before installing
按住ctrl+alt+F1 进入控制台
sudo init 3 注意空格 会做掉x
rm /tmp/.X*
上面的命令是删掉X 的锁文件
再次cd 到.run文件所在目录
再次执行 sudo ./.run文件
最后reboot 重启电脑。
注:同事安装cuda9.0,cudnn-7.0、TensorFlow-gpu1.5.0成功。
cuda_10.0.130_410.48_linux.run、cudnn-10.0-linux-x64-v7.3.1.20.tar.gz、tensorflow-gpu1.13.0rc0成功。