工作站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 $ cudnn-10.0-linux-x64-v7.6.5.32.tgz $ NVIDIA-Linux-x86_64-440.82.run
|
首先查看是否开启了默认的 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 [root]$ mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.back [root]$ dracut /boot/initramfs-$(uname -r).img $(uname -r) --force [root]$ init 6 [root]$ cd /../../ [root]$ sh ./NVIDIA-Linux-x86_64-440.82.run [root]$ nvidia-smi [root]$ sh ./cuda_10.0.130_410.48_linux.run [root]$ reboot
|
话不多说直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [root]$ cd /../../ [root]$ tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz [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*
[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
[root]$ conda install cudatoolkit=10.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ [root]$ conda install cudnn==7.6.5 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ [username]$ vim ~/.bashrc
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 [root]$ nvidia-smi [root]$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
|
进阶设置
1. 安装温度监控器
1 2 3
| [root]$ yum install lm_sensors [root]$ /usr/sbin/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 [root]$ vim xorg.conf
Section "Device" Identifier "Videocard0" Driver "nvidia" Option "Coolbits" "4" EndSection
[root]$ nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
|
3. 常用 GPU 相关命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ nvidia-smi -L $ nvidia-smi -l $ nvidia-smi -q $ nvidia-smi –pm 0/1 $ nvidia-smi –e 0/1 $ nvidia-smi –p 0/1 $ nvidia-smi –c $ nvidia-smi –r $ nvidia-smi –vm $ nvidia-smi –ac xxx,xxx $ nvidia-smi –rac $ nvidia-smi –acp $ nvidia-smi –pl $ nvidia-smi –am 0/1 $ nvidia-smi –caa
|
4. 动态监控
1 2 3
| $ watch -n 1 sensors $ watch -n 1 nvidia-smi
|