CentOS 7 は N カード ドライバーと CUDA および cuDNN をインストールします

序文

当初のシステムは CentOS 7.6 でした。依存関係をインストールするときに yum で指定されたカーネル ファイルのバージョン番号が、uname -r の結果と異なります。このとき、依存関係を直接インストールすることはできません。ドライバーのインストール後、エラーが発生しますカーネル ヘッダー ファイルが見つからないことが報告されます (最初は、上位バージョンが下位バージョンと互換性があると考えて依存関係を直接インストールしました。その後、カーネル ヘッダー ファイルが見つからないドライバーをインストールするとエラーが報告されました)バージョン 957 が見つかりませんでした)。そのため、最初に yum -y アップグレードし、アップグレード後に再起動する必要があります (再起動すると CentOS 7.9 になります)。その場合、yum によって与えられるバージョン番号は uname -r と同じです。依存関係をインストールできます。

アップグレード前のカーネル バージョンは 957 です。yum をインストールすると 1160 がインストールされます。バージョンは異なります。

アップグレード前

アップグレード後

Yum は依存関係の 1160 バージョンをインストールしてからドライバーをインストールし、カーネル ヘッダー ファイルの 957 バージョンが見つからないというエラーを報告しました。

Nカードドライバーをインストールする

マシンに搭載されているグラフィックス カードを確認する

| grep -i vga

| grep -i nvidia

ヌーボーを無効にする

nouveau は N カード用のオープンソース ドライバーであり、Linux によって自動的にインストールされます。これは公式の NVIDIA ドライバーではありません。公式ドライバーをインストールする前に無効にする必要があります。

lsmod | grep nouveau を実行し、出力がある場合は無効になっていないことを意味し、出力がない場合は無効であることを意味します。

Nouveau は無効ではありません

vim /usr/lib/modprobe.d/dist-blacklist.conf の blacklist nvidiafb 行をコメントアウトし、次の 2 行を追加します。

blacklist nouveau
options nouveau modeset=0

次に、initramfs イメージを再構築し、次のコマンドを実行します。

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

リブート

reboot

次に、lsmod | grep nouveau を実行します。出力がない場合は、無効になっていることを意味します。

ヌーボー無効化

依存関係をインストールする

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

ドライバーをインストールする

公式ダウンロード ページ、グラフィックス カードのモデルに応じて検索してください。私のグラフィックス カードは Tesla P4 です。コンサルティング グループの上司は CUDA 11.2 を使用する必要があると言ったので、これが私のモデルのダウンロード リンクです。

ダウンロード後に実行

chmod +x NVIDIA-Linux-x86_64-460.106.00.run
./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
# --kernel-source-path的值是装完依赖后才有这个路径
# 远程安装会检测x server,要让它不检测
# 不安装opengl,因为安装opengl,CentOS界面UI不能正常启动

インストール中

カーネル モジュール ソースを DKMS に登録しますか? [はい] を選択します (サーバーは [はい] を選択し、ローカルは [いいえ] を選択します)

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

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

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

安装CUDA

安装

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

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

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

CUDA Installer
- [ ] Driver
     [ ] 460.32.03
+ [X] CUDA Toolkit 11.2
  [X] CUDA Samples 11.2
  [X] CUDA Demo Suite 11.2
  [X] CUDA Documentation 11.2
  Options
  Install

安装完成后

vim /etc/profile
# 添加下面两行,路径要和上图中一样
export PATH=/usr/local/cuda-11.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH

# 保存并重新加载
source /etc/profile

测试是否安装成功

方法一

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

自动出现候选命令

方法二

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

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

安装cuDNN

安装

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

tar -xvf cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz
# 以下三行命令from https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
# 参考链接中这一步复制的文件和官方文档中不太一样
cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
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,

# 参考链接中的两个例子

[root@ctnr ~]# cat /usr/include/cudnn_v7.h |grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"



cat /usr/local/cuda-8.0/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR      6
#define CUDNN_MINOR      0
#define CUDNN_PATCHLEVEL 21
--
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

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

#include "cudnn_version.h"

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

#ifndef CUDNN_VERSION_H_
#define CUDNN_VERSION_H_

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 7
#define CUDNN_PATCHLEVEL 0

#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

/* cannot use constexpr here since this is a C-only file */
/* Below is the max SM version this cuDNN library is aware of and supports natively */

#define CUDNN_MAX_SM_MAJOR_NUMBER 9
#define CUDNN_MAX_SM_MINOR_NUMBER 0
#define CUDNN_MAX_DEVICE_VERSION (CUDNN_MAX_SM_MAJOR_NUMBER * 100) + (CUDNN_MAX_SM_MINOR_NUMBER * 10)

#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

おすすめ

転載: blog.csdn.net/fj_changing/article/details/129282112