我有一个使用 MPI_Scatter() 和 MPI_Gather() 的程序。该程序将整数 N 作为输入并返回从 2 到 N 的素数。我创建了一个数字从 2 到 N 的数组,并使用 MPI_Scatter 将数组拆分为 N/(procs 数量) 个元素,然后将它们提供给过程。如果我插入一个数字 N,它可以被进程数('size')整除,一切正常,但是当我输入一个 N 不能被'size'整除时,我会遇到一些错误。 比如:N=16 and 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相反。
关于c - 如果集合在进程之间不可分割,则使用 MPI_Scatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21332313/