我有一个使用 MPI_Scatter() 和 MPI_Gather() 的程序。该程序将整数 N 作为输入,并返回从 2 到 N 的质数。我创建一个包含从 2 到 N 的数字的数组,并使用 MPI_Scatter 将数组拆分为 N/(procs 数量) 个元素,然后将它们提供给的过程。如果我插入一个可被进程数(“大小”)整除的数字 N,一切正常,但是当我输入不可被“大小”整除的 N 时,我会遇到一些错误。
例如: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 http://www.open-mpi.org/doc/v1.4/man3/MPI_Scatterv.3.php反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)