操作系统: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
在BIOS里面检查你的UEFI是否开启,如果开启的话请立马关掉它(这个很重要,因为它很有可能导致kernel安装失败,遇到了这个坑,浪费了好多时间),具体怎么关掉就不多说,由于每种电脑型号的BIOS都有所不同。
# lspci | grep -i nvidia
# uname -m && cat /etc/*release
# gcc --version
# sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
其中$(uname -r)就是个参数,uname -r表示kernel的版本号。
# systemctl stop gdm.service
(因为它是一般linxu系统自带的显卡驱动,会和nvidia冲突,所以必须要关掉)
(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)
#reboot
安装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的原因了。
在这个页面选择与系统版本匹配的cuda,这里建议不要下载太新的cuda版本,因为下载太新的版本很有可能和tensorflow版本匹配不上。
下载地址:https://developer.nvidia.com/cuda-80-download-archive
安装的命令
# sudo sh cuda_8.0.61_375.26_linux-run
此处选择n。
# 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的版本号
在官网上(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
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
"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
解决方案:
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
按住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成功。