我试图在处理器之间划分一个数组,使得每个数组从数组中的不同部分获取点。例如,如果
A = {1, 2, 3, 4, 5, 6, 7, 8}
我使用2个处理器,我希望P 1 来处理{1, 3, 5, 7}
,而P 2 来处理{2, 4, 6, 8}
。
当扩展到非常大的点数(百万)和处理器(128)时,这很棘手。在我的函数的先前版本中,我只是给了P 1 第一个点,P 2 下一个块,依此类推(这对{{1}很容易})。
是否有某种方法可以使用MPI_gatherv
来完成这项工作,或者使用MPI_gatherv
和MPI_send
来实现它? MPI_receive
的问题在于,虽然您可以指定要发送到的处理器的索引,但它仍然将P 1 之前的所有P 1 放在P 之前3 等。