首页/文章/ 详情

技术分享︱大型稀疏线性方程组求解技术——工业仿真的底层核心

1年前浏览2935

一、背景

    在工业仿真领域,对各种现实世界的问题进行数值模拟时,如流体动力学分析、电磁场仿真、结构力学应力应变分析等,其控制方程通常是偏微分方程组,在经过不同方法的隐式离散之后最终都可转化为大型稀疏线性方程组。随着人们对计算精度要求的不断提高,方程组的阶数也从上千阶、几十万阶提高到百万、千万阶甚至更高,所需的计算量以及存储需求也随之迅速膨胀。根据一般经验,方程组求解时间会占总计算时间的70%以上,往往是整个计算过程中的性能瓶颈。如果说求解器是工业CAE软件的核心模块,那么大型稀疏线性方程组的求解技术将毫无疑问是底层求解器的核心。   

大型稀疏线性方程组求解技术——工业仿真的底层核心的图1   

NASA翼型网格经过离散得到的稀疏矩阵(素材来源于网络)    

二、方法

    众所周知,稀疏线性方程组的求解方法可以分为直接法和迭代法 ,两类方法各有优劣,特点比较如下:

    迭代法[1]:   

  1. 对于不同类型稀疏矩阵表现差异较大,存在收敛性与收敛速度问题,催生了许多预处理技术(Preconditioners);

  2. 对原矩阵的编辑很少,SpMV(Sparse matrix-vector multiplication)是其核心运算;

  3. 内存需求小,求解速度较快,算法复杂度低;

  4. 较易实现并行化。

    直接法[2]:   

  1. 通用、稳定;通过前后处理,能够保证计算的收敛性与精度;

  2. 对原矩阵的编辑多(分解、排序、缩放等);

  3. 内存需求大,求解速度慢,算法复杂度更高;

  4. 并行度有限。


   其中迭代法的种类很多,可以分为定常(Stationary)迭代法与非定常迭代法[3]。经典的定常迭代法有Jacobi迭代法、Gauss-Seidel迭代法、SOR迭代法等,这些方法均可基于矩阵分裂推导得到;而在数值模拟中,非定常迭代法则显得更加重要,常见的有共轭梯度法(Conjugate Gradient CG)、广义最小残量方法(Generalized Minimal Residual GMRES)、稳定双共轭梯度法(Biconjugate Gradient Stabilized Bi-CGSTAB)等,这些算法都属于Krylov子空间方法。 如今高性能共轭梯度(HPCG)测试包已成为国际上评测超级计算机性能的主要工具[4],Krylov子空间方法也被评为20世纪最伟大的十大算法之一[5]。 还有一些迭代算法则比较特殊,它们基于特殊结构和性质,例如我们耳熟能详的多重网格(Multigrid MG)方法,它更多地被称为数值计算领域中一种加速迭代收敛的技术,而不仅仅是一种单纯的算法。   


  

大型稀疏线性方程组求解技术——工业仿真的底层核心的图2  

2014-2021年HPCG性能评测结果对比(素材来源于网络)   

  

    直接法的基础是矩阵的分解,常见的分解形式有LU分解、Cholesky分解、QR分解等。稀疏线性方程组的两类常见直接求解算法分别为超节点(Supernodal)方法和多波前(Multifrontal)法,其主要思想是将完整的稀疏矩阵的分解任务转化成许多个相对稠密的子矩阵的分解任务,任务间的依赖关系由消去树(Elimination tree)或其他类似的数据结构来确定。直接法的求解步骤通常分为矩阵重排、符号分解、数值分解与回代求解四个部分。   

大型稀疏线性方程组求解技术——工业仿真的底层核心的图3

一个稀疏矩阵与其对应的消去树(来自文献6)    


三、挑战

    当前,国产超级计算机的峰值性能已达每秒十亿亿次量级,不久便将进入百亿亿次(E级)计算时代,我国的神威E级计算机和天河E级计算机已经蓄势待发。这些国际领先的超级计算机为我国科学与工程计算应用迈进超大规模计算时代、实现更高精细度的数值模拟提供了强力支撑。然而,超大规模计算也给高实用性与高性能的大型稀疏线性方程组求解的算法设计与优化带来了巨大挑战。

