CAMx平流模块GPU HIP移植优化
Cao et al.(2024)发表了空气质量模型CAMx模式PPM(Piecewise Parabolic Method)平流模块在国产GPU加速器上使用HIP编程接口移植优化工作,是Cao et al.(2023) CUDA C优化工作的后续。
硬件和编程模型
文中所述的国产GPU加速器估计是曙光的DCU加速器。
试验平台包括NVIDIA GPU和国产GPU,软硬件配置见下图
国产GPU的显存是16GB的HBM2。Songshan超算和Taiyuan超算的国产GPU通过PCIe与CPU连接,主存和显存之间的数据传输峰值带宽分别为16GB/s和32GB/s。
ROCm-HIP是AMD为其GPU设备开发的编程接口,对标NVIDIA的CUDA。两者使用非常类似,大多数情况下cuda c API接口cuda
前缀替换为hip
即可适用于AMD GPU。因此,有一个perl脚本工具HIPIFY
可以将cuda c程序转换成hip程序。
国产GPU只能使用HIP,不能使用CUDA。
异构实现路线
CAMx模式由Fortran语言编写,支持MPI+OpenMP。为了能够在GPU平台运行,需要先将其改写为C代码,然后对其中包括内存分配等地方使用CUDA C或者HIP扩展进行改写。
由于每个计算节点GPU卡数通常远小于CPU核数,以及目前只对部分模块进行GPU移植,因此为了充分利用计算资源,使用多层混合并行,即MPI+OpenMP+HIP/CUDA(见下图)。一般每个MPI进程绑定一块GPU设备。
正确性验证
GPU移植优化首先要验证优化工作的正确性。选择以CPU Fortran版本为参考结果,验证GPU版本运行一段时间后模式浓度的绝对误差(Absolute Errors)和相对误差(Relative Errors)及RMSE(均方根误差)与SD(Standard Deviation)的比值。
结果显示国产GPU的HIP版本在以上几个指标上差异小于NVIDIA GPU的CUDA版本。
计算性能
CPU端通过Fortran内置函数system_clock
计时,HIP GPU端使用hipEvent_t
函数计时。
国产处理器一个进程计算时间作为比较基准。
BJ/HN/ZY三个测试个例网格点数不同,其中ZY最多。
下图是平流模块在不同平台的计算时间及加速比效果。可以看出,相比CPU,GPU可以显著提高计算速度。但需要注意的是这里的运行时间只是在GPU端纯计算时间,不包括CPU-GPU数据传输时间。
通过这些数据也能间接了解国产GPU目前的性能水平。
下表统计了平流过程CPU-GPU数据传输时间。可以看出数据传输时间超过计算时间。作者给出了优化建议:CPU-GPU异步数据传输重叠计算和传输时间;对于支持统一内存(Unified Memory)架构GPU可以利用这一特性避免频繁数据传输以及Cao et al.(2023 )中采用的通信优化手段。
但本质上是因为目前只是将模式一个计算模块(平流模块占比10%时间)移植到GPU端,造成频繁的数据传输,应该尽可能将所有计算模块移植到GPU端减少CPU-GPU数据通信。
前面提到的多层级混合并行MPI+OpenMP+HIP/CUDA正是因为当前只移植了一个计算模块的原因,MPI负责区分分解,每个进程负责一个子区域计算,HIP/CUDA负责平流模块在GPU上的计算,而OpenMP负责其它模块的计算。这样做的好处是充分利用节点上所有CPU核心数和GPU资源(因为CPU核心数远大于GPU卡数,如果一个进程绑定一张GPU卡,会造成CPU核心闲置情况)
其它
- CAMx构建文件Intel编译器浮点模型选项使用
-mieee-fp
,作者测试使用-fp-model precise
可以在值安全情况下开启向量化优化,结果显示相比基准快了41.4%。 - PPM数值方法也是美国FV3动力框架基石。
文献
Cao, K., Wu, Q., Wang, Lingling, Guo, H., Wang, N., Cheng, H., Tang, X., Li, Dongxing, Liu, L., Li, Dongqing, Wu, H., Wang, Lanning, 2024. GPU-HADVPPM4HIP V1.0: using the heterogeneous-compute interface for portability (HIP) to speed up the piecewise parabolic method in the CAMx (v6.10) air quality model on China’s domestic GPU-like accelerator. Geoscientific Model Development 17, 6887–6901. https://doi.org/10.5194/gmd-17-6887-2024
Cao, K., Wu, Q., Wang, Lingling, Wang, N., Cheng, H., Tang, X., Li, D., Wang, Lanning, 2023. GPU-HADVPPM V1.0: a high-efficiency parallel GPU design of the piecewise parabolic method (PPM) for horizontal advection in an air quality model (CAMx V6.10). Geoscientific Model Development 16, 4367–4383. https://doi.org/10.5194/gmd-16-4367-2023

