如果集合在进程中不可分,则使用MPI_Scatter

我有一个使用MPI_Scatter()和MPI_Gather()的程序。 程序将整数N作为输入,并将素数从2返回到N.我创建一个数字从2到N的数组,并且MPI_Scatter将数组拆分为N /(procs)元素,然后将它们分配给过程。 如果我插入一个数字N,它对于进程数(’size’)可以整除,一切正常,但是当我输入一个不能为’size’整除的N时,我会有一些错误。 例如:N = 16且size = 4 => 16/4 = 4,所以N%size == 0,但是当N%size!= 0时,我会有错误。 我试着添加:

div = N/size; if (N%size != 0) if (rank == 0) div++; 

rank是当前进程的排名,为根进程提供一个元素。 但它仍然无法正常工作。 我怎么解决这个问题? 先感谢您。

如果必须分发一组数字,这些数字不能平均分配给所有进程,请改用MPI_Scatterv 。