1.高实用

   当前,国产超级计算机的峰值性能已达每秒十亿亿次量级,不久便将进入百亿亿次(E级)计算时代,我国的神威E级计算机和天河E级计算机已经蓄势待发。这些国际领先的超级计算机为我国科学与工程计算应用迈进超大规模计算时代、实现更高精细度的数值模拟提供了强力支撑。然而,超大规模计算也给高实用性与高性能的大型稀疏线性方程组求解的算法设计与优化带来了巨大挑战。    

大型稀疏线性方程组求解技术——工业仿真的底层核心的图4

以SiP封装芯片的电磁-热-力耦合数值模拟为例,其稀疏矩阵具有明显的病态特征(来自文献7)

 

2.高性能

       随着计算机硬件性能的提升,超级计算机呈现 “多级嵌套并行、异构众核加速” 的复杂体系结构特征,会导致大型稀疏线性方程组求解器的实现效率急剧下降。从下图也可以发现,随着高性能计算机系统变得更加复杂,特别是众核架构采用后,在每一代世界性能最为强大的超级计算机上,应用的实际求解能力变得更加低效,即解决问题时间(time-to-solution)变得越来越长。如何设计能 匹配机器体系结构特征 的算法与性能优化技术,是大型稀疏线性方程组求解技术以及其他科学计算核心算法中当前亟待解决的关键问题。  

      

大型稀疏线性方程组求解技术——工业仿真的底层核心的图5

解决问题时间与超级计算机性能趋势对比


    对于大规模稀疏线性方程组,原有串行和小规模并行模式下的数据结构和算法容易导致并行求解性能低下或失败。在分布式并行层面,需要解决以下几个问题:一是在数据和任务分解方面,如何设计良好的负载均衡策略、稀疏矩阵的高效存储格式以及计算通信重叠等优化策略;二是在负载均衡的前提下,如何设计以尽力避免节点间的通信;三是在内在串行特性导致并行化困难的算法方面,如何改进数据的分布方式以增加并行性。


    在共享内存环境中,稀疏线性方程组求解算法的可扩展性问题也需要特别关注。因为现代多核/众核处理器上的核数在可预见的未来也将越多,在单个CPU上封装数十甚至上百个有较强处理能力的核心,或是在GPU上封装成千上万个轻量级处理单元将变得非常普遍。如何在这种共享内存节点上实现细粒度的并行仍然是很有挑战的研究内容。  

大型稀疏线性方程组求解技术——工业仿真的底层核心的图6    

  左图:AMD霄龙CPU,64核128线程, 右图:英伟达Hopper架构GPU,1.8万核心  


四、我们的探索——UNAP

    面对来自“应用与机器”的双重挑战,神工坊团队与国产异构众核平台体系架构紧密耦合,发展了一套大型稀疏线性方程组求解库UNAP。该求解库是早期应基于非结构网格的仿真需求而开发的,其全称为“UNstructured Algebra Package”。


    为了解决高实用性的挑战,UNAP结合异构众核处理器多级并行的特点和稀疏矩阵迭代解法的需求,初步探索了各种预处理方法在众核异构平台上的并行实现技术。UNAP已实现PCG、PBiCGStab、GMRES等Krylov子空间方法以及AMG代数多重网格求解器,预处理器包含Jacobi、DIC、DILU等,未来还将开发直接求解模块,以满足来自各领域的复杂应用需求。


    为了达到高性能的目标,UNAP根据国产超算的异构特点,结合其处理器的多级缓冲区,实现了计算/通信混合的并行迭代算法;由于迭代算法的并发度天然较高,UNAP主要通过算法调整、浮点运算替换内存访问、通信同步等手段[9],充分利用了申威主从众核浮点计算性能高而带宽受限的特点,且通过增加计算比例降低了全局集 合通信代价。在共享内存层面,UNAP还可以调用太湖之光超级计算机上的加速工具套件UNAT和向量计算加速库swArrays,充分发挥出从核阵列的计算能力,达到进一步的性能提升。  


