在MPI中是否有任何命令,如OpenMP中的omp_set_num_threads来定义处理器的数量?我通常使用mpirun -np(numberofprocess)定义终端中处理器的数量,但我想在OpenMP等体算法中定义它。 MPI有解决方案吗?感谢
答案 0 :(得分:3)
长话短说,答案是否定的。
话虽这么说,您可以使用MPI_Comm_spawn()
来手动生成新的MPI任务。在MPI的上下文中,基本上生成fork
& exec
个新进程,这意味着这些进程将从main
函数开始。
这与多线程应用程序(例如OpenMP)非常不同,您可以在其中创建新线程并将其直接启动到您需要的位置。
此外,您可以使用MPI_Comm_disconnect()
“让生成的任务继续”(从实用的角度来看,这些任务可以自由exit()
,这可能是他们应该做的事情。)
乍一看,更多MPI'方法是使用mpirun
开始所有任务,然后MPI_Comm_split()
并在较小(子)通信器中进行计算并等待其他任务在MPI_Barrier()
中。
(注意这些任务可能会使用CPU,但是他们可以自由地做其他工作而不是坐在障碍物中。)