当前位置:   article > 正文

内存EDAC在AMD异构场景的应用_内存颗粒 edac

内存颗粒 edac

在异构系统中,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表示如下:

  1. $ ls /sys/devices/system/edac/mc/
  2. mc0 - CPU MC node 0
  3. mc1 |
  4. mc2 |- GPU card[0] => node 0(mc1), node 1(mc2)
  5. mc3 |
  6. mc4 |- GPU card[1] => node 0(mc3), node 1(mc4)
  7. mc5 |
  8. mc6 |- GPU card[2] => node 0(mc5), node 1(mc6)
  9. mc7 |
  10. mc8 |- GPU card[3] => node 0(mc7), node 1(mc8)

每个GPU节点(例如GPU卡1)下,包含两个MC节点(如mc1与mc2),每个MC节点(如mc1)下有四个UMC(csrow),每个UMC有八个通道,通道与内存大小等信息。

  1. /sys/devices/system/edac/mc/..
  2. CPU # CPU node
  3. ├── mc 0
  4. GPU Nodes are enumerated sequentially after CPU nodes have been populated
  5. GPU card 1 # Each MI200 GPU has 2 nodes/mcs
  6. ├── mc 1 # GPU node 0 == mc1, Each MC node has 4 UMCs/CSROWs
  7. │ ├── csrow 0 # UMC 0
  8. │ │ ├── channel 0 # Each UMC has 8 channels
  9. │ │ ├── channel 1 # size of each channel is 2 GB, so each UMC has 16 GB
  10. │ │ ├── channel 2
  11. │ │ ├── channel 3
  12. │ │ ├── channel 4
  13. │ │ ├── channel 5
  14. │ │ ├── channel 6
  15. │ │ ├── channel 7
  16. │ ├── csrow 1 # UMC 1
  17. │ │ ├── channel 0
  18. │ │ ├── ..
  19. │ │ ├── channel 7
  20. │ ├── .. ..
  21. │ ├── csrow 3 # UMC 3
  22. │ │ ├── channel 0
  23. │ │ ├── ..
  24. │ │ ├── channel 7
  25. │ ├── rank 0
  26. │ ├── .. ..
  27. │ ├── rank 31 # total 32 ranks/dimms from 4 UMCs
  28. ├── mc 2 # GPU node 1 == mc2
  29. │ ├── .. # each GPU has total 64 GB
  30. GPU card 2
  31. ├── mc 3
  32. │ ├── ..
  33. ├── mc 4
  34. │ ├── ..
  35. GPU card 3
  36. ├── mc 5
  37. │ ├── ..
  38. ├── mc 6
  39. │ ├── ..
  40. GPU card 4
  41. ├── mc 7
  42. │ ├── ..
  43. ├── mc 8
  44. │ ├── ..

sysfs中,EDAC(Error Detection and Correction)相关的条目通常位于/sys/devices/system/edac/之下,其中mc目录包含了内存控制器(Memory Controller)的信息。对于这个特定的异构系统,我们可以预期看到如下结构:

  1. CPU的内存控制器:

    • /sys/devices/system/edac/mc/mc0/: 这里代表了CPU的内存控制器0,下面可能包含有关错误纠正和检测的信息,如ce_countue_count

  1. 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条目。

    • channel0channel7: 表示该UMC下的8个通道,每个通道可能有各自的错误统计信息。

    • csrow1csrow3: 分别对应其余三个UMC,每个同样管理8个通道。

这个结构反映了GPU的内存布局,每个GPU的UMC被视为一个csrow,而UMC内的通道则直接映射为channel。这样的组织方式允许系统监控和管理每个GPU内存模块的错误情况,无论是可纠正的还是不可纠正的错误。

EDAC子系统为AMD异构系统提供了处理机制,通过调用特定于系统CPU与GPU的操作,实现了对异构硬件的支持与错误检测与纠正,提升了系统的可靠性和维护性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/883544
推荐阅读
相关标签
  

闽ICP备14008679号