大型稀疏线性方程组求解技术——工业仿真的底层核心的图7    

代数求解库UNAP的组织架构  


    UNAP的整体结构如上图所示, 底层并行环境主要包含对“神威·太湖之光”超级计算机申威众核异构芯片SW26010的从核并行计算支持和普通的进程间MPI层级并行支持。采用以容器模板为核心的架构体系, 基本容器层主要包含Vector分布式向量容器以及Matrix分布式矩阵容器。在容器层向下可调用向量计算加速库和非结构计算加速库,实现在国产申威众核芯片上的高效并行,同时,向上可扩展预条件子、迭代解法以及直接解法。这种架构可以将元素的内部处理通过模板泛化,从而降低求解算法实现的复杂度,也具有较好的 可移植性 ,易于兼容x86-CPU平台。核心的代数求解器模块包含了Krylov子空间迭代求解器、预条件子、代数多重网格求解器以及开发中的直接求解模块。  

几个案例说明UNAP的应用情况:

  •  发动机燃烧室大涡模拟: 在某航空发动机全环燃烧室的大涡模拟中,网格量达10亿,采用UNAP作为核心求解模块后,最终的并行规模达到1.6万进程,稀疏线性方程组求解部分加速达到20倍,收敛速度显著提升。

  •  船舶水动力学应用: 在某水动力学软件中,通过UNAP的接入(主要使用了求解压力和压力修正方程的   代数多重网格算法 和求解速度等方程 的预条件稳定双共轭梯度法 ),获得了在代数求解过程中的自动多级并行能力,在神威·太湖之光超级计算机上完成了千万级网格对标算例计算, 并行规模达到万核级别,相对百进程 并行效率不低于50% ,经测试与商业软件FLUENT相当。

  •  电机设备电磁场分析: 在某公司核心求解器向神威平台的移植部署中,采用UNAP代替原有直接求解库,进行了网格量为千万级的电机模型有限元算例并行计算测试,并对比了替换前后算例的节点磁通密度计算结果,UNAP表现良好。

一个典型算例展示UNAP的功能与性能:     

  •  算例 : 方腔驱动流,不可压,上壁面滑移速度为1,其他为固壁边界,方腔的边长为1,雷诺数100。

  •  并行计算结果: 以4进程为例,下图给出了方腔在各个进程的分割情况,流线图中可以清楚看到主涡和二次涡。

大型稀疏线性方程组求解技术——工业仿真的底层核心的图8   

方腔驱动流的流线图    

   

简单的并行计算效率测试:            

  •  强扩展性测试:


    固定算例网格整体求解规模,通过比较不同并行核数下的计算时间可获得 强扩展性 并行计算效率。本测试采用的网格规模数量为2千万,网格类型为六面体,进程数量分别为64、256、1024,并行核数规模分别为4160、16640和66560,统计时间为前20步计算时间。      

大型稀疏线性方程组求解技术——工业仿真的底层核心的图9


  •  弱扩展性测试:


    固定每个进程上的网格规模,通过比较不同并行核数下的计算时间来获得 弱扩展性 并行计算效率。本测试采用的网格规模数量分别为2千万、4千万、8千万,网格类型为六面体,进程数量分别为64进程、128进程和256进程,并行核数规模分别为4160、16640和66560,单个进程网格数量约为31.25万,统计时间为前20步计算时间。(本文作者:赵程鹏)

大型稀疏线性方程组求解技术——工业仿真的底层核心的图10

    



