线性方程组求解算法:共轭梯度法与稀疏矩阵Cholesky分解
1. 共轭梯度法(Conjugate Gradient Method)
1.1 并行共轭梯度法的分块分布实现
并行共轭梯度法的实现需要考虑数据的分布方式,具体步骤如下:
1. 向量重分布 :在开始第 $k$ 次迭代计算之前,需将上一步计算得到的向量 $d_k$ 从第 $k - 1$ 步的分块分布重新分布为第 $k$ 步所需的复制分布,可通过多播操作实现。
2. 矩阵 - 向量乘法 :矩阵 - 向量乘法 $w_k = Ad_k$ 采用矩阵 $A$ 的行分块分布实现。由于 $d_k$ 已复制,无需额外通信,结果向量 $w_k$ 以分块方式分布。
3. 标量积计算 :标量积 $d_k^T w_k$ 采用相同的分块分布并行计算。每个处理器计算其本地向量的局部标量积,最终标量积由根处理器通过单累积操作(以加法为归约操作)计算得出,根处理器拥有最终结果 $\alpha_k$ 并通过单播操作将其发送给其他所有处理器。
4. axpy 操作 :由于每个处理器都已知标量值 $\alpha_k$,因此 axpy 操作 $x_{k+1} = x_k + \alpha_kd_k$ 可并行进行,无需额外通信。每个处理器在本地执行算术运算,向量 $x_{k+1}$ 以分块方式分布。
5. 另一个 axpy 操作 :axpy 操作 $g_{k+1} = g_k + \alpha_kw_k$ 的计算与步骤 4 类似,结果向量 $g
订阅专栏 解锁全文
80



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



