当前位置:   article > 正文

CentOS 7安装N卡驱动和CUDA和cuDNN_centos 安装nvidia cuda驱动

centos 安装nvidia cuda驱动

前言

系统一开始是CentOS 7.6,安装依赖时yum给的内核文件的版本号和uname -r的结果不一样,这时不能直接装依赖,装上后后面装驱动时会报错找不到内核头文件(最开始我直接装依赖了,以为高版本兼容低版本,然后装驱动时报错找不到957版的内核头文件),所以需先yum -y upgrade,升级完后需重启(重启后变成CentOS 7.9了),之后yum给的版本号和uname -r就一样了,就可以装依赖了。

升级前内核版本是957,yum装的话会装1160,版本不一样。

升级前

升级后

yum装了1160版本的依赖,然后装驱动时报错找不到957版的内核头文件

安装N卡驱动

查看机器上有哪些显卡

lspci | grep -i vga

lspci | grep -i nvidia

禁用nouveau

nouveau是N卡的开源驱动,linux会自动安装,不是NVIDIA官方的,安装官方驱动前需先禁止掉它。

执行lsmod | grep nouveau,如果有输出,说明未禁用;如果没有输出,说明已禁用。

未禁用nouveau

vim /usr/lib/modprobe.d/dist-blacklist.conf,注释掉blacklist nvidiafb这一行,然后添加下面两行

  1. blacklist nouveau
  2. options nouveau modeset=0

然后重建initramfs image,执行下面的命令

  1. mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
  2. dracut /boot/initramfs-$(uname -r).img $(uname -r)

重启

reboot

再执行lsmod | grep nouveau,如果没有输出,说明已禁用。

已禁用nouveau

安装依赖

yum install kernel-devel kernel-headers gcc dkms gcc-c++

安装驱动

官方下载页,根据你的显卡型号搜索。我的显卡是Tesla P4,咨询群里大佬,说应该用CUDA 11.2,所以这是我的型号的下载链接

下载完后执行

  1. chmod +x NVIDIA-Linux-x86_64-460.106.00.run
  2. ./NVIDIA-Linux-x86_64-460.106.00.run --kernel-source-path=/usr/src/kernels/3.10.0-1160.83.1.el7.x86_64 -no-x-check --no-opengl-files
  3. # --kernel-source-path的值是装完依赖后才有这个路径
  4. # 远程安装会检测x server,要让它不检测
  5. # 不安装opengl,因为安装opengl,CentOS界面UI不能正常启动

安装过程中

Would you like to register the kernel module sources with DKMS?选yes(服务器选yes,本地选no)

Install NVIDIA's 32-bit compatibility libraries?选yes

安装完成后执行nvidia-smi,如果有输出,说明驱动已安装。

从最开始升级内核重启后,到这一步,装驱动时可能提示要重启,记不清了。

安装CUDA

安装

官方下载页,我下载的11.2.2的run文件,前面已经说了我的型号应该用这个版本。

  1. chmod +x cuda_11.2.2_460.32.03_linux.run
  2. ./cuda_11.2.2_460.32.03_linux.run --no-opengl-libs

安装时,X表示选中,即安装,空白表示不选中,即不安装。驱动前面已经安装了,不用再安装。设成下面的样子,再Install。

  1. CUDA Installer
  2. - [ ] Driver
  3. [ ] 460.32.03
  4. + [X] CUDA Toolkit 11.2
  5. [X] CUDA Samples 11.2
  6. [X] CUDA Demo Suite 11.2
  7. [X] CUDA Documentation 11.2
  8. Options
  9. Install

安装完成后

  1. vim /etc/profile
  2. # 添加下面两行,路径要和上图中一样
  3. export PATH=/usr/local/cuda-11.2/bin:$PATH
  4. export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH
  5. # 保存并重新加载
  6. source /etc/profile

测试是否安装成功

方法一

终端输入cuda并连按两次tab,若有候选命令,则再执行nvcc --version,有输出版本信息就是安装成功。

自动出现候选命令

方法二

