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

时间:2014-01-24 12:08:20

标签: c mpi

我有一个使用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%尺寸== 0,但是当N%尺寸!= 0时我会有错误。 我试着添加:

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

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

1 个答案:

答案 0 :(得分:8)

如果您必须分发一组数字,而这些数字无法平均分配给所有流程,请改用MPI_Scatterv