定义MPI中的处理器数量

时间:2018-02-17 06:32:10

标签: parallel-processing mpi

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

1 个答案:

答案 0 :(得分:3)

长话短说,答案是否定的。

话虽这么说,您可以使用MPI_Comm_spawn()来手动生成新的MPI任务。在MPI的上下文中,基本上生成fork& exec个新进程,这意味着这些进程将从main函数开始。 这与多线程应用程序(例如OpenMP)非常不同,您可以在其中创建新线程并将其直接启动到您需要的位置。 此外,您可以使用MPI_Comm_disconnect()“让生成的任务继续”(从实用的角度来看,这些任务可以自由exit(),这可能是他们应该做的事情。)

乍一看,更多MPI'方法是使用mpirun开始所有任务,然后MPI_Comm_split()并在较小(子)通信器中进行计算并等待其他任务在MPI_Barrier()中。 (注意这些任务可能会使用CPU,但是他们可以自由地做其他工作而不是坐在障碍物中。)