NVIDIA A100 GPU 提供了全新的MIG多实例GPU模式,MIG功能可以将GPU安全地划分成为最多7个独立的GPU计算实例,每个计算实例拥有自己所属的计算资源,提供更好的QoS以及故障隔离能力。从vGPU 11.1版本开始支持基于MIG技术的vGPU虚拟机实例。本文将着重介绍: 使用NVIDIA A100 GPU 在MIG模式下vGPU实例的创建和管理,主要面向MIG vGPU的KVM虚拟化环境PoC测试和部署方法参考。
1. 主机配置:NVIDIA A100 GPU 的X86_64 服务器。
2. KVM HOST: 安装RedHat RHEL 8.2 及其以上版本。
3. vGPU 11.1 或者以上版本软件及许可证。
1. 修改/boot/grub2/grubenv中的kernel启动参数
添加 intel_iommu=on iommu=pt
这是修改后的RHEL 8.2 kenel参数: (添加蓝色部分):

2. 安装vGPU 11.x 的rpm 格式Host 驱动
rpm -ivh NVIDIA-vGPU-rhel-8.2-450.89.x86_64.rpm

3. Reboot 并确认A100 GPU 状态
修改kernel参数和安装vGPU Host 驱动以后,一定要reboot使其生效。
运行/usr/lib/nvidia/
检查nvidia-smi输出: 应该看到A100 GPU,默认状态MIG是被禁用状态的。
记录下A100 GPU的PCI BUSID,本例中为: 0000:81:00.0

4. 启用SRIOV
运行/usr/lib/nvidia/sriov-manage-e 加上前面记下的Bus-ID,例如
/usr/lib/nvidia/sriov-manage-e 0:81:0.0

Kernel log 可以看到:

如果执行SRIOV使能时发生如下错误,需要检查kernel参数中的iommu选项是否生效。以及服务器BIOS中的是否开启相关选项。

看到dmesg kenrel log 有报错:

5. 启用MIG模式
创建基于MIG的vGPU实例需要将GPU切换到MIG模式, 此配置为持久配置,只需执行一次,重启服务器后仍然有效:
nvidia-smi -mig 1
在启用SR-IOV后,首先我们到/sys/class/mdev_bus/可以列出所有可用设备的BDF:

和之前vGPU不同的是,每一个VF设备目录下只能创建一个vGPU实例。这个在A100时分模式的SRIOV based vGPU同样适用。
这里我们可以检索每一个VF目录所能创建的vGPU类型和数量:

可以看到如果不创建MIG GI, 则所以的MIG类型的vGPU 可创建数量均为0,因此我们需要先为vGPU创建相应的MIG GPU Instance.
有关MIG的管理,请参见:
https://docs.nvidia.com/datacenter/tesla/mig-user-guide/
https://docs.nvidia.com/datacenter/tesla/pdf/NVIDIA_MIG_User_Guide.pdf
创建MIG GPU Instance
这里我们创建2个测试GI,分别为MIG 4g.20gb和MIG 2g.10gb
列出MIG GI Profile:

成功创建GI:

此时查看vGPU Profile各类型中可创建的数量:

即可对于A100-2-10C,或者A100-4-20C 创建MIG vGPU实例。
这里选择第一个VF目录
/sys/class/mdev_bus/0000:81:00.4/mdev_supported_types
分别对应目录nvidia-475, nvidia-477。

上面创建了一个2-10C vGPU设备,如果创建第二个,则需要到另一个VF目录,这里转到
/sys/class/mdev_bus/0000:81:00.5/mdev_supported_types。
可以看到仅有1个4-20C的vGPU类型可以创建。

创建第二个vGPU MDEV设备

查看全部创建的vGPU设备

1. 创建VM,并添加vGPU mdev设备
2. 此步与Non-MIG模式vGPU的配置相同, 这里请参见标准添加步骤。
以下是KVM虚拟机中添加的mdev设备的片段

3. VM内安装vGPU客户机驱动程序和CUDA
虚拟机内安装驱动程序和CUDA框架。

A100 MIG 模式的vGPU 需要vCS license授权
4. 创建MIG Compute Instance
MIG vGPU需要创建计算实例才能运行CUDA计算:
也可以根据需要创建不同规格的CI实例,默认创建最大的MIG计算实例。
nvidia-smi mig-cci

5. CUDA计算测试
虚拟机内安装驱动程序和CUDA框架。

A100 MIG 模式的vGPU需要vCS license授权
6. 修改MIG Compute Instance 并为不同的应用指定不同的CI
· 列出当前分配的CI:
nvidia-smi -lci

· 删除不需要的CI:
nvidia-smi -dci -ci

· 列出支持的CI类型
nvidia-smi -lcip

· 可以一次创建多个新的CI
nvidia-smi -cci

MIG vGPU需要创建计算实例才能运行CUDA计算:
也可以根据需要创建不同规格的CI实例,默认创建最大的MIG计算实例。
· 设定 CUDA_VISIBLE_DEVICES 环境变量,运行CUDA程序。


通过上面测试,可以观察到MIG模式下的vGPU VM内通过CI划分,在应用间可以分配不同的资源,提供良好的QoS和灵活性。
* 此文由NVIDIA vGPU高级架构师马林编写,特此感谢!
更多vGPU信息也可以访问vGPU.com.cn网站获取。