分布式内存机器上三角系统求解的新数据分布与多核求解器设计
在计算线性代数领域,求解线性方程组是一项核心任务,特别是对于三角系统和大型稀疏线性系统的求解。本文将介绍两种创新的解决方案,一种是三角矩阵的新数据分布方法,另一种是新的多核求解器设计,旨在提高求解效率和减少内存浪费。
三角矩阵的新数据分布
在分布式内存机器上求解三角系统时,传统的块循环数据布局存在内存浪费的问题。以标准的ScaLAPACK库中的块循环数据布局为例,当处理三角(或对称)矩阵时,大约一半的存储空间被浪费。为了解决这个问题,研究者提出了一种新的数据分布方法。
传统块循环分布的问题
传统的块循环分布在P×Q网格上对矩阵进行划分,每个块Aij被分配到坐标为((i - 1) mod P, (j - 1) mod Q)的进程中。当A是三角矩阵时,只有下(或上)三角被分布,导致大量内存浪费。例如,在2×2矩形进程网格上对下三角矩阵进行块循环分布时,约50%的内存被浪费。
新数据分布的提出
考虑到在可用处理器数量较少(少于九个)或求解右侧项相对较少的三角系统时,块循环分布在P×1网格上的性能表现,研究者提出了一种新的数据分布方法。该方法将下(或上)三角矩阵划分为两部分,块行数为2P。上半部分的块从第一个处理器到最后一个处理器分布,下半部分的块则从下往上分布。具体来说,新的数据分布定义为:
[
loc(A_{ij}) =
\begin{cases}
(i - 1, 0) & \text{for } i = 1, \ldots, P \
(2P - i, 0) & \text{for } i =
超级会员免费看
订阅专栏 解锁全文
15

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



