【发布时间】:2021-02-10 09:04:11
【问题描述】:
我正在考虑mpirun 和srun 之间的哪个进程启动器更擅长优化资源。假设一个集群中的一个计算节点总共有 16 个内核,我有一个工作要使用 10 个进程来运行。
-
如果我使用
mpirun -n10启动它,它是否能够检测到我的请求中的核心数量少于每个节点中可用的核心数量,并会自动从单个节点分配所有 10 个核心?与srun有-N <number>来指定节点数不同,mpirun似乎没有这样的标志。我认为在一个节点上运行所有进程可以减少通信时间。 -
在上面的示例中,我们进一步假设每个节点有 2 个 CPU,并且内核平均分布,因此 8 个内核/CPU 和规范说每个节点有 48 GB 内存(或 24 GB/CPU 或 3 GB/核)。假设我的工作中每个生成的进程都需要 2.5 GB,所以所有进程都将使用 25 GB。什么时候说一个程序超过了内存限制,是什么时候需要的总内存:
- 超过每个节点的内存(因此我的程序很好,25 GB
- 超过每个 CPU 内存(因此我的程序很糟糕,25 GB > 24 GB),或者
当每个进程的内存超过每个核心内存时(因此我的程序很好,2.5 GB
【问题讨论】:
标签: mpi cluster-computing slurm