参考文献:
[1] Saad Y. Iterative methods for sparse linear systems[M]. Society for Industrial and Applied Mathematics, 2003.
[2] Davis T A, Rajamanickam S, Sid-Lakhdar W M. A survey of direct methods for sparse linear systems[J]. Acta Numerica, 2016, 25: 383-566.
[3] Barrett R, Berry M, Chan T F, et al. Templates for the solution of linear systems: building blocks for iterative methods[M]. Society for Industrial and Applied Mathematics, 1994.
[4] Marjanović V, Gracia J, Glass C W. Performance modeling of the HPCG benchmark[C]//International Workshop on Performance Modeling, Benchmarking and Simulation of High Performance Computer Systems. Springer, Cham, 2014: 172-192.
[5] Cipra B A. The best of the 20th century: Editors name top 10 algorithms[J]. SIAM news, 2000, 33(4): 1-2.
[6] Gupta A, Karypis G, Kumar V. Highly scalable parallel algorithms for sparse matrix factorization[J]. IEEE Transactions on Parallel and Distributed systems, 1997, 8(5): 502-520.
[7] Wang W, Liu Y, Zhao Z, et al. Parallel Multiphysics Simulation of Package Systems Using an Efficient Domain Decomposition Method[J]. Electronics, 2021, 10(2): 158.
[8] 刘伟峰. 高可扩展, 高性能和高实用的稀疏矩阵计算研究进展与挑战[J]. 数值计算与计算机应用, 2020, 41(4): 259.
[9] GU H, REN H U, LIU C, et al. An optimized Chebyshev smoother In GAMG solver of openfoam on sunway Taihulight supercomputer[C]//The 13th OpenFOAM Workshop. 2018.



HPC结构基础流体基础几何处理网格处理后处理分析二次开发云计算求解技术理论科普创新方法
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-08-06
最近编辑:1年前
神工坊(高性能仿真)
神工坊,提供高性能仿真解决方案...
获赞 499粉丝 73文章 182课程 13
点赞
收藏
作者推荐

技术分享|结构网格自适应(SAMR)——一种高效的多尺度问题解决方案

