使用MPI的二维FFT\u Alltoall-in-MPI

使用MPI的二维FFT\u Alltoall-in-MPI,mpi,fft,Mpi,Fft,我有一个4X6矩阵,在2处理器上拆分为两个2X6矩阵。由于行已在处理器上以连续方式(C语言)分割,因此我们可以对行执行1-D FFT。问题是我们需要一个MPI\u 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\u Alltoall()需要在处理器0上将其转换为以下内容: A G M S B H N T C I O U 在处理器2上

我有一个4X6矩阵,在2处理器上拆分为两个2X6矩阵。由于行已在处理器上以连续方式(C语言)分割,因此我们可以对行执行1-D FFT。问题是我们需要一个
MPI\u 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\u 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
我尝试将count=2、blocklength=1、stride=6的向量定义为发送类型向量,将其范围设置为
MPI\u INT
,位移设置为0,并使用
MPI\u Alltoall()发送该向量的3个实例。根据我的说法,应将
ag、bh、
ci
发送到处理器0,并将
dj、ek、
fl
发送到处理器1。同样地,
ms,nt,
ou
到处理器0和
pv,qw,
rx
到处理器1。 我的解释正确吗?如果是,那么如何在接收端接收这3个向量实例(如何定义数据类型?)