Mpi 如何将数字范围分配给每个流程?
我正在做一个学习练习。我想计算从0到N范围内的素数。我可以使用mpi的什么函数将数字范围分配给每个进程?换言之,每个进程计算主范围内某个数字范围内的素数。您可以简单地使用Mpi 如何将数字范围分配给每个流程?,mpi,Mpi,我正在做一个学习练习。我想计算从0到N范围内的素数。我可以使用mpi的什么函数将数字范围分配给每个进程?换言之,每个进程计算主范围内某个数字范围内的素数。您可以简单地使用for循环和根上的MPI_Send(以及接收器上的MPI_Recv)向每个进程发送它应该开始的数字和它应该检查的数字 另一种可能,甚至更好,是使用MPI_Bcast(在根和接收器上)向每个进程发送N,并让每个进程使用自己的秩计算应该检查的数字。(类似于start=N/MPI\u Comm\u size*MPI\u Comm\u
for
循环和根上的MPI_Send(以及接收器上的MPI_Recv)向每个进程发送它应该开始的数字和它应该检查的数字
另一种可能,甚至更好,是使用MPI_Bcast(在根和接收器上)向每个进程发送N,并让每个进程使用自己的秩计算应该检查的数字。(类似于start=N/MPI\u Comm\u size*MPI\u Comm\u rank
和length=N/MPI\u Comm\u size
,以及一些适当的舍入等。)
您可能会进一步优化负载平衡,但您应该首先让它工作起来
最后,您应该调用MPI\u Reduce并加上一个和。您可能需要重新表述
MPI\u Recv()
部分,因为您可能会理解MPI\u Bcast()
必须与MPI\u Recv()配对。