3. HPC硬件体系与性能模型

全波电磁仿真(FDTD、FEM、MoM、DGTD 等)在 HPC 上的性能,本质上由“算得动”和“喂得饱”两件事共同决定。前者取决于浮点峰值,后者取决于内存带宽与互连带宽。理解多核 CPU、GPU、众核处理器与异构集群的架构差异,并用 Roofline 模型把算法算术强度与硬件“屋顶线”对齐,是判断一段仿真代码究竟卡在计算、内存还是通信上的关键。

一、四类硬件架构的定位差异

多核 CPU(如 64~128 核的 x86/ARM 服务器)单核主频高、缓存层级深、分支预测强,适合处理网格生成、稀疏矩阵装配、自适应加密判据等控制密集与不规则访存任务。GPU(如数据中心级加速卡)拥有数千个流处理器,SIMT 执行模型要求同一 warp 内线程走相同分支,适合规则网格上的批量更新,例如 FDTD 的电场/磁场交替推进。众核处理器(如 Intel Xeon Phi 类或国产众核)介于两者之间,核数多但单核较弱,依赖高带宽片上网络与向量化。异构集群则把上述节点通过 InfiniBand/RoCE 互连,形成“节点内加速 + 节点间 MPI 通信”的两级并行结构。

对全波仿真而言,一个典型判断是:FDTD 的 Yee 网格更新算术强度低(每字节约 1~3 FLOP),天然偏向带宽型硬件;FEM 的稀疏矩阵向量乘(SpMV)算术强度约 0.5~2 FLOP/Byte,同样受内存带宽约束;而 MoM 的稠密矩阵乘(GEMM)算术强度可达数十 FLOP/Byte,才真正吃 GPU 的浮点峰值。

二、Roofline 模型:把算法放到硬件屋顶线下

Roofline 模型用两个参数刻画性能上限:硬件峰值浮点性能 P_peak(FLOP/s)与内存带宽 B(Byte/s)。算法算术强度 I = FLOP / Byte。可达性能为:

P_att = min(P_peak, I × B)

拐点强度 I* = P_peak / B
若 I < I*:带宽受限(memory-bound)
若 I > I*:计算受限(compute-bound)

举例(示例参数,非实测):某 GPU 节点 P_peak = 15 TFLOP/s(FP32),B = 1.5 TB/s,则 I* = 10 FLOP/Byte。FDTD 更新 I ≈ 2,远低于拐点,属于带宽受限,此时换更快的 GPU 收益有限,优化重点应放在数据复用、缓存分块与向量化访存上。反之,MoM 的 GEMM I ≈ 40,处于计算受限区,提升 FP32/FP64 峰值或使用 Tensor Core 才有明显收益。

Roofline 模型:算术强度与硬件屋顶线 算术强度 I (FLOP/Byte,对数轴) 性能 P (FLOP/s,对数轴) 0.5 2 10 40 200 带宽屋顶 P = I × B 计算屋顶 P_peak 拐点 I* = P_peak / B 带宽受限区 计算受限区 FDTD I≈2 SpMV I≈1 MoM GEMM I≈40 缓存分块/向量化

三、内存带宽与通信瓶颈的实际影响

在单节点内,内存带宽往往先于浮点峰值成为瓶颈。以 FDTD 三维网格为例,每个网格点每步需读写 Ex,Ey,Ez,Hx,Hy,Hz 六个场分量,若采用 FP32,单点单步访存约 24 Byte,而计算量约 30~40 FLOP,算术强度约 1.5 FLOP/Byte。若节点带宽为 200 GB/s,则理论性能上限约 300 GFLOP/s,远低于 CPU 的 1~3 TFLOP/s 峰值。这解释了为什么 FDTD 在 CPU 上常表现为“核多但跑不满”,而在 GPU 上因 HBM 带宽高(1~3 TB/s)才获得数量级提升。

跨节点时,MPI 通信成为新的瓶颈。域分解后,每个子域每步需与邻居交换一层切面场值。设子域边长为 N,切面数据量约 6N² 个浮点数,而计算量约 N³,通信计算比约 1/N。子域越小,通信占比越高。当 N 从 128 降到 32,通信占比上升约 4 倍。因此强扩展(固定总网格、增加进程数)在进程数超过一定规模后效率急剧下降,而弱扩展(网格随进程数同步增大)能维持较高并行效率。

判断瓶颈的实用方法:先用单节点测出实际带宽与浮点峰值,计算 I*;再测目标算法的 I。若 I < I*,优先优化访存(数据布局、缓存分块、合并访问);若 I > I*,优先优化计算(向量化、指令级并行、Tensor Core)。跨节点时,用通信/计算比 R = 切面数据量 / 子域计算量 评估扩展性,R 越小越适合大规模并行。

四、面向全波仿真的选型与优化要点

实际工程中,选型应遵循“算法算术强度匹配硬件特性”的原则。FDTD 与显式 DGTD 优先选择高带宽 GPU 或高带宽众核节点;隐式 FEM 的 SpMV 阶段受带宽约束,但预条件子构造可能计算密集,适合 CPU+GPU 混合;MoM 的稠密求解适合 GPU 集群,并利用 MPI+OpenMP+CUDA 三级并行。优化时,先做 Roofline 定位,再决定是改数据布局(如 SoA 替代 AoS 以提升合并访存)、做时间分块(提升缓存复用),还是调整域分解粒度以降低通信占比。只有把硬件屋顶线与算法算术强度对齐,才能让全波仿真在 HPC 上真正跑出接近理论上限的性能。