我想知道如何在多前稀疏分解算法中使用 BLAS 3 级操作。据我了解,算法进行如下:
对于每一行/列对,组装与其非零条目对应的密集矩阵。将此矩阵写为
分解这个矩阵的第一行/列,
将得到添加到 s 中,以便稍后在分解中用于行/列对。
这些步骤中的每一个都操作,因此无法使用 BLAS3 操作来完成。为了解决这个问题,必须同时阻止几个分解步骤(步骤 2.),但我想知道这种方法与超节点方法有何不同。
我想知道如何在多前稀疏分解算法中使用 BLAS 3 级操作。据我了解,算法进行如下:
对于每一行/列对,组装与其非零条目对应的密集矩阵。将此矩阵写为
分解这个矩阵的第一行/列,
将得到添加到 s 中,以便稍后在分解中用于行/列对。
这些步骤中的每一个都操作,因此无法使用 BLAS3 操作来完成。为了解决这个问题,必须同时阻止几个分解步骤(步骤 2.),但我想知道这种方法与超节点方法有何不同。
你基本上已经回答了你自己的问题。要在稀疏矩阵分解中利用 BLAS3 例程(例如 dgemm),您必须识别超级节点,然后将它们作为密集块进行操作。
确实没有可以称为超节点方法的单一分解方法。现代左视代码(例如 SuperLU)和多前代码(例如 UMFPACK)都在超级节点上运行。
文献中使用的命名法具有误导性。超节点和多前沿方法的高性能实现都在超节点上运行,即多列而不是单列。两种方法之间的区别在于它们如何传播舒尔补码:当超节点方法处理列(或超节点)时,它采用列并使用列. 因此,超节点方法的更准确名称是“左视”。另一方面,多前沿方法对 Schur 补集进行了一些更复杂的簿记,这类似于(但不同于)右视因式分解方法。