Parallel processing 以MPI定义处理器的数量

Parallel processing 以MPI定义处理器的数量,parallel-processing,mpi,Parallel Processing,Mpi,MPI中是否有类似OpenMP中omp_set_num_threads的命令来定义处理器的数量??我通常用mpirun-np(numberofprocess)定义终端中的处理器数量,但我想在OpenMP等主体算法中定义它。MPI中有解决方案吗?谢谢长话短说,答案是否定的 也就是说,您可以使用MPI\u Comm\u spawn()手动生成新的MPI任务。在MPI的上下文中,基本上生成fork&exec新进程,这意味着这些进程将在main函数中启动。 这与多线程应用程序(如OpenMP)非常不同,

MPI中是否有类似OpenMP中omp_set_num_threads的命令来定义处理器的数量??我通常用mpirun-np(numberofprocess)定义终端中的处理器数量,但我想在OpenMP等主体算法中定义它。MPI中有解决方案吗?谢谢

长话短说,答案是否定的

也就是说,您可以使用
MPI\u Comm\u spawn()
手动生成新的MPI任务。在MPI的上下文中,基本上生成
fork
&
exec
新进程,这意味着这些进程将在
main
函数中启动。 这与多线程应用程序(如OpenMP)非常不同,在多线程应用程序中,您可以创建一个新线程,并在需要的地方直接启动它。 此外,您还可以使用
MPI\u Comm\u disconnect()
来“释放衍生任务”(从实用的角度来看,这些任务可以自由退出(),这可能是它们应该做的)

乍一看,一种更加MPI’ish的方法是使用
mpirun
启动所有任务,然后
MPI\u Comm\u split()
在一个较小的(子)通信器中进行计算,并让其他任务在
MPI\u Barrier()中等待。
(请注意,这些任务可能会使用CPU,但它们可以自由地执行其他工作,而不是坐在障碍物中)