并行编程模型与信息交换技术解析
1. 数据分布模式
在并行编程中,数据分布是一个关键环节,它直接影响着程序的性能和可扩展性。常见的数据分布模式有循环棋盘分布、块 - 循环棋盘分布和参数化数据分布。
1.1 循环棋盘分布
循环棋盘分布是一种将数组元素分配到处理器的方式。对于二维数组,当数组的维度 (n_1) 和 (n_2) 分别是处理器网格维度 (p_1) 和 (p_2) 的倍数时,位置为 ((i, j)) 的处理器拥有所有满足 (k = i + s \cdot p_1) 和 (l = j + t \cdot p_2)(其中 (0 \leq s < n_1/p_1) 且 (0 \leq t < n_2/p_2))的数组元素 ((k, l))。也可以通过构建大小为 (p_1 \times p_2) 的块,并将每个块的元素 ((i, j)) 映射到网格中位置为 ((i, j)) 的处理器来描述。当 (n_1) 或 (n_2) 不是 (p_1) 或 (p_2) 的倍数时,处理方式与一维情况类似。
1.2 块 - 循环棋盘分布
块 - 循环棋盘分布将大小为 (b_1 \times b_2) 的块在两个维度上循环分配给处理器。数组元素 ((m, n)) 属于块 ((k, l)),其中 (k = \lceil m/b_1 \rceil) 且 (l = \lceil n/b_2 \rceil)。块 ((k, l)) 被分配到网格位置为 (((k - 1) \bmod p_1 + 1, (l - 1) \bmod p_2 + 1)) 的处理器。循环棋盘分布可以看作是 (b_1 = b_2 = 1) 时块 - 循环分布的特殊情况,而块式棋盘
超级会员免费看
订阅专栏 解锁全文
2583

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



