searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

GPU驱动及CUDA安装流程介绍

2023-10-13 07:12:07
142
0

1、安装前准备工作

    1.1、确认GPU型号和操作系统版本

    1.2、准备gpu驱动和CUDA软件包

          在nvidia官网进行驱动包下载

          GPU驱动下载链接

           linux系统均选择 Linux 64-bit

           CUDA Toolkit选择最新版本,注意该版本建议大于等于cuda软件的版本。

    

 

        CUDA下载链接

        选择合适的操作系统版本进行下载,建议选择runfile(local)。

      

1.3、检查服务器GPU识别情况

安装GPU驱动之前需要在操作系统下查看GPU卡是否能够完全识别,如不能识别需要进行重新插拔、对调测试等步骤进行硬件排查。

#确保可以查看到所有的GPU

# lspci | grep -i nvidia

  

1.4、老版本软件包卸载

若安装过其他版本的GPU驱动或CUDA,请先卸载。

PU驱动卸载方法:

# /usr/bin/nvidia-uninstall -s

备注:cuda软件可以不卸载,直接安装新版本软件包,后期通过修改环境变量配置来调用不同版本的cuda软件。

CUDA卸载方法:

# /usr/local/cuda-X.Y/bin/cuda-uninstaller

      或老版本卸载方法

# /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl

1.5、安装依赖包

      配置yum源时,建议使用系统安装镜像配置本地源进行软件包安装,网络yum源会自动安装较新版本的软件包,因gpu驱动对系统内核与软件版本要求较高,网络yum源安装软件包机kernel相关包后,可能导致GPU驱动安装报错。

CentOS 7:

#软件包安装

# yum install gcc

# yum install gcc-c++

# yum install tar

# yum install make

# yum install bzip2(用于解压nv persistence脚本包)

# yum install pkgconfig

# yum install libglvnd-devel libglvnd(选装,测试发现centos7.9版本不安装该包会有告警提示)

# yum install elfutils-libelf-devel

 

SUSE:

#软件包安装

zypper in gcc

zypper in gcc-c++

zypper in tar

zypper in make

 

Ubuntu:

#软件包安装

# apt-get install gcc

# apt-get install g++

# apt-get install tar

# apt-get install make

# apt-get install libglvnd-dev(部分OS版本提示无该软件包,可选装)

# apt-get install pkg-config

# apt-get install build-essential

以下安装包为ubuntu 64bit 兼容运行32bit的软件包(一般16.04之前的版本安装ia32-libs,16.04及之后的版本安装lib32ncurses5 lib32z1)用于解决以下提示:

# apt-get install ia32-libs

# apt-get install lib32z1 lib32ncurses-dev(lib32z1,最后为数字1;安装lib32ncurses-dev主要是为了安装lib32ncurses#,#为数字,os版本不同软件包名称会不同)

1.6、安装kernel-devel和kernel-headers软件包

CentOS 7

# yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)   ##注 kernel-devel  && kernel-headers && kernel版本 必须一致,否则会出现驱动不可用

 

Ubuntu:

#Ubuntu一般无需安装,也可以从阿里镜像站或网易镜像站下载安装,需注意内核版本。

# apt install linux-image-$(uname -r)

# apt install linux-modules-$(uname -r)

# apt install linux-headers-$(uname -r)

 

SUSE:

zypper install kernel-source-$(uname -r) #只安装这一个即可

zypper install kernel-default-devel-$(uname -r)

1.7、修改系统运行级别为文本模式

       GPU驱动安装必须在字符界面下进行,可以根据客户需要,临时或永久切换至字符界面后再开始进行GPU驱动安装。

CentOS 7

# init 3 (临时切换到字符界面)

# systemctl set-default multi-user.target (永久切换至字符界面启动)

 

Ubuntu:

init 3 (临时切换到字符界面)

systemctl set-default multi-user.target(永久切换至字符界面启动)

 

SUSE:

# init 3 (临时切换到字符界面)

# 永久切换至字符界面启动

vim /etc/inittab

修改

id:5:initdefault:

为                

id:3:initdefault:               

1.8、禁用系统自带的nouveau模块

# 检查nouveau模块是否加载,已加载则先禁用

# 这里先使用rmmod命令临时禁用nouveau模块,后续安装GPU驱动时再使用-Z或--disable-nouveau 参数永久禁用该模块

# lsmod | grep nouvea

nouveau              1949696  0

mxm_wmi                16384  1 nouveau

video                  49152  1 nouveau

ttm                   106496  2 drm_vram_helper,nouveau

drm_kms_helper        184320  4 ast,nouveau

i2c_algo_bit           16384  3 igb,ast,nouveau

drm                   491520  6 drm_kms_helper,drm_vram_helper,ast,ttm,nouveau

wmi                    32768  2 mxm_wmi,nouveau

# 系统下使用rmmod临时禁用nouveau模块

# rmmod nouveau

