MPI用户为三种不同矩阵的部分定义了类型

时间:2017-04-06 14:28:30

标签: c mpi

我正在进行粒子模拟,需要将三个不同阵列的一部分发送到其他进程。如何使用MPI用户定义的类型来执行此操作?

例如,假设我在进程1上有三个数据类型为double,A,B和C的Matrix.现在我想将A,B和C的前两行发送到进程2.那么如何假设这些矩阵的C类型存储,使用MPI用户定义类型来执行此操作?谢谢。

目前,我正在将这些矩阵的前两行复制到一个缓冲区,然后执行MPI发送。这些基本上涉及以下步骤:

Copy the first two rows of A, B, and C to a send_buffer on Process 1.
Send the send_buffer from Process 1 to Process 2.
On Process 2, use recv_buffer to receive data from Process 1.
On Process 2, copy data from recv_buffer to A, B, C on Process 2.

我希望有更好的方法来做到这一点。谢谢。

1 个答案:

答案 0 :(得分:0)

在下面的代码中,定义了MPI数据类型以传递矩阵的一系列行。如果有三个矩阵,则会有三个发送/接收。您可以将以下代码与您自己的代码进行比较,以了解哪个代码更好。

如果您认为逐个传输矩阵效率不高,那么您可以将所有矩阵放在结构中并制作MPI数据类型或考虑使用<activity android:name=".activity.MainActivity" android:windowSoftInputMode="adjustPan|stateHidden" />

MPI_PACK