我在 2 处理器上将 4X6 矩阵拆分为两个 2X6 矩阵。由于行已经在处理器上以连续的方式( C语言)进行拆分,因此我们可以对行执行 1-D FFT 。问题是我们需要MPI_Alltoall()
来收集特定处理器上的连续列,用于 1-D列FFT ,即处理器0具有:
A B C D E F
G H I J K L
处理器1具有:
M N O P Q R
S T U V W X
MPI_Alltoall()
需要在处理器0上将其转换为以下内容:
A G M S
B H N T
C I O U
以下是处理器2:
D J P V
E K Q W
F L R X
我尝试定义一个 vector ,其中 count = 2,blocklength = 1,stride = 6 作为发送类型向量,设置其范围到MPI_INT
,置换为0,并使用MPI_Alltoall()
发送此向量的3个实例。根据我的说法,我应该将A G, B H,
和C I
发送到处理器0,将D J, E K,
和F L
发送到处理器1.类似地M S, N T,
和O U
到处理器处理器1为0,P V, Q W,
和R X
。
我的解释是否正确?如果是,那么如何在接收端接收这3个向量实例(什么/如何定义数据类型?)。