GeophyAI

Python与地球物理数据处理

0%

CentOS下CUDA及cuDNN安装

工作站CentOS-7下CUDA驱动及cuDNN安装

安装包选择及下载

  • Nvidia驱动下载: 一般不使用 CUDA 安装包中的驱动程序,而是到官方网站根据 GPU 型号下载对应驱动,这里我们选择与 RTX2080Ti 对应的440.82-Linux 64-bit版本,笔者首先安装的驱动,然后才装的 CUDA-10.0 ,理论上二者先后顺序没有强制性。若先装 CUDA 的话记住不要不要不要不要安装自带的驱动程序,否则可能会出现重启后黑屏无法进入系统等问题Ubuntu 中一般能够通过命令行操作删除驱动和 CUDA,但在 CentOS 系统中可能会导致无法进入终端命令行字符界面,完全黑屏时最粗暴的处理办法就是重装系统,grub 中的操作方式笔者没有研究过。当然了,如果先装驱动程序后装 CUDA ,自带的驱动自然也是不需要安装的。
  • CUDA Toolkit 下载:版本根据实际需要进行选择,笔者最开始接触的GPU并行编程语言的时候就已经是 v10.0 了(现在最新版本为 CUDA11),本机器上安装的 CUDA_10.0.130历史版本 CUDA 下载地址
  • cuDNN下载:下载 cuDNN 前要先注册一个 Nvidia 账户,忘记密码的话通过官方渠道申请修改密码可能会遇到无法收到邮件的问题,这一问题暂时没有好的解决办法;如果没有账户的话直接注册一个即可,(注册账户的邮件能收到,修改密码的经常收不到,同时我们注意到官方开通了微信或者QQ登陆方式,但是我打不开。。。),cuDNN 版本与 CUDA 版本要对应上,这里笔者使用的是与 CUDA10.0对应的 cuDNN7 (cudnn-10.0-linux-x64-v7.6.5.32,没有链接,刚改了密码又忘了登不上去了= =)。
CUDA Toolkit Linuxx86_64驱动版本 Windowsx86_64驱动版本
CUDA 10.2.89 >= 440.33 >= 441.22
CUDA 10.1 (10.1.105 general release, and updates) >= 418.39 >= 418.96
CUDA 10.0.130 >= 410.48 >= 411.31
CUDA 9.2 (9.2.148 Update 1) >= 396.37 >= 398.26
CUDA 9.2 (9.2.88) >= 396.26 >= 397.44
CUDA 9.1 (9.1.85) >= 390.46 >= 391.29
CUDA 9.0 (9.0.76) >= 384.81 >= 385.54
CUDA 8.0 (8.0.61 GA2) >= 375.26 >= 376.51
CUDA 8.0 (8.0.44) >= 367.48 >= 369.30

安装过程

在准备好以下三个文件后就可以开始安装了(最好先把它们都下载下来放到U盘里,做好多次重装系统的准备)

1
2
3
$ cuda_10.0.130_410.48_linux.run #CUDA Toolkit
$ cudnn-10.0-linux-x64-v7.6.5.32.tgz #cuDNN for CUDA10
$ NVIDIA-Linux-x86_64-440.82.run #Nvidia-driver for RTX2080Ti
  • Nvidia 驱动及CUDA安装

首先查看是否开启了默认的 nouveau 驱动,如果输入lsmod | grep nouveau 没有任何提示的话则已经关闭了该驱动,若有提示,则需要首先禁用该驱动:

1
2
3
4
5
6
7
8
9
10
[root]$ cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf.back #备份原有黑名单(如果提示没有此文件的话可以在该目录下创建一个新的同名文件,然后再进行后续操作)
[root]$ echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist.conf #禁用nouveau驱动
[root]$ mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.back #备份initramfs
[root]$ dracut /boot/initramfs-$(uname -r).img $(uname -r) --force #重建initramfs
[root]$ init 6 #重启
[root]$ cd /../../ #切换到驱动所在目录
[root]$ sh ./NVIDIA-Linux-x86_64-440.82.run #执行安装过程(安装如果卡在Verifying archive integrity... Error in check sums 00000000 000000,重新到官网上选择自己显卡型号的驱动下载再次安装即可)
[root]$ nvidia-smi #查看驱动是否安装成功,若顺利输出GPU信息则成功,或者切换到Toolkit的Samples中编译并运行带着的例子,显示Result=PASS则能够顺利运行CUDA程序。
[root]$ sh ./cuda_10.0.130_410.48_linux.run #安装CUDA Toolkit,记住不要安装里面带着的驱动
[root]$ reboot #安装完成重启,顺利进入图形界面~
  • cuDNN安装

