带状划分的矩阵转置
划分:
An×n分成p个(n/p)×n大小的带
P0 P1
n
P2 P3 图9.7
算法:
①Pi有p-1个(n/p)×(n/p)大小子块发送到另外p-1个处理器中; ②每个处理器本地交换相应的元素
棋盘划分的矩阵转置
仅讨论网格块棋盘划分的矩阵转置算法,循环棋盘划分和 映射同样考虑即可。下面分两种不同的网络互联结构分别 讨论:二维网格互联结构、超立方体结构。
P8
(5,0) (6,0) (5,1) (5,2) (6,1) (6,2)
矩阵的转置
转置(Transposition)是基本的矩阵运算。一个矩阵A的转 置记为 AT,它是将矩阵A的元素延对角线互换而得到的。 矩阵转置的串行算法很简单,只需要把上三角(不包括对 角线)的元素循环一遍,每个元素与其对称位置的元素交 换位置即可,整个过程只需要一个单位的多余空间,时间 复杂度为O(n2)。下面讨论在不同的矩阵划分方式下的并行 矩阵转置算法。
P2
(5,1) (7,0) (4,3) (6,2)
P3
(7,1) (6,3)
P4
(3,0) (4,0) (3,1) (3,2) (4,1) (4,2)
P5
(3,3) (3,4) (4,3) (4,4)
P6
(3,5) (3,6) (4,5) (4,6)
P7
(3,7) (4,7) (1,2) (0,4)
带状划分
带状划分就是把矩阵按照行或列分成几部分,分别映射到 各个处理器。如果分到每个处理器的各行或列是连续的, 则称为块带状划分(Block-Striped);相对的,如果是按 照行号或者列号取模而进行的矩阵划分则称为循环带状划 分(Cyclic-Striped)。 下图是一个16×16的矩阵带状划分到4各处理器的例子, 左右分别为列方向的块带状划分和行方向的循环带状划分。 带状划分最多能够把一个n×n的矩阵划分到n的处理器上。