2. AMD EPYC处理器架构解析
理解AMD EPYC处理器的性能特征,不能只看核心数量和主频,而要沿着“核心—CCX—CCD—IOD—内存/PCIe”这条物理与逻辑链路逐层展开。EPYC的架构本质上是把计算、缓存、内存控制器和I/O控制器解耦,再通过高速互连重新组合。对HPC集群建设而言,这种组合方式直接决定了内存带宽、NUMA拓扑、PCIe设备亲和性以及跨CCD通信开销,是选型、插卡、绑核和性能调优的基础。
一、Zen核心与SMT:计算的最小单元
Zen系列核心是EPYC的计算最小单元。每个核心拥有独立的整数执行单元、浮点单元、L1指令/数据缓存和L2缓存,并支持SMT(同步多线程),通常表现为每个物理核心对应两个逻辑处理器。以Zen 4为例,每核心L2缓存为1 MB,L1数据缓存32 KB、指令缓存32 KB。对HPC而言,浮点吞吐主要取决于每核心的FMA单元宽度、AVX-512支持情况以及每周期可发射的浮点操作数。Zen 4支持AVX-512,但采用256位数据通路双泵实现,因此在评估GROMACS、OpenFOAM、VASP等负载时,需要关注实际指令混合,而不能简单按“支持AVX-512”推断性能翻倍。
SMT对HPC的影响具有两面性:计算密集且寄存器压力大的负载,两个线程争抢同一核心的浮点单元,收益可能只有10%~30%;而访存密集、分支较多的负载,SMT可更有效地隐藏延迟。因此集群中是否开启SMT,应结合具体应用做对照测试,而不是统一开启或关闭。
二、CCX与CCD:缓存域与核心分组
多个Zen核心先组成CCX(Core Complex),共享同一块L3缓存;多个CCX再封装为一个CCD(Core Complex Die)。在EPYC 9004系列(Zen 4)中,典型配置是每个CCD含8个核心、32 MB L3缓存,通常组织为一个CCX。CCX内部核心访问共享L3的延迟低、带宽高;跨CCX或跨CCD访问则需经过IOD中的Infinity Fabric,延迟明显上升。
这一结构对HPC最直接的影响是“进程/线程放置”。MPI进程若被调度到同一CCD内,L3命中率和通信延迟更优;若跨CCD分布,则可能因L3分区和IF链路产生额外开销。实践中可用numactl、likwid或hwloc查看拓扑,再结合OMP_PROC_BIND、OMP_PLACES控制线程绑定。例如将OpenMP线程绑定到同一CCD的8个物理核心,往往比让操作系统自由调度获得更稳定的每周期浮点结果。
三、IOD与Infinity Fabric:内存和I/O的汇聚点
IOD(I/O Die)是EPYC的中央枢纽,集成内存控制器、PCIe控制器、Infinity Fabric交换结构以及安全/管理模块。CCD通过Infinity Fabric连接到IOD,内存和PCIe设备也挂在IOD上。因此,核心访问内存、核心访问GPU或网卡,都要经过IOD。IOD的设计决定了内存通道数量、PCIe通道数量以及NUMA域划分方式。
在EPYC 9004中,IOD提供12个DDR5内存通道,支持12通道DDR5-4800(每通道1 DIMM时),并可按每通道2 DIMM配置。PCIe方面提供128条PCIe 5.0通道,可拆分为x16、x8等不同宽度,用于GPU、NVMe和高速网卡。对HPC集群来说,这意味着单颗EPYC可同时挂载多块GPU和多块NVMe,但通道分配和NUMA亲和性必须提前规划。
四、内存通道与NUMA:带宽和延迟的边界
EPYC 9004的12个DDR5通道是HPC内存带宽的关键来源。以DDR5-4800计算,单通道带宽为4800 MT/s × 8 Byte = 38.4 GB/s,12通道理论总带宽约460 GB/s。但实际可用带宽受NUMA划分、DIMM填充方式和访问模式影响。若只插6条DIMM,带宽直接减半;若跨NUMA节点访问,延迟可增加数十纳秒。
在双路EPYC服务器中,每颗CPU构成一个NUMA节点(或按NPS设置拆分为多个NUMA域)。HPC应用应尽量让进程访问本地内存。例如运行WRF或OpenFOAM时,可用numactl --cpunodebind=0 --membind=0将进程和内存绑定到同一节点。对于MPI+OpenMP混合程序,通常建议每个NUMA节点放置一个MPI进程,再在该进程内启动与本地核心数匹配的OpenMP线程。
五、PCIe通道与加速器亲和性
128条PCIe 5.0通道为GPU、NVMe和高速网卡提供了充足的上行带宽。但在实际插卡时,必须关注PCIe设备挂在哪个IOD的哪个根复合体上。若GPU与使用它的CPU核心分属不同NUMA节点,数据需跨IF传输,延迟和带宽都会受损。因此,GPU服务器应优先将GPU插槽与对应CPU的PCIe通道对齐,并在运行时用CUDA_VISIBLE_DEVICES和numactl联合绑定。
对于NVMe存储节点,PCIe 5.0 x4单盘理论带宽约16 GB/s,多盘并发时需确认IOD上行带宽是否成为瓶颈。网络方面,400G InfiniBand或RoCE网卡通常占用x16 PCIe 5.0,应插在与计算进程相同的NUMA节点上,减少跨节点通信的额外跳数。
六、面向HPC负载的匹配原则
综合来看,EPYC架构与HPC负载的匹配可归纳为三条原则:第一,计算密集且缓存敏感的应用,优先保证CCD内绑核和L3局部性;第二,访存密集或内存带宽敏感的应用,优先满配内存通道并严格NUMA绑定;第三,GPU/NVMe/网卡等加速设备,优先保证PCIe亲和性与NUMA局部性。实际部署时,建议先用hwloc-ls或lstopo导出拓扑,再结合应用特征制定绑核与内存策略,最后通过STREAM、HPL、GROMACS等基准做验证,确认带宽、延迟和扩展效率达到预期。