在异构系统中,AMD通过将CPU与GPU的数据织物网络通过定制的xGMI链接连接,实现了统一访问,使得GPU节点的数据织物网络如同CPU节点一样可访问。这样的设计使得系统能够高效地整合CPU与GPU资源,提升数据处理速度和效率,特别是在处理密集型计算任务中。
在异构系统中,AMD GPU的内存控制器可以通过EDAC(Error Detection And Correction)框架进行表示和管理,具体层级如下:
GPU DF(数据织物网络) -> EDAC MC GPU UMC(统一内存控制器) -> EDAC CSROW UMC通道 -> EDAC CHANNEL
例如,一个包含一个AMD CPU与四个 MI200 GPU通过xGMI相连的异构系统。这种系统在EDAC子系统下,通过调用CPU与GPU特定的操作来处理异构硬件,GPU节点按照PCI层级顺序枚举,第一个GPU节点ID紧随CPU节点后,后续GPU节点按此规律递增。
具体到AMD MI200加速器(数据中心GPU)的异构实例中,每个GPU具有两个数据织物网络,每个网络包含四个统一内存控制器(UMC),每个UMC又含有八个通道。每个UMC通道控制一个128位HBM2e(即2GB)通道,相当于8个2GB Rank)。这形成了总共4096位的DRAM数据总线。
在/sysfs
目录下,异构系统中CPU与GPU节点的EDAC表示如下:
$ ls /sys/devices/system/edac/mc/
mc0 - CPU MC node 0
mc1 |
mc2 |- GPU card[0] => node 0(mc1), node 1(mc2)
mc3 |
mc4 |- GPU card[1] => node 0(mc3), node 1(mc4)
mc5 |
mc6 |- GPU card[2] => node 0(mc5), node 1(mc6)
mc7 |
mc8 |- GPU card[3] => node 0(mc7), node 1(mc8)
每个GPU节点(例如GPU卡1)下,包含两个MC节点(如mc1与mc2),每个MC节点(如mc1)下有四个UMC(csrow),每个UMC有八个通道,通道与内存大小等信息。
/sys/devices/system/edac/mc/..
CPU # CPU node
├── mc 0
GPU Nodes are enumerated sequentially after CPU nodes have been populated
GPU card 1 # Each MI200 GPU has 2 nodes/mcs
├── mc 1 # GPU node 0 == mc1, Each MC node has 4 UMCs/CSROWs
│ ├── csrow 0 # UMC 0
│ │ ├── channel 0 # Each UMC has 8 channels
│ │ ├── channel 1 # size of each channel is 2 GB, so each UMC has 16 GB
│ │ ├── channel 2
│ │ ├── channel 3
│ │ ├── channel 4
│ │ ├── channel 5
│ │ ├── channel 6
│ │ ├── channel 7
│ ├── csrow 1 # UMC 1
│ │ ├── channel 0
│ │ ├── ..
│ │ ├── channel 7
│ ├── .. ..
│ ├── csrow 3 # UMC 3
│ │ ├── channel 0
│ │ ├── ..
│ │ ├── channel 7
│ ├── rank 0
│ ├── .. ..
│ ├── rank 31 # total 32 ranks/dimms from 4 UMCs
├
├── mc 2 # GPU node 1 == mc2
│ ├── .. # each GPU has total 64 GB
GPU card 2
├── mc 3
│ ├── ..
├── mc 4
│ ├── ..
GPU card 3
├── mc 5
│ ├── ..
├── mc 6
│ ├── ..
GPU card 4
├── mc 7
│ ├── ..
├── mc 8
│ ├── ..
在sysfs
中,EDAC(Error Detection and Correction)相关的条目通常位于/sys/devices/system/edac/
之下,其中mc
目录包含了内存控制器(Memory Controller)的信息。对于这个特定的异构系统,我们可以预期看到如下结构:
-
CPU的内存控制器:
-
-
/sys/devices/system/edac/mc/mc0/
: 这里代表了CPU的内存控制器0,下面可能包含有关错误纠正和检测的信息,如ce_count
和ue_count
。
-
-
GPU的内存控制器:
-
-
GPU的内存控制器则按照它们在系统中的发现顺序被分配不同的
mc
编号。由于有4块GPU,每块GPU有两个内存控制器(因为每个GPU有两个数据织物网络,每个网络有一个UMC),所以会有8个额外的mc
条目。 -
例如,
/sys/devices/system/edac/mc/mc1
至/sys/devices/system/edac/mc/mc8
分别代表了四个GPU的八个内存控制器。每个GPU的内存控制器下,可能会有类似CPU的错误统计信息,以及更具体的csrow
(内存控制器选择)和channel
(通道)信息,反映GPU内存组织结构。
-
以GPU部分为例,假设mc1
代表了第一个GPU的第一个数据织物网络的内存控制器,则其下的结构可能如下:
-
/sys/devices/system/edac/mc/mc1/
-
-
csrow0
: 第一个UMC,每个UMC作为EDAC的一个csrow
条目。
-
channel0
至channel7
: 表示该UMC下的8个通道,每个通道可能有各自的错误统计信息。
-
csrow1
至csrow3
: 分别对应其余三个UMC,每个同样管理8个通道。
-
这个结构反映了GPU的内存布局,每个GPU的UMC被视为一个csrow
,而UMC内的通道则直接映射为channel
。这样的组织方式允许系统监控和管理每个GPU内存模块的错误情况,无论是可纠正的还是不可纠正的错误。
EDAC子系统为AMD异构系统提供了处理机制,通过调用特定于系统CPU与GPU的操作,实现了对异构硬件的支持与错误检测与纠正,提升了系统的可靠性和维护性。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/107495.html