基于MPI并行的非线性有限元求解器Hanfem
在之前的文章HANFEM-高性能非线性有限元程序中提到Hanfem是本公 众号自研的用于结构求解的高性能非线性有限元求解器,并在文章中表明Hanfem可以求解百万级别自由度的模型。实际上,Hanfem在开发之初就准备采用MPI并行实现。最近,基于MPI并行求解的部分工作已经完成,在采用MPI并行之后,和之前版本相比,求解效率大幅提高。
采用12个进程求解,总求解时间为17.57s,相比无MPI版本的61s,效率提高了3.47倍。在MPI的程序中,12.5w单元被分到12个进程中,每个进程约1w单元,每个进程仅需要对进程内的单元求解刚度矩阵,最后结合进程间的通信,组装成整体刚度矩阵,由于每个进程的单元数相对非MPI程序大幅减少,因此形成和组装刚度矩阵的时间由之前的16.6s减少到5.53s。线程方程组的求解,由于改进了求解方法,求解时间从21.7s减少到7.3s。以下是分别采用2进程,4进程,8进程,10进程和12进程计算12.5w单元的计算时长对比:
在这台CPU为AMD3900x,12核的机器上,进程数为10的时候计算时间最短,为17.08s。此时单元已经多到几乎看不清,采用MPI版本的HanFem计算时间如下:组装刚度矩阵43s,线性方程组求解时间118s,总求解时间306s。这相对于之前的无MPI的版本组装刚度矩阵236s,线性方程组求解412s,总求解时间1889s有了显著性地提高。总体求解效率提高了6倍!当然,自然还是无法比得上abaqus的总求解时间2min,但这已经在靠近了。