# 确认nouveau模块已禁用(无输出表示已禁用)

# lsmod | grep nouvea

 

备注:

若出现以下报错

# rmmod nouveau

rmmod: ERROR: Module nouveau is in use

请先修改系统运行级别为文本模式

2、GPU驱动安装

  2.1、GPU驱动安装

# GPU驱动安装前可使用参数--check检查安装包的完整性,如下表示安装包完整。

# ./NVIDIA-Linux-x86_64-460.32.03.run --check

check sums and md5 sums are ok

 

# 如果客户linux系统要使用图形界面,安装驱动时务必加上参数

--no-opengl-files

# 若系统下nouveau模块已手动禁用,安装驱动时去掉-Z或--disable-nouveau参数

# 若驱动安装时忘记使用-Z或--disable-nouveau参数禁用nouveau模块,可以参考“4.1 手动禁用nouveau模块”完成禁用操作

 

# chmod +x NVIDIA-xxx.run

# ./NVIDIA-Linux-x86_64-460.32.03.run -a -s -Z --no-opengl-files

# ./NVIDIA-Linux-x86_64-460.32.03.run --accept-license --ui=none --no-questions --disable-nouveau  --no-opengl-files

 

因驱动安装命令使用了-Z和--disable-nouveau参数,以上命令完成GPU驱动安装后,会自动生成禁用nouveau模块的配置文件,可以使用以下命令查看生成的文件:

 

# find / -name 'nvidia*nouveau*'

/usr/lib/modprobe.d/nvidia-installer-disable-nouveau.conf

/etc/modprobe.d/nvidia-installer-disable-nouveau.conf

2.2、GPU驱动内存常驻模式配置

两种方法配置GPU驱动内存常驻模式,选择其中一种即可,已经配置过GPU驱动内存常驻模式的系统,无需重复配置。

方法一:将 nvidia-smi -pm 1 命令添加进开机自启动配置文件并赋予文件可执行权限,参考“4.2手动配置GPU驱动内存常驻模式开机自启动”

方法二:借助GPU驱动自带工具创建系统下的nvidia-persistenced服务。

以下为利用GPU驱动自带工具配置GPU驱动内存常驻模式开机自启动,该脚本需要系统下预安装sed、useradd、userdel、id命令,否则会执行失败。

# cd /usr/share/doc/NVIDIA_GLX-1.0/samples/

# ls

nvidia-persistenced-init.tar.bz2  systemd

# tar xvf nvidia-persistenced-init.tar.bz2

# ls

nvidia-persistenced-init  nvidia-persistenced-init.tar.bz2  systemd

# cd nvidia-persistenced-init/

# ./install.sh

 

Checking for common requirements...

  sed found in PATH?  Yes

  useradd found in PATH?  Yes

  userdel found in PATH?  Yes

  id found in PATH?  Yes

Common installation/uninstallation supported

 

Creating sample System V script... done.

Creating sample systemd service file... done.

Creating sample Upstart service file... done.

 

Checking for systemd requirements...

  /usr/lib/systemd/system directory exists?  Yes

  systemctl found in PATH?  Yes

systemd installation/uninstallation supported

 

Installation parameters:

  User  : nvidia-persistenced

  Group : nvidia-persistenced

  systemd service installation path : /usr/lib/systemd/system

 

Adding user 'nvidia-persistenced' to group 'nvidia-persistenced'... done.

Installing sample systemd service nvidia-persistenced.service... done.

Enabling nvidia-persistenced.service... done.

Starting nvidia-persistenced.service... done.

 

systemd service successfully installed.

#以上表示脚本配置成功

 

可以通过以下命令检查服务状态是否正常,并执行nvidia-smi 确认Persistence-M状态为on。

~# systemctl status nvidia-persistenced.service

2.3、nvidia-fabricmanager安装

 对于nvlink sxm3/4系列GPU,如HGX-2和HGX-2-NEXT GPU模组,安装完GPU驱动后,需要单独安装与GPU驱动版本一致的nvidia-fabricmanager软件包,并开启nvidia-fabricmanager服务。

PCIE GPU无需安装该服务。

示例:

安装V450.80.02版本驱动对应的fabricmanager软件包

rpm -ivh nvidia-fabricmanager-450-450.80.02-1.x86_64.rpm

rpm -ivh nvidia-fabricmanager-devel-450-450.80.02-1.x86_64.rpm

systemctl start nvidia-fabricmanager

systemctl enable nvidia-fabricmanager

systemctl status nvidia-fabricmanager

2.4、重启系统使内核生效

因本文前面禁用了nouveau模块,需执行以下命令使OS内核生效。

若之前已成功禁用过nouveau模块,无需重复以下步骤。

centos-7

执行如下命令使内核生效(需要重启服务器后才可真正禁用nouveau)

# dracut -f

 

ubuntu

# update-initramfs -u

重启操作系统

2.5、检查nouveau模块及相关服务状态

