如何使用MPI_Scatterv分散行主矩阵的列?

时间:2019-07-19 09:06:09

标签: mpi

假设我有一个矩阵,并且使用一维数组存储它。

矩阵按行快速存储。 A(i,j)=A[i+j*num_row]

我想将Matrix的一部分分散到其他进程中。

例如:

进程0拥有8x8矩阵。

我想要

将列0..2分散到进程0。

将分散柱3..4分散到工艺1。

将分散柱5..8分散到过程2。

在这种情况下,发送到一个进程的数据位于不连续的空间中。

此外,由于其他进程处理的列数可能不相等,我认为用户定义的数据类型在这里可能无济于事。

必须通过手动编写send和recv来完成。 必须通过将数据复制到一个进程到连续空间并调用MPI_Scatterv来完成。

但是我很困惑MPI_Scatterv是否可以在没有数据复制的情况下进行处理?如果可以,该如何处理?

谢谢。

0 个答案:

没有答案