centos7 Nvidia P40 安装GPU运行环境

文章描述

安装环境

centos7、nvidia p40、cuda10.0(由tensorflow-gpu版本决定)、cudnn(tensorflow-gpu版本和cuda版本决定)、tensorflow-gpu 1.14。
查看自己GPU显卡型号命名如下:lspci | grep -i nvidia
正常应该显示Nvidia显卡的型号,没有任何显示需要更新pci硬件库update-pciids

显卡驱动安装

显卡驱动安装,我是采用runfile方式离线安装。驱动版本去官网下载地址如下:NVIDIA官网
其中需要选择CUDA版本,这个版本号需要你的tensorflow-gpu版本相对应。
tensorflow版本对应cudnn、cuda
对应官网地址

安装系统编译环境

sudo yum install gcc

查看linux系统版本对应gcc和centos内核版本

网址

验证系统是否安装正确的头文件和开发包

sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r

禁用nouveau

nouveau是第三方开源的Nvidia驱动,默认linux系统都会安装这个驱动,但是这个驱动会与Nvidia官方的驱动产生冲突,所以在安装之前需要禁用nouveau开源驱动。
查看是否已经禁用的命令:
lsmod | grep nouveau
如果没有显示内容,已经禁用,反之需要进行如下操作:

sudo vim /etc/modprobe.d/blacklist.conf

#写入以下内容
blacklist nouveau
options nouveau modeset=0

#保存并退出
:wq

#备份当前的镜像
sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

#建立新的镜像
sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)

#重启
sudo reboot

#最后输入上面的命令验证
lsmod | grep nouveau

下载驱动,我的显卡是p40且tensorflow-gpu是1.14所以对应的驱动为NVIDIA-Linux-x86_64-410.129-diagnostic.run安装最新的驱动也没关系,但需要与tensorflow-gpu的cuda相互对应

安装驱动命令

sudo sh NVIDIA-Linux-x86_64-410.129-diagnostic.run --kernel-source-path=/usr/src/kernels/3.10.0-1062.18.1.el7.x86_64/
后面的命令参数 kernel-source-path一定要加,否则找不到内核路径,最后的路径地址根据个人的内核不同而不同。
安装过程,都选择接受即可,经测试没有太大影响

检验测试

执行nvidia-smi即可,可以看到p40支持最大版本为10.0,如果安装的cuda版本为10.1的话,运行tensorflow就会报错,核节点不能被利用。

查看驱动版本号的命令

cat /proc/driver/nvidia/version

安装坑

到此驱动安装完成。安装过程中会报驱动已经应用,需要卸载驱动,卸载驱动的命令和安装的runfile有关
sudo sh ./NVIDIA-Linux-x86_64-410.129-diagnostic.run --uninstall
期间可能需要重启服务器
reboot
报内核不兼容问题,运行以下命令,更新到最新:
yum install kernel-devel kernel-doc kernel-headers gcc\* glibc\* glibc-\*

安装cuda

一台服务器上可以安装多个版本的cuda,但安装是不能超过驱动支持的cuda上限,例如p40支持cuda10.0,除此以为需要和tensorflow-gpu版本相对应。正好,我的cuda是10.0。
cuda官网地址
下载需要的版本,我还是采用runfile形式,离线下载cuda_10.0.130_410.48_linux.run

运行cuda

sudo sh cuda_10.0.130_410.48_linux.run --kernel-source-path=/usr/src/kernels/3.10.0-1062.18.1.el7.x86_64/
需要添加参数 –kernel-source-path
安装过程选项如下:

#刚开始安装会进入more模式,一直按`空格`即可

#Do you accept the previously read EULA?
#是否接受协议
accept

#Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
#是否安装Nvida驱动,不需要
n

#Install the CUDA 10.0 Toolkit?
y

#Enter Toolkit Location
#输入Toolkit的安装目录
#一般默认即可
#如果更改的话,注意是不可以改成 /usr/local/cuda 的,其余都可以
回车

#Do you want to install a symbolic link at /usr/local/cuda?
#创建一个软连接,我选择是
y

#Install the CUDA 10.0 Samples?
#安装CUDA官方示例包
#这里选择 no,因为安装目录下就有
n

#如果版本不同,提示也可能不同,根据情况输入或选择

查看cuda版本号

cat /usr/local/cuda/version.txt

添加环境变量,否则后面运行tensorflow报链接库找不到异常

libcublas.so.10.0: cannot open shared object file: No such file or directory 
...
# 在/home/user/     有一个.bashrc文件,将相关路径按下面的格式进行修改。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
export PATH=$PATH:/usr/local/cuda-10.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
#在终端运行:
source ~/.bashrc

验证cuda安装正确

nvcc --version
如果显示下面的文字说明安装成功了

如果cuda安装版本不对,卸载

cd /usr/local/cuda-10.0/bin
./uninstall_cuda_10.0.pl

安装cudnn

cudnn版本与cuda版本和tensorflow-gpu对应的版本一致

下载

cudnn下载地址
一定找到tensorflow-gpu对应版本,因为一个cuda版本对应多个cudnn版本,这个坑很严重。
我的版本是cudnn-10.0-linux-x64-v7.4.2.24.tgz

安装cudnn

tar -zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

卸载cudnn

sudo rm /usr/local/cuda/cudnn.h
sudo rm  /usr/local/cuda/libcudnn*

注意sudo权限

查看cudnn版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

验证tensorflow-gpu

安装指定版本的tensorflow-gpu

pip install tensorflow-gpu==1.14

验证

python
import tensorflow as tf
sess = tf.Session()

参考

[1]https://www.dazhuanlan.com/2019/09/27/5d8e20af422d2/
[2]https://cloud.tencent.com/developer/article/1555688
[3]https://www.jianshu.com/p/c0a3a7d5719d

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章