openradioss求解并不是调用越多核心数计算越快,应当根据具体模型进行合适的设置。
文|高上地 林 丽
编辑|林 丽
来源|原 创
封面来源|Midjourney
Openradioss作为一款开源软件,可以让用户无限制的使用多核并行求解,仅仅只受到硬件的限制,感觉是真香。但近来,我们在实际应用中,却发现openradioss的计算效率不如Abaqus,并且有时候出现多核计算效果甚至不如核数少的情况,这是为什么呢?
01
调用核数越多,计算越快?
Calculation method
调用的CPU核数越多,计算速度就一定越快吗?
当我们在OpenRadioss中提交作业时,第二行空白处会让填写-nt和-np的数量,这会直接决定计算效率。
那nt和np是什么意思?应当如何选择呢?
首先我们需要了解Openradioss对于多核并行计算,提供了以下三种方法:
1. Shared-Memory Parallelism (SMP):SMP方法用指定的核数(线程)直接求解整个模型;
2. Single program multiple data (SPMD) :SPMD方法把模型切分成多个区域,分别计算,再通过域之间的接口进行信息传递;
3. SMP和SPMD相结合的混合方法:即先把模型切分成多个区域,每个计算采用多个核计算,再通过域之间的接口进行信息传递。
做一个形象的比喻,一个仿真模型就是一个工作包,被分配给了np个小组,每个小组有nt个人手。虽然人多力量大,但不同小组,不同组员之间的沟通成本也不容忽视,对于较小的工作包,如果分配给太多的小组,反而内耗过大影响工作效率了(打工人应该都有体会吧.....)。
示意图by Midjourney
对于单个工作站,推荐使用SPMD方法获得最佳计算效率,即只需要按照以上规则根据模型大小设置np即可,nt=1或者2(如果CPU本身可以超线程,则可以将nt设置为2),但超线程所获得的性能加速最多约5%,调用的license却加倍,因此需要考虑对license占用的情况下,nt=1会更合理,但openradioss无需考虑license占用,因此nt=2会获得最佳性能。对于计算机集群,或者同时调用2到3台工作站的情况会相对复杂,这里懒得写了。因为这种情况一般会有专门的调度软件例如Altair的PBS帮忙解决资源调度的问题。
(*值得注意的是,这里仅仅是针对最佳计算效率的推荐配置,并不是必须。对于某些问题,在求解时,会出现用np提交无法计算,需要用nt提交才可以计算的现象,原因不明....
**再再PS,商用版radioss可以直接用np计算,对于openradioss需要配置intel mpi.)
02
实例验证
Example
模型受力及边界条件示意图
np=1,改变nt。如下图,nt从1改为4,效率提升2.6倍,低于np的改变;np进一步改为8,效率提升3.4倍,也低于np的改变;nt进一步提升至16,效率几乎没有继续提升。继续提高nt,计算效率反而下降。
03
小结
Summary
关于OpenRadioss该用多少计算资源达到最佳效率,推荐如下:
·优先使用np,推荐每个核使用5k~10k个单元;
·计算效率接近的前提下,推荐用少的CPU个数(nt*np),以减少资源占用。