话不多说直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root]$ cd /../../ #切换到cuDNN安装包所在目录
[root]$ tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz #解压cudnn到当前文件夹
[root]$ cp cuda/include/cudnn.h /usr/local/cuda-10.0/include/
[root]$ cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
[root]$ chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
# 系统环境下解决:以下两步为解决tensorflow运行中找不到链接文件的问题,如果CUDA版本不同请自主更改系统路径
[root]$ cp /usr/local/cuda-10.0/lib64/libcublas.so.10.0 /usr/local/lib/libcublas.so.10.0 && sudo ldconfig
[root]$ cp /usr/local/cuda-10.0/lib64/libcufft.so.10.0 /usr/local/lib/libcufft.so.10.0 && sudo ldconfig
# Conda环境下解决:
[root]$ conda install cudatoolkit=10.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ # 解决思路:在conda环境中重新安装cudatoolkit和cudnn
[root]$ conda install cudnn==7.6.5 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ #
[username]$ vim ~/.bashrc #个人账户下CUDA相关环境变量的配置
#--------------------------------------------------#
CUDA_HOME=/usr/local/cuda-10.0
PATH=$PATH:/usr/local/cuda-10.0/bin
LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64
export CUDA_HOME PATH LD_LIBRARY_PATH
#--------------------------------------------------#
[username]$ source ~/.bashrc #配置完成后立即更新环境变量
  • 查看是否安装成功
1
2
3
[root]$ nvcc --version #查看编译器及CUDA版本
[root]$ nvidia-smi #查看GPU信息、驱动版本
[root]$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 #查看cuDNN版本

进阶设置

1. 安装温度监控器

1
2
3
[root]$ yum install lm_sensors #下载安装lm_sensors插件
[root]$ /usr/sbin/sensors-detect #运行sensors-detect配置程序
[notroot]$ sensors #查看已允许检测设备的当前状态

2. 手动控制 GPU 风扇转速

1
2
3
4
5
6
7
8
9
10
[root]$ cp /etc/X11/xorg.conf /etc/X11/xorg.conf.back #备份原有xorg配置文件
[root]$ vim xorg.conf
#-----------File Start--------------#
Section "Device"
Identifier "Videocard0"
Driver "nvidia"
Option "Coolbits" "4" #增加该行内容后重启,可在Applications-other-Nvidia X Server Settings-GPU-Thermal Settings
EndSection
#-----------File End--------------#
[root]$ nvidia-settings -a "[gpu:0]/GPUFanControlState=0" #恢复GPU转速随温度控制

3. 常用 GPU 相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ nvidia-smi -L #列出所有可使用的GPU设备
$ nvidia-smi -l #与nvidia-smi功能相同但带有自动刷新功能(不清空输出缓存区)
$ nvidia-smi -q #查看所有GPU设备信息
$ nvidia-smi –pm 0/1 #设置持久模式:0/DISABLED,1/ENABLED
$ nvidia-smi –e 0/1 #切换ECC支持:0/DISABLED, 1/ENABLED
$ nvidia-smi –p 0/1 #重置ECC错误计数:0/VOLATILE, 1/AGGREGATE
$ nvidia-smi –c #设置计算应用模式:0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
$ nvidia-smi –r #GPU复位
$ nvidia-smi –vm #设置GPU虚拟化模式
$ nvidia-smi –ac xxx,xxx #设置GPU运行的工作频率。e.g. nvidia-smi –ac2000,800
$ nvidia-smi –rac #0/1 将时钟频率重置为默认值
$ nvidia-smi –acp #切换-ac和-rac的权限要求,0/UNRESTRICTED, 1/RESTRICTED
$ nvidia-smi –pl #指定最大电源管理限制(瓦特)
$ nvidia-smi –am 0/1 #启用或禁用计数模式,0/DISABLED,1/ENABLED
$ nvidia-smi –caa #清除缓冲区中的所有已记录PID,0/DISABLED,1/ENABLED

4. 动态监控

1
2
3
#实际上,可以使用watch命令实现动态监控(不需要root权限)
$ watch -n 1 sensors # 1表示每隔一秒刷新sensors
$ watch -n 1 nvidia-smi #同理可动态监控GPU运行状态,以判断Tensorfow是否正确使用了GPU运行