当前位置: 首页 > article >正文

【Nvidia】nvidia 高级特性MIG详细介绍(二)

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G/6G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解



文章目录

  • nvidia 高级特性MIG详细介绍(二)
  • 一、CUDA提供的并发机制
  • 二、MIG设备的命名规则
  • 三、CUDA设备枚举
  • 四、可以使用的MIG 配置文件

nvidia 高级特性MIG详细介绍(二)

在这里插入图片描述

一、CUDA提供的并发机制

       MIG对于CUDA应用程序来说基本上是透明的,因此CUDA的编程模型可以保持不变,以降低编程工作量。CUDA已经公开了多种在GPU上并行运行工作的技术,下面展示了这些技术与MIG的比较。请注意,StreamsMPS是CUDA编程模型的一部分,因此可以在GPU实例中使用。

       CUDA Streams是一种CUDA编程模型特性,在CUDA应用程序中,不同的工作可以提交到独立的队列,并由GPU独立处理。CUDA Streams只能在单个进程内使用,并且不能提供太多的隔离性——地址空间是共享的,SM是共享的,GPU内存带宽、cache和内存容量是共享的。最后,任何错误都会影响所有Streams和整个执行过程

       MPS(Multi-Process service)是CUDA的多进程服务。它允许协作的多进程应用程序共享GPU上的计算资源。它通常用于协作的MPI工作,但也被用于不相关应用程序共享GPU资源,同时也接受了这种解决方案带来的挑战。MPS目前不提供客户端之间的错误隔离,但是可以限制每个MPS客户端使用的流多处理器在所有SMs中的比例,但调度硬件仍然是共享的。内存带宽、cache和内存容量都在MPS客户端之间共享。

       MIG是NVIDIA gpu提供的新的并发形式,同时解决了其他CUDA技术在运行并行工作时的一些限制。

StreamsMPSMIG
分区类型单个进程逻辑划分物理划分
最大分区数无限制487
SM性能隔离NoYes(通过百分比,不是分区)Yes
内存保护NoYesYes
内存带宽QoSNoNoYes
错误隔离NoNoYes
跨分区互操作AlwaysIPC受限的IPC
重配置时机随时可配置进程启动处于Idle态

二、MIG设备的命名规则

       默认情况下,MIG设备由一个“GPU实例”和一个“计算实例”组成。下表突出显示了一种命名规则,通过其GPU实例的计算切片数和其以GB为单位的总内存(而不仅仅是其内存切片数)来标记一个MIG设备。

请添加图片描述

当只创建一个CI(消耗GI的整个计算能力)时,设备名称中就隐含了CI的大小,如上图所示

       下表描述了A100-SXM4-40GB配置文件名称说明。对于A100-SXM4-80GB,配置文件名称将根据内存比例而变化——例如1g.10gb、2g.20gb、3g.40gb、4g.40gb、7g.80gb。

内存20gb10gb5gb
GPU Instance3g2g1g
Compute Instance3c2c1c
MIG Device3g.20gb2g.10gb1g.5gb
GPCGPCGPCGPCGPCGPC

       根据用户的工作负载,每个GI可以进一步细分为多个CI。下表主要显示了在这种情况下MIG设备的名称。所示示例是对3g.20gb设备的细分,分成一组具有不同计算实例切片数的子设备。

在这里插入图片描述

三、CUDA设备枚举

       CUDA应用程序通过使用MIG设备标识,将程序允许在指定的MIG设备上。CUDA 11/R450和CUDA 12/R525只支持单个MIG实例的枚举。换句话说,无论创建了多少个MIG设备(或使容器可用),单个CUDA进程只能枚举一个MIG设备

       CUDA应用程序将一个CI及其父GI视为一个CUDA设备。CUDA只能使用单个CI,如果有多个CI可见,将选择第一个可用的CI。总而言之,有两个约束条件:

  • CUDA只能枚举单个计算实例;
  • 如果枚举了任何其它GPU上的计算实例,CUDA将不会枚举非MIG GPU;

