赞
踩
在异构系统中,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的操作,实现了对异构硬件的支持与错误检测与纠正,提升了系统的可靠性和维护性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。