重启系统后

  1. 检查GPU驱动内存常驻模式是否生效(若使用方法二配置GPU驱动内存常驻模式,检查nvidia-persistenced服务是否启动)
  2. 检查nouveau模块是否禁用
  3. 检查nvidia-fabricmanager服务是否启动

     

3、CUDA安装

3.1、安装CUDA

安装CUDA时需注意,如果之前安装过GPU驱动,安装CUDA时就不要再选择GPU驱动安装了。

安装cuda前,可以使用参数--check检查软件包完整性,如下表示软件包完整。

# ./cuda_11.1.1_455.32.00_linux.run --check

 MD5 checksums are OK. All good.

 

#执行安装命令后,后台会先进行安装包解压,稍等1-3分钟屏幕才会有输出

# chmod +x cuda-xxx.run

# ./cuda-xxx.run --no-opengl-libs

 

新版本CUDA安装界面:

注意Driver选项,表示是否安装GPU驱动,如果之前已经安装了GPU驱动,这里不要再勾选。

 

安装完毕:

 

旧版本CUDA安装:

[root@ localhost ~]# ./cuda-xxx.run --no-opengl-libs

   … … … …

   … … … …           ####约定条款,此处忽略打印

-----------------

Do you accept the previously read EULA?

accept/decline/quit:            accept

 

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?

(y)es/(n)o/(q)uit: n   ###若已经安装过驱动,则此处不需再安装

 

Install the CUDA 9.2 Toolkit?

(y)es/(n)o/(q)uit: y

Enter Toolkit Location

 [ default is /usr/local/cuda-9.1 ]:   ####回车,默认

Do you want to install a symbolic link at /usr/local/cuda?

(y)es/(n)o/(q)uit: y

 

Install the CUDA 9.2 Samples?

(y)es/(n)o/(q)uit: y   ##安装samples

 

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.2/bin

To uninstall the NVIDIA Driver, run nvidia-uninstall

 

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.2/doc/pdf for detailed information on setting up CUDA.

 

Logfile is /tmp/cuda_install_62403.log

####安装完成,如果安装失败,查看上述提示日志信息

3.2、配置环境变量

如果系统下安装了多个不同的cuda版本,可以通过修改环境变量调用不同版本的cuda软件。

添加到/etc/profile文件中,对所有用户生效

# vim /etc/profile

export PATH=/usr/local/cuda/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

# source /etc/profile

测试cuda安装是否正确,环境变量是否识别成功

# nvcc -V

4、其他操作

4.1、手动禁用nouveau模块

检查nouveau模块是否加载,已加载则先禁用

# lsmod | grep nouveau

 

CentOS 7:

#没有blacklist-nouveau.conf文件则创建

# vim /usr/lib/modprobe.d/blacklist-nouveau.conf            blacklist nouveau

options nouveau modeset=0

 

执行如下命令使内核生效(需要重启服务器后才可真正禁用nouveau)

# dracut -f

 

Ubuntu:

vi /etc/modprobe.d/blacklist.conf

在文本最后添加以下内容:

blacklist nouveau

options nouveau modeset=0

保存退出,执行以下命令生效:

# update-initramfs -u

重启操作系统

4.2、手动配置GPU驱动内存常驻模式开机自启动

  • CentOS及Ubuntu设置方法

CentOS及Ubuntu 18以下版本参考如下设置:

GPU驱动模式设置为常驻内存:

# nvidia-smi -pm 1

设置开机自启动

vim /etc/rc.d/rc.local

在文件中添加一行

nvidia-smi -pm 1

赋予/etc/rc.d/rc.local文件可执行权限

# chmod +x /etc/rc.d/rc.local

 

#若无/etc/rc.d/rc.local,也可修改

vim /etc/rc.local

chmod +x /etc/rc.local

================================================

  • ubuntu 18 配置方法如下:

#备注:附件已提供了编写好的rc-local.service文件,可以直接拷贝至客户OS下使用。

 

创建文件: vi /etc/systemd/system/rc-local.service

[Unit]

Description=/etc/rc.local Compatibility

ConditionPathExists=/etc/rc.local

 

[Service]

Type=forking

ExecStart=/etc/rc.local start

TimeoutSec=0

StandardOutput=tty

RemainAfterExit=yes

SysVStartPriority=99

 

[Install]

WantedBy=multi-user.target

 

 

创建文件: vi /etc/rc.local

#!/bin/sh -e

nvidia-smi -pm 1

exit 0

 

赋予可执行权限

chmod +x /etc/rc.local

 

启动服务并设置服务开机自启动

 

systemctl enable rc-local.service

systemctl start rc-local.service

systemctl status rc-local.service

 

重启系统后验证

=================================================

  • SUSE OS下设置方法

vim /etc/init.d/after.local  #没有就新建

nvidia-smi -pm 1

chmod +x /etc/init.d/after.local

 

以上即为GPU驱动及CUDA安装流程的相关内容。

0条评论
0 / 1000