执行CUDA的示例程序进行测试

  1. cd /root/NVIDIA_CUDA-11.2_Samples/1_Utilities/deviceQuery
  2. make
  3. ./deviceQuery

安装cuDNN

安装

官方下载页,一开始直接页面内搜11.2搜到两个结果,是2021年的,然后在最顶部发现是11.x,就选它了。直接下载会提示让登录NVIDIA帐号,查到一个不用登帐号的方法,就是在下面第二张图箭头处点右键,复制链接,然后用迅雷下,但是我用迅雷下载过程中中断了,所以还是注册了帐号。

  1. tar -xvf cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz
  2. # 以下三行命令from https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
  3. # 参考链接中这一步复制的文件和官方文档中不太一样
  4. cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
  5. cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
  6. chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

测试是否安装成功

查到的资料是执行cat /usr/local/cuda-11.2/include/cudnn.h | grep CUDNN_MAJOR -A 2,

  1. # 参考链接中的两个例子
  2. [root@ctnr ~]# cat /usr/include/cudnn_v7.h |grep CUDNN_MAJOR -A 2
  3. #define CUDNN_MAJOR 7
  4. #define CUDNN_MINOR 5
  5. #define CUDNN_PATCHLEVEL 0
  6. --
  7. #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
  8. #include "driver_types.h"
  9. cat /usr/local/cuda-8.0/include/cudnn.h | grep CUDNN_MAJOR -A 2
  10. #define CUDNN_MAJOR 6
  11. #define CUDNN_MINOR 0
  12. #define CUDNN_PATCHLEVEL 21
  13. --
  14. #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
  15. #include "driver_types.h"

但我这没输出,查看cudnn.h,里面有一句

#include "cudnn_version.h"

再查看cudnn_version.h,里面有cuDNN版本信息,连着的三行分别代表主版本、次版本以及修定版本。

  1. #ifndef CUDNN_VERSION_H_
  2. #define CUDNN_VERSION_H_
  3. #define CUDNN_MAJOR 8
  4. #define CUDNN_MINOR 7
  5. #define CUDNN_PATCHLEVEL 0
  6. #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
  7. /* cannot use constexpr here since this is a C-only file */
  8. /* Below is the max SM version this cuDNN library is aware of and supports natively */
  9. #define CUDNN_MAX_SM_MAJOR_NUMBER 9
  10. #define CUDNN_MAX_SM_MINOR_NUMBER 0
  11. #define CUDNN_MAX_DEVICE_VERSION (CUDNN_MAX_SM_MAJOR_NUMBER * 100) + (CUDNN_MAX_SM_MINOR_NUMBER * 10)
  12. #endif /* CUDNN_VERSION_H */

最后

前言中说了yum装的内核版本要和系统一样,你可能会想到这个命令,它就是安装和你内核版本一样的依赖。

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

但我升级前用这个命令提示找不到957的包,然后去pkgs.org也搜不到957的包,就去群里问了大佬,他让升kernel版本,升成1160。顺便还吐槽了我们还在用3.10,而截止到2023年2月底linux官方还在维护的最低版本是4.14。

参考链接

【Linux】 查看机器是否有GPU_linux查看gpu_jn10010537的博客-CSDN博客

GPU, CUDA,cuDNN三者的关系总结_挽手等风起的博客-CSDN博客

openEuler安装GPU、CUDA、cudnn_openeuler安装显卡驱动_irrationality的博客-CSDN博客

Kubernetes管理GPU应用 - breezey - 博客园 (cnblogs.com)

Tensorflow-gpu版本安装 - breezey - 博客园 (cnblogs.com)

CentOS部署显卡驱动:CUDA,cuDNN_天然玩家的博客-CSDN博客

CentOS 7 安装 NVIDIA 显卡驱动和 CUDA Toolkit_cuda toolkit centos_XueShengke的博客-CSDN博客

centos安装cuda · 大专栏 (dazhuanlan.com)

centos7安装显卡驱动、cuda以及cudnn_yingchenwy的博客-CSDN博客

CUDA与cuDNN安装教程(超详细)_kylinmin的博客-CSDN博客

Installation Guide :: NVIDIA Deep Learning cuDNN Documentation

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号