NVIDIA A100 MIG vGPU 实用配置手册

2020-11-25 16:02:20

概述

NVIDIA A100 GPU 提供了全新的MIG多实例GPU模式,MIG功能可以将GPU安全地划分成为最多7个独立的GPU计算实例,每个计算实例拥有自己所属的计算资源,提供更好的QoS以及故障隔离能力。从vGPU 11.1版本开始支持基于MIG技术的vGPU虚拟机实例。本文将着重介绍: 使用NVIDIA A100 GPU 在MIG模式下vGPU实例的创建和管理,主要面向MIG vGPU的KVM虚拟化环境PoC测试和部署方法参考。


01

安装需要和准备工作

1. 主机配置:NVIDIA A100 GPU 的X86_64 服务器。

2. KVM HOST: 安装RedHat RHEL 8.2 及其以上版本。

3. vGPU 11.1 或者以上版本软件及许可证。


02

KVM Host 软硬件配置概要

1. 修改/boot/grub2/grubenv中的kernel启动参数

添加 intel_iommu=on iommu=pt

这是修改后的RHEL 8.2 kenel参数: (添加蓝色部分):

修改/boot/grub2/grubenv中的kernel启动参数

2. 安装vGPU 11.x 的rpm 格式Host 驱动

rpm -ivh NVIDIA-vGPU-rhel-8.2-450.89.x86_64.rpm

安装vGPU 11.x 的rpm 格式Host 驱动

3. Reboot 并确认A100 GPU 状态

修改kernel参数和安装vGPU Host 驱动以后,一定要reboot使其生效。

运行/usr/lib/nvidia/

检查nvidia-smi输出: 应该看到A100 GPU,默认状态MIG是被禁用状态的。

记录下A100 GPU的PCI BUSID,本例中为: 0000:81:00.0

Reboot 并确认A100 GPU 状态

4. 启用SRIOV

运行/usr/lib/nvidia/sriov-manage-e 加上前面记下的Bus-ID,例如

/usr/lib/nvidia/sriov-manage-e 0:81:0.0

启用SRIOV

Kernel log 可以看到:

启用SRIOV

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

启用SRIOV

看到dmesg kenrel log 有报错:

启用SRIOV

5.  启用MIG模式

创建基于MIG的vGPU实例需要将GPU切换到MIG模式, 此配置为持久配置,只需执行一次,重启服务器后仍然有效:

nvidia-smi -mig  1


03

MIG 设备初始化

在启用SR-IOV后,首先我们到/sys/class/mdev_bus/可以列出所有可用设备的BDF:

MIG 设备初始化

和之前vGPU不同的是,每一个VF设备目录下只能创建一个vGPU实例。这个在A100时分模式的SRIOV based vGPU同样适用。

这里我们可以检索每一个VF目录所能创建的vGPU类型和数量:

MIG 设备初始化

可以看到如果不创建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:

创建MIG GPU Instance

成功创建GI:

成功创建GI


04

创建 vGPU 设备

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

 创建 vGPU 设备

即可对于A100-2-10C,或者A100-4-20C 创建MIG vGPU实例。

这里选择第一个VF目录

/sys/class/mdev_bus/0000:81:00.4/mdev_supported_types

分别对应目录nvidia-475, nvidia-477。

创建 vGPU 设备

上面创建了一个2-10C vGPU设备,如果创建第二个,则需要到另一个VF目录,这里转到

/sys/class/mdev_bus/0000:81:00.5/mdev_supported_types。

可以看到仅有1个4-20C的vGPU类型可以创建。

创建 vGPU 设备

创建第二个vGPU MDEV设备

创建第二个vGPU MDEV设备

查看全部创建的vGPU设备

查看全部创建的vGPU设备


05

创建 VM,添加 MIG vGPU

1. 创建VM,并添加vGPU mdev设备

2. 此步与Non-MIG模式vGPU的配置相同, 这里请参见标准添加步骤。

以下是KVM虚拟机中添加的mdev设备的片段

创建 VM,添加 MIG vGPU

3. VM内安装vGPU客户机驱动程序和CUDA

虚拟机内安装驱动程序和CUDA框架。

创建 VM,添加 MIG vGPU

A100 MIG 模式的vGPU 需要vCS license授权  

4. 创建MIG Compute Instance

MIG vGPU需要创建计算实例才能运行CUDA计算:

也可以根据需要创建不同规格的CI实例,默认创建最大的MIG计算实例。

nvidia-smi mig-cci

创建MIG Compute Instance

5. CUDA计算测试

虚拟机内安装驱动程序和CUDA框架。

创建MIG Compute Instance

A100 MIG 模式的vGPU需要vCS license授权

6. 修改MIG Compute Instance 并为不同的应用指定不同的CI

· 列出当前分配的CI:

nvidia-smi -lci

创建MIG Compute Instance

· 删除不需要的CI:

nvidia-smi -dci -ci

删除不需要的CI

· 列出支持的CI类型

nvidia-smi -lcip

列出支持的CI类型

· 可以一次创建多个新的CI

nvidia-smi -cci

可以一次创建多个新的CI

MIG vGPU需要创建计算实例才能运行CUDA计算:

也可以根据需要创建不同规格的CI实例,默认创建最大的MIG计算实例。

 · 设定 CUDA_VISIBLE_DEVICES 环境变量,运行CUDA程序。

设定 CUDA_VISIBLE_DEVICES 环境变量,运行CUDA程序

设定 CUDA_VISIBLE_DEVICES 环境变量,运行CUDA程序

通过上面测试,可以观察到MIG模式下的vGPU VM内通过CI划分,在应用间可以分配不同的资源,提供良好的QoS和灵活性。

* 此文由NVIDIA vGPU高级架构师马林编写,特此感谢!

更多vGPU信息也可以访问vGPU.com.cn网站获取。

电话咨询
最新产品
官方商城
QQ客服