01背景与问题网格对于数值模拟十分重要。基于网格的离散是数值计算中最主流的空间离散方式,而网格的类型和质量直接影响计算的精度和效率。一般情况下,网格尺寸越小,数值离散引入的截断误差越小。但除此以外,网格的正交性、斜率,甚至与物理场特征的一致性也都或多或少会影响数值计算的误差。另一方面,网格拓扑也决定了数值计算程序底层数据结构,从而很大程度上决定了计算的效率。例如,根据一般经验,结构化网格计算效率约是非结构化网格的3倍。当然,除了以上因素,网格生成的难易程度也是影响实践中网格选择的重要因素。一些常用的网格形式列举如下:各种网格形式(素材来源于网络)随着数值模拟精度和效率要求不断提高,对网格生成的效率,以及网格相关计算精度和计算效率方面提出了更多挑战。根据笔者视角来看,最典型问题包括网格生成效率低、多尺度特征捕捉和先进硬件平台适配等问题。问题一:网格生成效率低手动生成高质量网格一直是非常费时费力的工作。美国工业软件公司ENVENIO发布了一份针对仿真行业的调查报告《TheCFDSurvey》,该调查采访了28个国家的116位仿真从业者,涉及不同规模的公司。调查结果中显示(如下图),不论规模大小,所有的公司都认为在网格生成上花费了太长的时间。一方面,随着计算机算力提升,人力成本相对越来越昂贵。另一方面,数值模拟精度要求越来越高,所需网格数量逐渐增长到超过人工可控的规模。因此,网格生成的自动化、大规模化、并行化是网格技术发展的大势所趋。仿真行业的调查结果[1]问题二:多尺度特征捕捉物理问题天然具有多尺度特性,精确捕捉关键跨尺度的特征对于实现高保真模拟至关重要。以流体力学为例,超声速空气流动中的激波、燃烧反应流中的火焰面、多相流中的两相界面以及几何曲率极大的区域等,都是对应场景中的关键跨尺度特征。因此,为了实现高保真模拟,同时保证计算量在可接受范围,对计算域进行精确而有针对性的网格加密是非常重要的。正如,流体力学模拟中经常对边界层和激波区域进行网格加密,结构力学模拟中经常对应力集中区域和断裂破坏点进行加密。不幸的是,在实际问题模拟中,大多数情况下无法预先判断跨尺度特征出现的区域和时机。在此情况下,必然要求网格具有跟随物理场变化而自适应加密的能力,进而引发网格加密规则等功能性问题,以及并行情况下动态负载均衡等性能问题。广泛存在的多尺度流动现象(素材来源于网络)问题三:先进处理器适配诚然,计算机计算能力的提升,对数值计算的精度和效率提升具有决定性作用。但随着半导体工业进入后摩尔定律时代,处理器单核心性能提升受限,处理体系架构从单核转向多核,再进一步转向众核。对基于传统网格类型的数值计算程序,特别是非结构网格程序,体系架构的复杂化为其计算效率的发挥设置了诸多障碍。例如,复杂的编程模型要求对传统网格体系下的数据结构和算法进行重新设计,工作量十分繁巨。再如,众核处理器访存带宽提升相对浮点性能提升而言存在严重滞后,使得传统网格下的数值计算程序严重访存受限。众核处理器(GPU)日益严峻的“访存墙”[5]02SAMR特点和优势SAMR的全称是(block)StructuredAdaptiveMeshRefinement(结构网格自适应)[2][3],是基于结构化网格块的自适应加密体系的通称。提到SAMR就不得不提自适应加密技术。实际上,自适应加密技术AMR(AdaptiveMeshRefinement)与网格类型并没有绑定关系,例如在非结构网格中也可以通过网格重构进行自适应加密。在数值计算实践中,基于笛卡尔网格(直角坐标网格)自适应加密易于生成且可以适应复杂几何,因此这种技术组合十分常见。狭义的AMR通常就是指代笛卡尔网格自适应加密,下文中不再加以区分。(笛卡尔)AMR网格示例(素材来源于网络)SAMR是AMR的一个特例,其主要的特点即加密单元是结构化的网格块。SAMR目前主要采用两种加密结构:第一种是Tree-based树型结构[4],即网格按照空间多叉树递归进行加密(下图左);第二种是Patch-based多层分块结构,即按照多级网格叠加进行加密(下图右)。Tree-based加密数据结构更加优美,一般网格块具有相同的分辨率,因此在算法实现上更加整洁和高效。Patch-based加密区域更加灵活,例如不用受到树形加密规则的约束,以及可以针对加密区域大小使用大小不同的网格块。Tree-basedPatch-based(素材来源于网络)SAMR网格具有局部结构化特点,同时能够通过高效的自适应能力捕捉多尺度特征。虽然笛卡尔形式网格在精确刻画边界上有一定不足,但是通过浸没边界法等非贴体网络边界模型也可以较好地实现边界条件。实际上,SAMR也完全可以使用曲线网格和贴体边界,只不过处理起来相对复杂一些。正因为SAMR相对其它网格有其独特性,在某些方面有其突出的优势,主要包括以下几个方面。优势一:网格自动生成主要采用笛卡尔网格的SAMR技术,网格结构比较简单,天然适合自动生成网格。几何特别复杂或没有水密性(存在空洞或毛刺)情况下,通过一定的处理,使用SAMR技术也能成功生成网格。这一特性,可以让前处理过程中的几何简化和几何清理工作量大大降低,从而进一步降低人力成本。在边界处,通过脱体网格在边界处加密和采用合适的边界模型,也可以得到较好的精度。优势二:高效自适应加密主要采用笛卡尔网格的SAMR,网格可以非常集约地集中在需要加密的位置,且自适应加密或粗化非常直接和便于实施。相对于传统结构化网格,可以更高效地利用网格,而不必按维度进行加密。相对于非结构网格,SAMR在保持局部结构化优势前提下,利用非常直接的等分和合并规则快速地实现网格重构,比非结构网格局部重构更为高效。优势三:更高的计算效率由于SAMR具有局部结构化特征,因此可以在适应复杂几何前提下,保证局部能够达到传统结构化网格的计算效率。更进一步,采用笛卡尔网格的SAMR,相对一般曲线结构网格,可以大大节约几何描述数据,对于缓解众核处理器内存带宽瓶颈十分有利。再次,SAMR可以在不影响数值计算精度的条件下,通过调整网格块分辨率,适应包括众核处理器在内的不同平台硬件配置(如缓存行长度、缓存大小等),以充分发挥硬件性能。在SAMR体系下,算法经过特殊设计也可以提升计算效率,例如在不同的加密层级采用不同的时间推进尺度,从而大大节约计算量。SAMR适配神威·太湖之光处理器架构体系03我们的SAMR框架神工坊团队发展了一套三维SAMR框架。该框架是一个基于octree[4]的多层分块(block)网格框架软件,并在此基础之上构建了多层分块数据容器。SAMR框架封装了八叉树多层分块网格的复杂算法和并行细节,只暴露简单的功能接口,基于这些接口可快速构建求解器。SAMR框架的主要功能与特性主要包括:复杂几何网格生成、网格自适应加密、动态逐层负载均衡、多层分块数据容器、迭代器与从核迭代器。SAMR框架网格切面示意图功能特性一:网格自动生成根据输入的几何模型(目前支持STL格式)文件,本框架可自动生成octree-block网格块。在此基础之上,根据octree-block网格块自动生成block内部网格。根据所采用的边界模型,可以选择性地对网格进行体素化,即对网格单元相对封闭几何表面的内外关系进行标记(对于非封闭几何(如平板),或者采用浸没边界条件,体素化过程并不是必须的)。STL几何模型功能特性二:网格自适应通过选取计算域物理场某个特征量作为加密依据,SAMR框架可以自动根据加密依据加密或粗化网格。例如在流动模拟中,选取速度梯度作为加密依据,速度梯度大则代表流场变化剧烈,通过加密该区域可以更精确解析流场。跟随特征的网格自适应示意图功能特性三:动态逐层负载均衡自适应网格的计算负载必然是动态变化的,而SAMR体系上多采用多时间尺度推进算法,因此动态逐层负载均衡是保证效率必备的功能。区别于一般负载均衡策略,逐层特指各加密层级必须都是负载均衡的。下图中,左图呈现的是非逐层的负载均衡,右图呈现的是逐层负载均衡。本框架针对负载均衡功能,采用了优化的任务分割策略和数据传输策略,实现了高效的动态负载均衡。一般负载均衡与逐层负载均衡策略的差异功能特性四:友好开发接口SAMR框架通过容器化封装,将网格、场和计算域等数据对象进行了容器化实现,屏蔽了底层复杂的众核并行与MPI分布式并行相关数据结构和算法。用户通过使用容器和容器提供的函数式编程接口(函数指针+迭代器),可以在SAMR框架上快速开发所需的物理模型或求解算法。算子定义示意图功能特性五:众核加速众核是当前高性能处理器普遍采用的架构体系,SAMR框架设计充分考虑了众核二级并行加速需求。目前,SAMR框架在典型应用测试中,基于国产神威·太湖之光超级计算机,实现了核心热点的20倍左右众核加速。未来,SAMR框架将考虑兼容GPU(CUDA)等其它平台。04一个应用例子为了充分验证当前框架的功能特性,我们选取了潜艇标模suboff绕流算例进行验证。该算例主要采用格子Boltzmann方法(LBM),基本调用了框架所有主要功能。算例网格量为2亿,并行规模为2000进程,LBM求解器,Re为40000。网格最大层数为8,自适应间隔50。2亿网格在2000进程下的自动生成过程仅不到十分钟,初始网格如图,图中显示为网格块(每个网格块为10*10*10的网格)。初始网格块模拟结果如下图所示。可以看到suboff周围以及尾迹区被有效加密,若使用均匀网格,要达到同等的计算精度,网格量将达到百亿级别。目前SAMR框架的功能基本实现,下一步将进行功能完善和性能优化工作。(本文作者:高飞)suboff流场局部参考文献[1]https://zhuanlan.zhihu.com/p/47164365[2]DubeyA,AlmgrenA,BellJ,etal.Asurveyofhighlevelframeworksinblock-structuredadaptivemeshrefinementpackages[J].JournalofParallel&DistributedComputing,2014,74(12):3217-3227.[3]SchornbaumF,URüde.Extreme-ScaleBlock-StructuredAdaptiveMeshRefinement[J].SIAMJournalonScientificComputing,2017,40(3).[4]BursteddeC,WilcoxLC,GhattasO.p4est:ScalableAlgorithmsforParallelAdaptiveMeshRefinementonForestsofOctrees[J].SiamJournalonScientificComputing,2011,33(3):1103-1133.[5]https://medium.com/riselab/ai-and-memory-wall-2cb4265cb0b8

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