线性方程组算法中的稀疏矩阵Cholesky分解及相关实现
在解决线性方程组的算法中,稀疏矩阵的Cholesky分解是一个重要的研究领域。本文将详细介绍稀疏矩阵Cholesky分解的存储方案、并行实现以及相关的练习题。
1. 稀疏矩阵的存储方案
对于稀疏矩阵的存储,我们引入了一些额外的数组来实现更紧凑的存储方案。
- StartRow数组 :StartRow[j]存储列j中第一个非零元素所在行的Row数组的索引,即Row[StartRow[j]] = j ,因为ljj是第一个非零元素。对于同一超级节点中的不同列,其行索引存储在Row数组的连续块中,且这些块会根据列的稀疏结构重叠。
- Supernode数组 :用于管理超级节点。如果列j是超级节点J的第一列,那么Supernode[j]存储超级节点J的列数。
通过这些数组,我们可以更高效地存储稀疏矩阵的信息,并且可以快速访问集合Struct(L∗j):
Struct(L∗j) = {Row[StartRow[j]+i] | 0 ≤ i ≤ StartColumn[j + 1] - StartColumn[j - 1]}
2. 稀疏Cholesky分解的并行实现
在共享内存机器上进行稀疏Cholesky分解的并行实现时,有多种并行源可供利用,包括单操作内的细粒度并行性以及左看、右看和超级节点算法中的列导向并行性。此外,矩阵的稀疏结构还可能带来额外的并行性。
2.1 消除树
为了描述不同列之间的数据依赖关系,我们引入了消除树。对于每列j(0 ≤
超级会员免费看
订阅专栏 解锁全文
64

被折叠的 条评论
为什么被折叠?



