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

我正在做一个学习练习。我想计算从0到N范围内的素数。我可以使用mpi的什么函数将数字范围分配给每个进程?换言之,每个进程计算主范围内某个数字范围内的素数。

您可以简单地使用
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()配对。