一种基于属性的 C++ 扩展,用于 HPC 中的内存导向规范,以减少内存占用并简化 MPI 开发
数学软件
2025-12-23 v4
摘要
C++ 在结构体存储方面倾向于低效的内存布局:编译器会插入填充位,而无法利用对整数、枚举或位集范围的知识。此外,语言未提供对任意浮点精度的支持。我们提出一种基于属性的语言扩展,允许开发人员指导编译器选择有利的内存布局:是否可以将多个布尔值或范围受限的整数压缩到一个位域、浮点数是否具有少于 IEEE 标准的有效位数,以及程序员是否愿意在属性排序保证和更紧凑的对象表示之间进行权衡。该扩展提供了通过普通 C++ 赋值回退到正常对齐和本地 C++ 浮点表示的机会,不依赖外部库,生成的代码仍为(语法上)标准 C++。鉴于 MPI 是分布式内存计算中事实标准的 de-facto 标准,我们进一步提出额外的属性,用于结合内存优化扩展简化 MPI 数据类型建模。我们的工作在 LLVM 中实现了语言注释,并通过平滑粒子水动力学基准测试展示了其潜在影响,揭示了在性能和开发生产率方面的潜在收益。
引用
@article{arxiv.2406.06095,
title = {An extension of C++ with memory-centric specifications for HPC to reduce memory footprints and streamline MPI development},
author = {Pawel K. Radtke and Cristian G. Barrera-Hinojosa and Mladen Ivkovic and Tobias Weinzierl},
journal= {arXiv preprint arXiv:2406.06095},
year = {2025}
}