c - PI到底是如何启动这么多进程的

标签 c parallel-processing compilation mpi mpich

在获得了在集群上使用 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/

相关文章:

c - 使用 winapi 启用 ClearType 字体

c - Haskell FFI 将多个数组传递给 C

for-loop - 带有 return 语句的 Julia @parallel for 循环

python - 从单个脚本运行多个 python 脚本,并在它们之间来回通信?

c++ - 并行 gnu 在 shell 脚本中传递参数

c++ - 为什么clang和GCC不使用xchg来实现std::swap?

c - 如何从字符串中提取某个字符后的子字符串?

使用指针创建二维数组

css - compass 编译 : Invalid CSS after "...lor}: #{$value}": expected "{", 是 ";")

c++ - 用于 linux 的最小 c++ make 文件