ADIOS2加速WRF IO
华为公司研究人员在arXiv发表了预印版论文《accelerating wrf i/o performance with adios2 and network-based streaming》,介绍了他们将下一代并行I/O库ADIOS2接入WRF模式,利用ADIOS2功能提升WRF I/O性能的工作。根据给出的测试结果,使用ADIOS2相比传统MPI-I/O方案获得十倍的性能提升。具体细节可阅读他们的论文。
ADIOS2功能介绍
ADIOS2亮点功能有很多,包括
- 支持多种数据格式,sub-files输出功能
支持自研BP系列数据格式,不追求输出到一个文件中,而是通过I/O进程聚合器生成多个sub-files,减少传统MPI-I/O方法文件锁问题。
I/O聚合器设置可调,默认一个节点设置一个,既利用节点内共享内存通信,又尽可能减少并发访问文件系统的进程数。
- Burst Buffer功能
BP5格式支持node-local burst buffer支持,即每个进程输出其sub-files到本地文件系统(比如节点挂载的SSD盘),然后通过一个单独的后台线程将这些数据传到并行文件系统中。
- 在线压缩功能
ADIOS2支持在线数据操作,包括无损和有损数据压缩功能。一般认为由于压缩开销导致耗时变长,但测试证明使用压缩功能没有导致显著性能下降,因其通过压缩减少了写出数据量,从而抵消了压缩所需开销。
- In-situ后处理功能
通过SST引擎在数据生产者和消费者之间直连,数据不落盘,通过UCX通信协议从生产者内存中网络传输给消费者直接处理加工,这可能是未来的PIO库趋势。
实测效果
简单的测试下ADIOS2加速WRF IO情况。
测试个例网格数:640 * 514 * 59
,使用512进程,8个计算节点。
使用ADIOS2输出BP5格式,默认是每个节点设置一个I/O聚合器,所以最终生成8个sub-files。
wrfout_d01_2020-07-01_12:00:00/
├── data.0
├── data.1
├── data.2
├── data.3
├── data.4
├── data.5
├── data.6
├── data.7
├── md.0
├── md.idx
├── mmd.0
└── profiling.json
下表是测试结果,简单的选取了单个时次输出结果进行对比。
I/O方式 | io_form_history | 单个时次文件大小 | 耗时/s |
---|---|---|---|
serial NetCDF4 | 2 | 424 MB | 15.992 |
PNetCDF | 11 | 1.5 GB | 6.932 |
ADIOS2 无压缩BP5 | 14 | 1.6 GB | 0.141 |
ADIOS2 压缩BP5 | 14 | 657 MB | 0.104 |
从上表可以看出:
- ADIOS2输出方式相比PNetCDF并行输出方式加速超过49倍,这个结果超乎效果的好,需要进一步仔细研究。
- ADIOS2开启压缩功能并未降低输出性能。
参考文献
E. Fredj, Y. Delorme, S. Jubran, M. Wasserman, Z. Ding, and M. Laufer, “accelerating wrf i/o performance with adios2 and network-based streaming.” arXiv, Apr. 13, 2023. Accessed: Jul. 21, 2023. [Online]. Available: http://arxiv.org/abs/2304.06603

