在获得了在集群上使用 MPI 的一些经验后,我最近开始在计算机上运行 MPI 进行一些练习。我有一个双核处理器,但很好奇如果我指定大量进程会发生什么,令我惊讶的是它有效。
mpirun -np 40 ./wha
这到底是怎么发生的。即使考虑到单个处理器可以产生的线程数量,这似乎也是不可能的。
最佳答案
对于 OpenMPI,如果运行的进程数量大于处理器数量(即发生超额订阅时),OpenMPI 会开始以降级模式运行 MPI 进程。在降级模式下运行意味着将其处理器交给其他 MPI 进程以取得进展(即发生时间共享)。 mpi_yield_when_idle
可以设置为 0 来显式地设置aggressive模式,在这种情况下,MPI 进程不会主动将处理器交给其他进程。
参见here
关于c - PI到底是如何启动这么多进程的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57023977/