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

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