技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图1

01 背景

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

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图2

  在原始代码中,数组定义、内存分配、并行通信上有“硬编码限制”,使得并行上限固定为8192进程。当超过该进程数时,软件并不会发生报错,而是自动回退为8192进程。在我们最近的一次对于OpenRadioss的优化中,成功地突破了这个并行数上限,将最大并行数成功突破到了10000+进程,并成功地在国产太湖之光超算平台进行了多次测试。为后期OpenRadioss处理大规模模拟问题提供了重要支持。

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图3
数值模拟流程图

02 技术挑战

  突破这一限制的主要难点体现在以下方面:

  1. 代码层面

  OpenRadioss在开发之时,内部的一些数组和进程数有着固定的限制,文件读写接口、数值方法、接触算法、循环与判断语句、优化算法等均与进程数强绑定。由于这些限制,需要完整找出限制并行扩展的代码并进行修改,这一工作难度很大。

  2. 编译层面

  在release模式下,编译器会对代码进行严格地优化和检查,尤其是在一万进程下某些数组和内存访问方式会触发警告,需要针对性进行优化。

  3. 系统层面

  在超算系统进行万核测试时,往往会触发ulimit限制和节点内存限制,导致作业直接被杀死。同时也可能会引发MPI库的通信问题,因此需要对作业系统参数和作业命令进行针对性调整。

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图4
OpenRadioss模块架构图

03 成果展示

 在完成代码扩展后,我们将 OpenRadioss 移植至 太湖之光 超算,顺利通过编译,并完成了多个典型算例(如汽车碰撞、流固耦合等)的 一万进程并行模拟。

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图5

  所有算例均成功运行,输出结果稳定,验证了 OpenRadioss 在万核规模下的可扩展性与可靠性

算例

输出信息文件

INIVOL_and_Fluid

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图6

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图7

Cell_Phone_Drop

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图8

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图9
汽车碰撞算例

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图10
汽车碰撞算例

技术分享︱从 8192 到 10000:OpenRadioss 在国产超算上的一次关键突破的图11
汽车碰撞算例

04 项目意义

  8192进程限制了OpenRadioss向更大规模仿真向前的脚步。我们通过调整代码结构、优化编译选项,让 OpenRadioss 真正跨过了这个门槛,并且验证了它在万核级别的稳定性和可扩展性。

  在平台上,这是一次对国产超算的深度适配。

  在太湖之光x86架构超算上顺利跑通一万进程,证明了国产超算平台和开源软件可以高效协同。这为未来更多工程级应用迁移到国产平台提供了实践依据。

  应用上,这是迈向更大规模仿真的关键一步。

  汽车碰撞、爆炸冲击等复杂场景往往需要更精细的网格和更高的精度。只有并行规模上得去,才能真正支撑起这些复杂模拟。所以8192 是过去的极限,10000 是新的起点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值