首页/文章/ 详情

高性能数值计算引擎——节选自《工业软件云战略》

1月前浏览2125

作者:田锋

“踏雪歌者”口述全文
 

编者按:《工业软件云战略》是华为工业软件及工业云CTO、数化工业软件联盟(DISA联盟)秘书长丘水平主编、DISA联盟多位专家共同撰写的一本反映新一代工业软件技术和发展战略的鸿篇巨制,本文为安世亚太专家负责撰写的章节。

章节编号索引 :

  • 第四章 扎到根:工业软件云操作系统,让新一代工业软件生态体系根深叶茂

  • 第三节 工具软件的根:内核引擎技术,使能工业软件超级鲁棒

  • 第五小节 高性能数值计算引擎

    高性能数值计算引擎是工业软件的核心计算模块,提供工业软件所需的矩阵、向量等基础数据结构,定义工业软件底层的数据和接口,通过矩阵向量运算、线性方程组求解、非线性方程组求解、时间离散、最优化以及区域分解等基础算法,实现CAD/CAE软件在结构、流体、电磁以及多物理场耦合等众多仿真领域的建模与计算分析。  

    如果把工业软件比作是一个机器人,那么高性能数值计算引擎就是它的芯片大脑,负责整个工业软件链条中的数值计算与分析。随着科学技术的不断进步,大千世界中的物理现象大都可以用数学物理方程去描述,CAD/CAE等软件设计与建立几何模型与物理模型,通过不同的离散方法得到数学物理方程对应的计算数据,这些数据通过统一的接口读入到高性能数值计算引擎中进行求解计算,得到与之对应的仿真计算结果。

    高性能数值计算引擎作为工业软件的芯片大脑,对不同数值模型的计算能力直接决定了CAD/CAE软件在结构、流体、电磁等众多领域仿真计算的精度和计算效率。单一的算法只是针对某种问题的基础实现,无法满足工业软件对于不同场景的数值计算需求,不具备跨平台下的统一适配与异构并行架构,解决不了复杂模型中出现的奇异和病态矩阵问题,算法的稳定性以及计算精度与效率达不到工程应用的级别。

    高性能数值计算引擎在国外起步较早,已经有很多成熟的商业和开源数值计算引擎在工程领域得到应用,国内对于该引擎中的数值算法都是点对点的科研使用,目前还未出现系统完善的具备可以支持工业软件计算求解的高性能数值计算引擎。

           
    国内外计算引擎的
    发展现状
           
           

    国外的成熟行业仿真软件在数值算法应用领域和解决问题类型方面各有自己的独特优势,其中ANSYS、ABAQUS和COMSOL等几款代表性的大型通用软件在核心数值算法上具备较好的收敛性和稳定性。

    ANSYS的Sparse direct solution提供稀疏矩阵直接法求解,PCG、JCG、ICCG、AMG等迭代法求解大型稀疏矩阵,非线性方程求解的Newton-Raphson Method以及支持非对称求解的Unsymmetric Method,算法支持共享内存和分布式并行。

    ABAQUS具备隐式求解、显示求解和并行求解器,提供Direct Linear equation solver、Iterative Linear equation solver等直接算法,增量法、直接迭代法、Newton-Raphson法、Riks弧长法等非线性算法。

    COMSOL软件集成了MUMPS、PARDISO和SPOOLES等直接法求解,GMERS、FGMRES、BiCGSTAB、CG等迭代法求解器,支持ILU、SOR等多种预条件器。利用ARPACK进行特征值计算,非线性问题的Newton迭代法等。

    国外的数值仿真起步较早,并且随着工业化的不断发展,很多大型的科研院所开发了数值算法的开源库,例如BLAS、LAPACK、Intel MKL、SuperLU、MUMPS、PETSc、Trilinos等,这些开源库在国内外的科研和工程领域得到了广泛地应用。

    BLAS最早发布于1979年,程序用Fortran语言编写,可进行向量和矩阵等基本线性代数操作,是许多数值计算软件库的核心。BLAS库在高性能计算中被广泛应用,由此衍生出大量优化版本,如Intel MKL、AMD ACML、Goto BLAS和ATLAS以及利用GPU计算技术实现的CUBLAS等。

    LAPACK提供了求解线性方程组的矩阵分解(LU、Cholesky、QR、SVD、Schur等)、最小二乘、特征值求解、奇异值问题的函数库,处理稠密矩阵和带状矩阵。Intel MKL是一套高度优化和广泛线程化的数学库,提供C和Fortran接口,在英特尔硬件上具备很好的多线程计算效率。

    Petsc、Trilinos美国国家能源部的开源项目,用于偏微分方程模型的科学应用可扩展(并行)解决方案的开源库,支持MPI和GPU(CUDA&OpenCL)以及混合MPI-GPU并行,包含大量的并行线性和非线性求解器、ODE积分、Tao优化等,支持Fortran、C、C++编程,在结构、流体、声学、材料等领域广泛应用。

    国内的CAD/CAE软件自主工业化程度越来越高,仿真软件在结构、流体、电磁等专业领域获得了较大的进展,计算精度和计算效率有了很大的提高。国产软件在高性能数值计算上取得的长足进步和发展大都得益于第三方开源库优越的计算性能与友好的使用方式,国内的CAE软件在数值计算求解器方面还处在集成开源软件与解决某一特定问题的算法层面,未形成一套完整的支持各学科仿真计算的高性能数值计算引擎,解决大型稀疏矩阵求解、矩阵奇异与病态矩阵、算法稳定性与收敛性以及并行计算与GPU加速等问题。

               
    计算引擎的
    核心技术
               
               
         

    高性能数值计算引擎作为工业软件的计算内核,为CAD/CAE等仿真软件提供底层的基础数据结构和求解算法调用,需要具备支撑数据和算法实现的基础框架、底层的基本数据结构与并行、系统数据I/O与统一接口,以及包含直接法、迭代法、预处理、ODE、特征值求解、函数插值、非线性等核心数值算法,是一个完备的可扩展的工业软件科学计算库。

    1)线性代数基础模块

    线性代数基础库是基于国产硬件的线性代数计算中通用的向量、矩阵数据结构以及基本的运算操作函数集 合,函数根据运算对象不同包含向量的线性运算、矩阵与向量的运算以及矩阵与矩阵的运算。基础库定义标注的函数接口及统一的操作规范,支持单精度浮点数(S)、双精度浮点数(D)、复数(C)和16位复数(Z)等数据类型,可以使用稠密矩阵、带状矩阵、对称矩阵、对称带状矩阵、压缩存储对称矩阵、Hemmitian矩阵、带状Hemmitian矩阵、压缩存储Hemmitian矩阵、三角矩阵、三角带状矩阵以及压缩存储三角矩阵等格式。

    2)并行计算基础模块

    并行基础库针对大规模方程组求解实现矩阵分区、矩阵重排、矩阵组装、线程管理、分布式通信以及异构并行等功能模块,提供支持OpenMP、thread、MPI、CUDA、OpenCL等共享内存、分布式内存与异构并行的编程环境。

    3)数值求解算法

    高性能数值计算引擎的中间层是CAD/CAE等软件计算分析过程的具体算法实现,算法基于底层的基础数据结构,提供统一的接口方式为工业软件直接调用。

    (a)直接法

    直接法包含高斯消去、三角分解、追赶法与多波前法,具备LU分解、Cholesky分解、LDLT分解、QR分解、Schur分解、SVD分解等矩阵分解方法,能够对工业软件仿真问题中的对称、非对称、正定、非正定、稀疏、稠密矩阵进行直接法求解计算。直接法对于内存消耗和占用较大,对于大规模线性方程组得到的系数矩阵,迭代法的适用性和计算效率远远大于直接法。

    (b)迭代法与预处理

    常用的迭代法包含CG、PCG、BICGSTAB、GMRES、FGMERES和QMR等。对于复杂模型产生的病态矩阵,迭代求解方法结合预处理器(SSOR、ILU、GMG、AMG等)对矩阵进行预处理,通过降低矩阵的条件数来提高病态或大规模系数矩阵迭代求解的收敛速度和计算效率。

    (c)特征值求解

    特征值求解器应用在电磁学、机械、结构振动等领域,通过求解方程对应的特征值和特征向量解决模态分析等问题,常用的方法包含QR分解、Lanczos法和Block Lanczos法等。

    (d)非线性求解

    非线性求解器基于牛顿迭代法(线性搜索和信赖域方法),依赖线性求解器实现,解决结构、流体、电磁以及多物理场耦合的非线性方程、材料以及接触等问题,包含Newton、Newton Raphson、Anderson mixing等迭代方法,线性搜索方法以及与非线性迭代计算相关的迭代步数、误差与收敛性等。

    另外,中间算法层还提供区域管理、时间积分、最优化、ODE、函数差值与统计等算法,增加高性能数值计算引擎在工业软件中的通用性。

               
    计算引擎的
    未来发展趋势
               
               
         

    随着仿真技术与计算机硬件的不断发展,每秒十亿亿次的计算机与机群系统出现,数值计算领域的问题趋向于高度非线性与大规模化,高性能计算用来处理工业软件在仿真、建模、计算和渲染等环节中的计算密集型任务。

    1)共享内存

    单一的工作站上通过共享内存方式多线程计算,任意的计算核通过内存的全局地址访问所有内存,利用多个处理器的性能实现工业软件的加速计算。共享内存方式支持CPU端的OpenMP、Pthread与GPU端的OpenCL、CUDA、OpenAcc等编程模式。

    2)分布式并行

    多节点机群通过互联网络进行连接,协同工作完成相同的任务,每个节点只访问本地内存和存储,节点之间的信息交互与节点本身的处理是并行进行的。通过区域分解、节点通信等算法将大规模矩阵计算转化为多个子任务分发给各个节点,分布式并行支持MPI编程模式,可以求解数值仿真的E级计算问题。

    高性能数值计算引擎的未来是基于不断发展的超级计算机硬件高精度、高效率实现超大规模的数值仿真计算,使得工业软件可以高速完成整车、整机等问题的全流程仿真,而不是仅仅停留在子零件、子结构的单点仿真。基础算法层面,需要提高适配国产硬件环境的矩阵向量乘的计算效率,改进大型稀疏矩阵求解的优化算法与自适应,提高奇异矩阵与病态矩阵的计算稳定性等。另外,高性能数值计算的超大规模计算能力需要达到E级甚至更高的计算规模,基于天河一号、天河二号、神威˙太湖之光、济南超算等国家超级计算中心以及曙光、华为等国产硬件生态环境,实现支持不同并行架构体系下的GPU加速、异构并行。   


       
       
               

    作者:田锋

    工业软件深度思考者,北京市综合仿真工程实验室主任,国家产业基础委员会委员、中国力学学会委员、中国机械工程学会委员家。领导开发了精益研发平台、知识工程平台、综合仿真平台、知识云平台及仿真工具等大型工业软件,并在航空航天、船舶、核能、石化、车辆等国家重大工业行业工程中得到应用;主持了国家发展改革委、科技部、北京市工业强基工程、工业互联网相关专项20余项,为百余家企业提供精益研发、知识工程、综合仿真等体系咨询。


    本书介绍了中国工业软件产业发展现状和发展趋势、工业软件自主研发的策略和路线、云时代的工业软件发展方略、工业软件在企业的应用体系的建设,以及在数字化转型和数字孪生体领域的支撑和应用方案;分析了中国工业软件产业发展中存在的各种问题、矛盾和误区,并提出针对性的策略建议和解决方案;针对工业软件中的难点领域,特别是工程仿真和工业研发领域,给出了具体实践经验和方法论。


             

           
           
    视频号《踏雪论坛》                
      看似被卡脖子的是工业软件,其实是数学和物理。                
                 
    来源:数字孪生体实验室
    AbaqusComsol振动非线性通用航空航天船舶核能UM声学材料知识工程数字孪生渲染ANSYS
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2024-08-07
    最近编辑:1月前
    数字孪生体实验室
    围绕数字孪生技术的创新研发,推...
    获赞 444粉丝 360文章 562课程 2
    点赞
    收藏
    作者推荐
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