
01 背景
OpenRadioss是由Altair公司开发、于2022年开源的一个多域多物理有限元求解器。该求解器被广泛应用于汽车碰撞、冲击爆炸和航空航天等领域的动态模拟。该模拟软件支持复杂材料模型、接触算法、复杂几何关系和大规模并行计算。OpenRadioss核心代码采用Fortran作为主要编程语言,部分功能使用C/C++实现,代码架构整体模块化,包含前处理模块(starter)和求解器模块(engine),最大能够处理千万网格数的大规模模型和输出大型可视化文件。

在原始代码中,数组定义、内存分配、并行通信上有“硬编码限制”,使得并行上限固定为8192进程。当超过该进程数时,软件并不会发生报错,而是自动回退为8192进程。在我们最近的一次对于OpenRadioss的优化中,成功地突破了这个并行数上限,将最大并行数成功突破到了10000+进程,并成功地在国产太湖之光超算平台进行了多次测试。为后期OpenRadioss处理大规模模拟问题提供了重要支持。
02 技术挑战
突破这一限制的主要难点体现在以下方面:
1. 代码层面
OpenRadioss在开发之时,内部的一些数组和进程数有着固定的限制,文件读写接口、数值方法、接触算法、循环与判断语句、优化算法等均与进程数强绑定。由于这些限制,需要完整找出限制并行扩展的代码并进行修改,这一工作难度很大。
2. 编译层面
在release模式下,编译器会对代码进行严格地优化和检查,尤其是在一万进程下某些数组和内存访问方式会触发警告,需要针对性进行优化。
3. 系统层面
在超算系统进行万核测试时,往往会触发ulimit限制和节点内存限制,导致作业直接被杀死。同时也可能会引发MPI库的通信问题,因此需要对作业系统参数和作业命令进行针对性调整。
03 成果展示
在完成代码扩展后,我们将 OpenRadioss 移植至 太湖之光 超算,顺利通过编译,并完成了多个典型算例(如汽车碰撞、流固耦合等)的 一万进程并行模拟。

所有算例均成功运行,输出结果稳定,验证了 OpenRadioss 在万核规模下的可扩展性与可靠性。
|
算例 |
输出信息文件 |
|
INIVOL_and_Fluid |
|
|
Cell_Phone_Drop |
|
04 项目意义
8192进程限制了OpenRadioss向更大规模仿真向前的脚步。我们通过调整代码结构、优化编译选项,让 OpenRadioss 真正跨过了这个门槛,并且验证了它在万核级别的稳定性和可扩展性。
在平台上,这是一次对国产超算的深度适配。
在太湖之光x86架构超算上顺利跑通一万进程,证明了国产超算平台和开源软件可以高效协同。这为未来更多工程级应用迁移到国产平台提供了实践依据。
应用上,这是迈向更大规模仿真的关键一步。
汽车碰撞、爆炸冲击等复杂场景往往需要更精细的网格和更高的精度。只有并行规模上得去,才能真正支撑起这些复杂模拟。所以8192 是过去的极限,10000 是新的起点。





被折叠的 条评论
为什么被折叠?



