假设我有一个矩阵,并且使用一维数组存储它。
矩阵按行快速存储。 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
是否可以在没有数据复制的情况下进行处理?如果可以,该如何处理?
谢谢。