一 概述

一般的GPU使用是PCIe与主机通信,但这样的GPU的通信速率会被PCIe通道限制,PCIe4.0 X16的理论速率是32GB/s,为了解决这个问题,NVIDIA提出了NVswitch方案,推出了SXM机型的GPU,A100,H100这样的GPU都分别设有PCIe和SXM版本,到SXM4版本,GPU之间的通信速率可以达到600GB/s,完全脱离于CPU进行卡间通信,极大的提高了GPU的利用率。

在安装完常规的驱动之后,还需要安装nvidia-fabricmanager服务才能启用NVswitch通信

二 清理驱动

如果需要安装更高版本的fabricmanager服务,通常需要配套的更高版本的驱动支持,注意:驱动版本和服务器内核版本高度相关!由于深度学习环境复杂,服务器可能经常动不动就有很多个内核,建议在重启和重装驱动前检查和记录当前内核版本

卸载驱动:nvidia-uninstall

yum remove nvidia-*

检查内核版本:

2.1 查看当前启动内核

root@BJ-CentOS7 ~ # uname -sr
Linux 3.10.0-957.21.3.el7.x86_64

2.2 查看当前默认启动内核

root@BJ-CentOS7 ~ # grub2-editenv list
saved_entry=CentOS Linux (3.10.0-693.el7.centos.toa.x86_64) 7 (Core)

2.3 确认系统内当前已安装内核版本

root@BJ-CentOS7 ~ # cat /boot/grub2/grub.cfg | grep -v rescue | grep ^menuentry
menuentry 'CentOS Linux, with Linux 3.10.0-957.21.3.el7.x86_64' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-957.21.3.el7.x86_64-advanced-244b1cf5-bcde-47c5-9a90-055dcee38030' {
menuentry 'CentOS Linux, with Linux 3.10.0-693.el7.centos.toa.x86_64' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.el7.centos.toa.x86_64-advanced-244b1cf5-bcde-47c5-9a90-055dcee38030' {
menuentry 'CentOS Linux, with Linux 3.10.0-123.el7.x86_64' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-244b1cf5-bcde-47c5-9a90-055dcee38030' {
root@BJ-CentOS7 ~ # rpm -qa kernel
kernel-3.10.0-123.el7.x86_64
kernel-3.10.0-693.el7.centos.toa.x86_64
kernel-3.10.0-957.21.3.el7.x86_64

2.4 设置默认启动内核

修改默认启动内核后,重启机器即可以进入修改后的内核加载系统

root@BJ-CentOS7 ~ # grub2-set-default 'CentOS Linux (3.10.0-693.el7.centos.toa.x86_64) 7 (Core)'
root@BJ-CentOS7 ~ # grub2-editenv list
saved_entry=CentOS Linux (3.10.0-693.el7.centos.toa.x86_64) 7 (Core)
root@BJ-CentOS7 ~ # grub2-set-default 'CentOS Linux (3.10.0-957.21.3.el7.x86_64^C7 (Core)'
root@BJ-CentOS7 ~ # grub2-editenv list
saved_entry=CentOS Linux (3.10.0-957.21.3.el7.x86_64^

三 安装驱动

在安装驱动前,请先检查gcc,g++,make是否安装

gcc -v
g++ -v
make -v

下载驱动程序文件:

wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run

安装:sh cuda_12.0.0_525.60.13_linux.run

四 安装 nvidia-fabricmanager 服务

安装完毕后,安装nvidia-fabricmanager

version=525.60.13
yum -y install yum-utils
yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
yum install -y nvidia-fabric-manager-${version}-1

4.1 启动 nvidia-fabricmanager 服务

依次执行以下命令,启动服务。

systemctl daemon-reload #刷新服务配置文件
systemctl enable nvidia-fabricmanager
systemctl start nvidia-fabricmanager.service

4.2 查看 nvidia-fabricmanager 服务状态

执行以下命令,查看服务状态。

systemctl status nvidia-fabricmanager

安装nvidia container runtime(可选)

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
sudo yum install -y nvidia-container-toolkit

image-20230825140141995

image-20230825140231180

本文系作者 @ admin 原创发布在 文档中心 | AheadAI ,未经许可,禁止转载。