Oracle® Developer Studio 12.5:性能库用户指南

退出打印视图

更新时间: 2016 年 6 月
 
 

稀疏矩阵

稀疏矩阵通常以所需存储最少的格式来表示。通过利用稀疏性并且不存储零,可以节约大量存储空间。SPSOLVE 和 SuperLU 使用的存储格式是压缩稀疏列 (Compressed Sparse Column, CSC) 格式,也称为 Harwell-Boeing 格式。

CSC 格式表示一个稀疏矩阵,它包含两个整数数组和一个浮点数组。整数数组(colptr 和 rowind)指定稀疏矩阵的非零值的位置,浮点数组(值)用于非零值。

列指针 (colptr) 数组由 n+1 个元素组成,其中 colptr(i) 指向第 i 列的开头,colptr(i+1)-1 指向第 i 列的末尾。行索引 (rowind) 数组包含非零值的行索引。值数组包含相应的非零数值。

由 neqns 方程和 nnz 非零值构成的稀疏矩阵有以下矩阵数据格式:

  • 对称

  • 结构对称

  • 非对称

当前,SuperLU 仅支持非对称矩阵。最有效的数据表示形式通常取决于具体问题。以下各节显示了稀疏矩阵数据格式的示例。

对称稀疏矩阵

对称稀疏矩阵是这样一种矩阵:对于所有 ij,a(i, j) = a(j, i)。 由于此对称性,只有下三角形值需要传递到求解器例程。可根据下三角形确定上三角形。

对称矩阵的示例如下所示。此示例是从 A.George 和 J.W-H.Liu.合著的《Computer Solution of Large Sparse Positive Definite Systems》获得的。

image:对称矩阵

用 CSC 格式表示 A

  • colptr:1、6、7、8、9、10

  • rowind:1、2、3、4、5、2、3、4、5

  • 值:4.0、1.0、2.0、0.5、2.0、0.5、3.0、0.625、16.0

结构对称稀疏矩阵

结构对称稀疏矩阵的非零值的属性为:如果 a(i, j) ≠ 0,那么对于所有 ij,a(j, i) ≠ 0。 对结构对称方程组求解时,必须将整个矩阵传递到求解器例程。

结构对称矩阵的示例如下所示。

image:结构对称矩阵

用 CSC 格式表示 A

  • colptr:1、3、6、7、9

  • rowind:1、2、1、2、4、3、2、4

  • 值:1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0

非对称稀疏矩阵

非对称稀疏矩阵是,对于所有 ij,没有 (i, j) = a(j, i)。矩阵的结构没有明显的模式。对非对称方程组求解时,必须将整个矩阵传递到求解器例程。非对称矩阵的示例如下所示。

image:非对称矩阵

用 CSC 格式表示 A

  • 从 1 开始的索引:

    • colptr:1、6、7、8、9、11

    • rowind:1、2、3、4、5、2、3、4、2、5

    • 值:1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0、9.0、10.0

  • 从 0 开始的索引:

    • colptr:0、5、6、7、8、10

    • rowind:0、1、2、3、4、1、2、3、1、4

    • 值:1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0、9.0、10.0