扩展了CUDA_VISIBLE_DEVICES 对MIG的支持。根据所使用的驱动程序版本,支持以下两种格式:

  • 在drivers >= R470(470.42.01+)下,每个MIG设备都分配了一个GPU UUID,格式如下MIG- <UUID>;
  • drivers > R470(例如R450和R460),通过指定CI和相应的父GI来枚举每个MIG设备。该格式遵循如下约定:MIG-<GPU-UUID>/<GPU instance ID>/<compute instance ID>;
$ nvidia-smi -L        

GPU 0: A100-SXM4-40GB (UUID: GPU-5d5ba0d6-d33d-2b2c-524d-9e3d8d2b8a77)
  MIG 1g.5gb      Device  0: (UUID: MIG-c6d4f1ef-42e4-5de3-91c7-45d71c87eb3f)
  MIG 1g.5gb      Device  1: (UUID: MIG-cba663e8-9bed-5b25-b243-5985ef7c9beb)
  MIG 1g.5gb      Device  2: (UUID: MIG-1e099852-3624-56c0-8064-c5db1211e44f)
  MIG 1g.5gb      Device  3: (UUID: MIG-8243111b-d4c4-587a-a96d-da04583b36e2)
  MIG 1g.5gb      Device  4: (UUID: MIG-169f1837-b996-59aa-9ed5-b0a3f99e88a6)
  MIG 1g.5gb      Device  5: (UUID: MIG-d5d0152c-e3f0-552c-abee-ebc0195e9f1d)
  MIG 1g.5gb      Device  6: (UUID: MIG-7df6b45c-a92d-5e09-8540-a6b389968c31)
GPU 1: A100-SXM4-40GB (UUID: GPU-0aa11ebd-627f-af3f-1a0d-4e1fd92fd7b0)
  MIG 2g.10gb     Device  0: (UUID: MIG-0c757cd7-e942-5726-a0b8-0e8fb7067135)
  MIG 2g.10gb     Device  1: (UUID: MIG-703fb6ed-3fa0-5e48-8e65-1c5bdcfe2202)
  MIG 2g.10gb     Device  2: (UUID: MIG-532453fc-0faa-5c3c-9709-a3fc2e76083d)

四、可以使用的MIG 配置文件

我们不能随便的配置MIG,NVIDIA针对MIG有一些配置文件可供使用

因为我使用的是A100,所以这里用了A100的MIG配置文件,如下所示:
请添加图片描述

A100-SXM4-40GB支持的配置文件如下表所示。对于A100-SXM4-80GB,配置文件名称将根据内存比例而变化——例如1g.10gb、1g.10gb+me、1g.20gb、2g.20gb、3g.40gb、4g.40gb以及7g.80gb。

在这里插入图片描述



感谢大家的阅读,这里是从善若水的博客!


在这里插入图片描述


http://www.kler.cn/a/5528.html

相关文章:

  • Java日志框架:log4j、log4j2、logback
  • Numpy指南:解锁Python多维数组与矩阵运算(上)
  • EKF 自动匹配维度 MATLAB代码
  • 内置ALC的前置放大器D2538A/D3308
  • Java全栈项目 - 学生竞赛管理平台
  • mysql性能问题排查
  • seaborn从入门到精通03-绘图功能实现03-分布绘图distributional plots
  • C++/MFC工程[4]——绘制直线段
  • php微信小程序java+Vue高校课程课后辅导在线教育系统nodejs+python
  • 软考-软件测试
  • 蓝桥杯C/C++VIP试题每日一练之完美的代价
  • 数据驱动案例
  • 接收机的噪声来源与噪声分析
  • 米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵-简单
  • 别把 OpenAI 太当回事,它远未达到替换前端的地步
  • Retrofit源码分析小结
  • 《Effective Objective-C 2.0 》 阅读笔记 item5
  • 锐捷AP虚拟化配置
  • GUI开发--LCD屏幕的使用(非第三方库)--笔记
  • 机器学习-概论
  • MySQL数据库——数据库系统是什么?它由哪几部分组成?
  • 神州信息业绩持续稳定增长,信创机遇有望催生营收再上新台阶
  • 新六级通关训练
  • MySQL游标详解
  • 走过最长的路是ChatGPT的套路,信过最真的话是Adobe的Firefly
  • ubuntu18.04下编译windows10 下的 libvncserver/libvncclient