使用MPI的二维FFT\u Alltoall-in-MPI
我有一个4X6矩阵,在2处理器上拆分为两个2X6矩阵。由于行已在处理器上以连续方式(C语言)分割,因此我们可以对行执行1-D FFT。问题是我们需要一个使用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上
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个向量实例(如何定义数据类型?)