gpt4 book ai didi

mpi - MPI 运行时系统分配的进程的物理位置

转载 作者:行者123 更新时间:2023-12-04 14:09:09 28 4
gpt4 key购买 nike

当我们在集群上使用命令 say mpirun -np 4 a.out 启动 MPI 程序时,然后MPI 运行时系统如何跨 CPU 分配进程?

我的意思是,假设它在集群中找到一个空闲的四核 CPU,它会在该 CPU 上运行所有 4 个进程,还是会找到 4 个 CPU 并运行 4 个进程,每个 CPU 1 个进程?

这是否取决于 MPI 的特定实现?

我是否应该被 MPI 为我选择的特定配置所困扰(一个 CPU 上有 4 个进程或 4 个 CPU 上每个 CPU 有 1 个进程)

最佳答案

是的,这取决于 MPI 实现,是的,这很重要。例如,如果您希望每个 MPI 任务能够使用一个节点的内存,而您发现自己在一个节点上加载 4 个任务而其他节点上没有加载任何任务,那么您将遇到严重的问题。同样,如果您在 4 个 8 核节点上运行,并且您正在运行 4 个 mpi 任务,每个任务有 8 个 OpenMP 线程,那么对于 4 个节点中的每一个节点使用 1 个任务和 8 个线程,或者 4 个任务和 32 个线程之间有很大的区别在一个节点上,其他节点上什么也没有。

x86 类型硬件上最常见的 MPI 实现是基于 OpenMPI 或 MPICH2 的。 OpenMPI 将在进入下一个节点之前填满一个节点;你可以改变这种行为,例如,给它“--bynode”选项,它会将一个任务分配给一个节点,将下一个任务分配给下一个任务,等等,并根据需要再次环绕到第一个节点。 (OpenMPI 也有 --bysocket 和 --bycore 用于更精细的控制,以及非常有用的 --display-map 选项,它可以准确地显示发生了什么)。

对于基于 mpich2 的 MPI,您可以为其提供“循环”的 -rr 选项,这将在节点之间进行循环(例如,OpenMPI 的 --bynode 行为)。

无论哪种情况,在 linux 类型的系统上,您始终可以运行 eg 'mpirun -np 4 hostname' 作为一种快速而肮脏的方式来找出您的 mpirun 命令将在哪些主机上启动进程。

关于mpi - MPI 运行时系统分配的进程的物理位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406157/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com