稀疏线性方程组求解技术——超节点法(Supernodal)简介

一、介绍

直接法的基础是矩阵的分解,常见的分解形式有LU分解、Cholesky分解、LDL分解等。

直接法通过将A矩阵分解成两个或多个因子的乘积,使得原方程组转化为若干个较容易求解的子问题。例如LU分解A=LU,其中L是单位下三角矩阵,U是上三角矩阵。原方程转化为LUx=b,可以通过依次求解Ly=bUx=y两个三角方程组来得到原方程的解

稀疏线性方程组的两类常见直接求解算法分别为超节点(Supernodal)方法和多波前(Multifrontal)法,其主要思想是将完整的稀疏矩阵的分解任务转化成许多个相对稠密的子矩阵的分解任务,任务间的依赖关系由消去树(Elimination tree)或其他类似的数据结构来确定。

超节点:人们在求解实际大型稀疏矩阵时,发现L因子中大量存在一种特殊结构——连续若干列(L的列或U的行),它们对角块以下的非零元结构是一样的,我们说这些列形成了一个超节点。通过在对角块的上三角部分人为补零,可以使一个超节点的元素在内存中形成一个稠密矩阵。分解时可以利用稠密矩阵操作来提高计算效率。

图: Four possible types of unsymmetric supernodes. 

二、超节点解法的步骤

(1). 分析(Analyze)

1. Matching重排 

  • 过程
    • 通过图论中的匹配算法(如最大匹配)对稀疏矩阵的非零元素进行重排,以减少后续分解过程中产生的填充(fill-in)元素。
  • 作用
    • 减少填充元素的数量,提高数值分解的稀疏性,从而降低存储需求和计算复杂度。

2. Fill-in reducing重排(Ordering)

  • 过程
    • 在确定了匹配后,进一步调整矩阵的行和列,以最小化填充元素的数量。这可以通过使用列重排和行重排技术来实现。
  • 作用
    • 通过优化矩阵结构,进一步减少在分解时产生的填充元素,提高计算效率。

3. 构建消去树

  • 过程
    • 根据重排后的矩阵结构,建立消去树。树的每个节点代表一个超节点,边表示超节点之间的依赖关系。
  • 作用
    • 消去树为后续的数值分解和求解提供了清晰的依赖关系,有助于管理计算顺序。

4. 识别超节点+划分超节点

  • 过程
    • 在消去树中,合并相邻的非零元素,形成超节点。这些超节点是原矩阵的子矩阵,通常是稠密的。
    • 融合过小的超节点、拆分过大的超节点
  • 作用
    • 通过将稀疏矩阵转化为超节点,减少了计算的复杂性,使后续的数值分解过程更加高效。

5. 符号分解

  • 过程
    • 在分析阶段,执行符号分解以确定在数值分解过程中将生成的非零元素的位置。这一过程不涉及实际的数值计算。
  • 作用
    • 通过预测填充模式,能够有效地规划存储结构,从而优化内存使用。

(2). 数值分解(Factorize)

过程:
  • LU分解

    • 对每个超节点进行LU分解(或其他适合的分解方法),将其转换为上三角矩阵和下三角矩阵的乘积。

(3). 三角求解(Backsolve)

依次求解Ly=bUx=y两个三角方程组

过程:
  • 从叶子节点开始回代

    • 从消去树的叶子节点开始,利用每个超节点的分解结果进行回代计算,求解相应的未知数。
  • 逐层向上求解

    • 每处理完一个超节点,更新当前解向量,逐层向上处理,直至根节点。
  • 确保依赖关系的满足

    • 在回代过程中,确保按照消去树中确定的顺序进行,避免因依赖关系不满足而导致的计算错误。

三、著名的直接法求解器

著名的直接法求解器有Pardiso和Mumps。

(1)Pardiso

PARDISO(Parallel Direct Solver)是一种并行直接求解器,用于解决大型稀疏对称或非对称线性方程组。它最初由俄罗斯科学院院士Andrei Tikhonov和同事在1990年代开发。瑞士的Olaf Schenk教授也对PARDISO算法进行了重要的研究和开发工作。后来,该算法被Intel收购,并由Intel的团队进行了大规模的改进和优化,Intel的Pardiso是基于PARDISO的2006版本演化的。

Panua Technologies

(2)Mumps

MUMPS(Multifrontal Massively Parallel Solver)是一个基于多波前法的直接求解库,其具有良好的性能和稳定性,在商业软件中也不乏见到直接求解调用MUMPS。其可以用于求解对称和非对称矩阵,在内存不够的时候采用out of core进行求解,并行方式以分布式MPI为主,在每一个MPI进程中又支持openmp共享内存并行。Mumps主要由法国的科研人员开发。

MUMPS : a parallel sparse direct solver

(3)SuperLU

SuperLU: Home Page

学习资料:

A Supernodal Approach to Sparse Partial Pivoting,1999

https://zhuanlan.zhihu.com/p/60140808

https://zhuanlan.zhihu.com/p/61438643

https://zhuanlan.zhihu.com/p/94617545

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值