博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
nvidia 高级特性MIG详细介绍(三)
本篇博文我们使用命令创建几个具体的GI。可以使用NVIDIA Management Library (NVML)APIs或其命令行接口nvidia-smi以编程方式管理MIG。请注意,为简洁起见,下面示例中的一些nvidia-smi输出可能会被裁剪,以展示感兴趣的相关部分。
有关MIG命令的更多信息,请参阅nvidia-smi手册页或nvidia-smi MIG --help
。有关MIG管理API的信息,请参阅CUDA工具包中的NVML头文件(NVML.h) ,其位于/usr/local/cuda/include/nvml.h下,可以使用自动化工具来配置MIG,请参阅NVIDIA MIG分区编辑器(或mig-parted)工具。
一、开启MIG特性
默认情况下,GPU未开启MIG模式。例如,运行nvidia-smi,显示未启用MIG模式:
$ nvidia-smi -i 0
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 A100-SXM4-40GB Off | 00000000:36:00.0 Off | 0 |
| N/A 29C P0 62W / 400W | 0MiB / 40537MiB | 6% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
可以使用以下命令在每个GPU上启用MIG模式:nvidia-smi -i <GPU IDs> -mig 1
。可以使用GPU索引、PCI总线ID或UUID来选择GPU,多个GPU之间使用逗号分隔。如果没有指定GPU ID,那么MIG模式将应用于系统上的所有GPU。
当在GPU上启用MIG时,根据GPU产品的不同,驱动程序将尝试重置GPU,以便MIG模式可以生效。
$ sudo nvidia-smi -i 0 -mig 1
Enabled MIG Mode for GPU 00000000:36:00.0
All done.
$ nvidia-smi -i 0 --query-gpu=pci.bus_id,mig.mode.current --format=csv
pci.bus_id, mig.mode.current
00000000:36:00.0, Enabled
二、查询当前MIG配置文件
NVIDIA驱动程序提供了许多配置文件,用户可以在A100中配置MIG功能时选择加入。profile文件是用户可以创建的GPU实例的大小和功能。驱动程序还提供了可以创建的实例的类型和数量信息。
$ nvidia-smi mig -lgip
+-----------------------------------------------------------------------------+
| GPU instance profiles: |
| GPU Name ID Instances Memory P2P SM DEC ENC |
| Free/Total GiB CE JPEG OFA |
|=============================================================================|
| 0 MIG 1g.5gb 19 7/7 4.75 No 14 0 0 |
| 1 0 0 |
+-----------------------------------------------------------------------------+
| 0 MIG 1g.5gb+me 20 1/1 4.75 No 14 1 0 |
| 1 1 1 |
+-----------------------------------------------------------------------------+
| 0 MIG 1g.10gb 15 4/4 9.62 No 14 1 0 |
| 1 0 0 |
+-----------------------------------------------------------------------------+
| 0 MIG 2g.10gb 14 3/3 9.62 No 28 1 0 |
| 2 0 0 |
+-----------------------------------------------------------------------------+
| 0 MIG 3g.20gb 9 2/2 19.50 No 42 2 0 |
| 3 0 0 |
+-----------------------------------------------------------------------------+
| 0 MIG 4g.20gb 5 1/1 19.50 No 56 2 0 |
| 4 0 0 |
+-----------------------------------------------------------------------------+
| 0 MIG 7g.40gb 0 1/1 39.25 No 98 5 0 |
| 7 1 1 |
+-----------------------------------------------------------------------------+
使用下面的命令列出可用的布局。布局的语法是{<index>}:<GPU Slice Count>
,并显示实例在GPU上的位置。所示的位置索引表示了profile文件如何映射到GPU上。
$ nvidia-smi mig -lgipp
GPU 0 Profile ID 19 Placements: {0,1,2,3,4,5,6}:1
GPU 0 Profile ID 20 Placements: {0,1,2,3,4,5,6}:1
GPU 0 Profile ID 15 Placements: {0,2,4,6}:2
GPU 0 Profile ID 14 Placements: {0,2,4}:2
GPU 0 Profile ID 9 Placements: {0,4}:4
GPU 0 Profile ID 5 Placement : {0}:4
GPU 0 Profile ID 0 Placement : {0}:8
说明用户可以创建两个3g.20gb类型的示例,对应的profile ID是9,或者7个1g.5gb示例,对应的profile ID是19。
三、创建GI和CI
在开始使用MIG之前,用户需要使用-cgi
选项创建GPU实例。有三个选项可以用来指定要创建实例的profile文件:
- Profile ID(例如,9、14、5);
- profile文件的缩写(例如,3g.20gb);
- 示例的完整profile文件名称(例如,MIG 3g.20gb);
一旦创建了GPU实例,就需要创建相应的计算实例(CI)。通过使用-C
参数,nvidia-smi可以创建这些实例。
下面的例子展示了用户如何创建GPU实例(以及相应的计算实例)。在这个例子中,用户可以创建两个GPU实例(类型为3g.20gb),每个GPU实例拥有可用计算和内存容量的一半。在这个例子中,我们有意使用profile ID和短名的profile名称来展示如何使用这两个选项:
$ sudo nvidia-smi mig -cgi 9,3g.20gb -C
Successfully created GPU instance ID 2 on GPU 0 using profile MIG 3g.20gb (ID 9)
Successfully created compute instance ID 0 on GPU 0 GPU instance ID 2 using profile MIG 3g.20gb (ID 2)
Successfully created GPU instance ID 1 on GPU 0 using profile MIG 3g.20gb (ID 9)
Successfully created compute instance ID 0 on GPU 0 GPU instance ID 1 using profile MIG 3g.20gb (ID 2)
现在列出可用的GPU实例:
$ sudo nvidia-smi mig -lgi
+----------------------------------------------------+
| GPU instances: |
| GPU Name Profile Instance Placement |
| ID ID Start:Size |
|====================================================|
| 0 MIG 3g.20gb 9 1 4:4 |
+----------------------------------------------------+
| 0 MIG 3g.20gb 9 2 0:4 |
+----------------------------------------------------+
现在,验证GIs和相应的CIs是否已经创建:
$ nvidia-smi
+-----------------------------------------------------------------------------+
| MIG devices: |
+------------------+----------------------+-----------+-----------------------+
| GPU GI CI MIG | Memory-Usage | Vol| Shared |
| ID ID Dev | | SM Unc| CE ENC DEC OFA JPG|
| | | ECC| |
|==================+======================+===========+=======================|
| 0 1 0 0 | 11MiB / 20224MiB | 42 0 | 3 0 2 0 0 |
+------------------+----------------------+-----------+-----------------------+
| 0 2 0 1 | 11MiB / 20096MiB | 42 0 | 3 0 2 0 0 |
+------------------+----------------------+-----------+-----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
四、销毁GI和CI
一旦GPU处于MIG模式,就可以动态配置GIs和CIs。下面的例子展示了如何销毁前面例子中创建的CIs和GIs。
4.1 销毁全部CIs和GIs
$ sudo nvidia-smi mig -dci && sudo nvidia-smi mig -dgi
Successfully destroyed compute instance ID 0 from GPU 0 GPU instance ID 1
Successfully destroyed compute instance ID 1 from GPU 0 GPU instance ID 1
Successfully destroyed compute instance ID 2 from GPU 0 GPU instance ID 1
Successfully destroyed GPU instance ID 1 from GPU 0
Successfully destroyed GPU instance ID 2 from GPU 0
4.2 销毁某个GI下的CIs
$ sudo nvidia-smi mig -dci -gi 1 -ci 0,1,2
Successfully destroyed compute instance ID 0 from GPU 0 GPU instance ID 1
Successfully destroyed compute instance ID 1 from GPU 0 GPU instance ID 1
Successfully destroyed compute instance ID 2 from GPU 0 GPU instance ID 1
可以验证CI设备现在已经在GPU上销毁了:
$ nvidia-smi
+-----------------------------------------------------------------------------+
| MIG devices: |
+------------------+----------------------+-----------+-----------------------+
| GPU GI CI MIG | Memory-Usage | Vol| Shared |
| ID ID Dev | | SM Unc| CE ENC DEC OFA JPG|
| | | ECC| |
|==================+======================+===========+=======================|
| No MIG devices found |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
4.3 销毁GIs
$ sudo nvidia-smi mig -dgi
Successfully destroyed GPU instance ID 1 from GPU 0
Successfully destroyed GPU instance ID 2 from GPU 0
感谢大家的阅读,这里是从善若水的博客!文章来源:https://www.toymoban.com/news/detail-408344.html
文章来源地址https://www.toymoban.com/news/detail-408344.html
到了这里,关于【Nvidia】nvidia 高级特性MIG详细介绍(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!