问题引入:
主体思路:(为了尽可能使计算简便,所有的实验矩阵均是方阵)
1. 对于A,B矩阵,首先根据子进程数p将其划分成p块形式相同的小矩阵块,其中每个矩阵块只要求是方阵即可,具体可以是1阶的,2阶的或n阶的。这里的子进程数p我采用了用于具体计算的进程数量,即除0进程以外的所有进程。划分完毕后,每个进程都持有矩阵A与矩阵B对应位置的一对儿分块阵。
2. 对A,B矩阵进行初始位置分配,这里不好用语言描述,下面三阶分块阵为例,给出示意图(因为二阶分块阵在课件中已经给出且不具一般性):
对于矩阵A
一个箭头表示移动一次,方向为左,移动完成后为
对于矩阵B
一个箭头表示移动一次,方向为上,移动完成后为
A,B位置初始化完成后,对应位置分块阵相乘,重新组合成的矩阵为C0
之后,【矩阵A所有行按上述规则左移一次,B的所有列上移一次,再对应相乘相加,得到矩阵C1】,重复步骤【】p-1次,依次得到C1,C2,,,Cn
对于上述三阶分块阵来说,将得到的C0,C1,C2相加即