mpirun 是不是知道请求的核心数量是不是大于或小于节点中的可用核心?
Posted
技术标签:
【中文标题】mpirun 是不是知道请求的核心数量是不是大于或小于节点中的可用核心?【英文标题】:Does mpirun know if the requested number of cores is bigger or smaller than the available cores in a node?mpirun 是否知道请求的核心数量是否大于或小于节点中的可用核心? 【发布时间】: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
【问题讨论】:
【参考方案1】:mpirun
没有关于集群资源的信息。它不会请求资源;您必须首先请求分配,通常使用 sbatch
或 salloc
,然后 Slurm 将设置环境,以便 mpirun
知道在哪个节点上启动进程。因此,您必须查看sbatch
和salloc
选项来创建符合您需求的请求。默认情况下,Slurm 将尝试在最少数量的节点上“打包”作业。
srun
也可以在由sbatch
或salloc
创建的分配中工作,但它也可以自己执行请求。
【讨论】:
我不知道mpirun
也可以在slurm
准备的资源上运行,一直以来我一直使用PBS
和mpirun
(或mpiexec
)和@987654336 @ 与 srun
.
查看更多信息here以上是关于mpirun 是不是知道请求的核心数量是不是大于或小于节点中的可用核心?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 8 Mapkit 和位置 - 每天的请求数量是不是有任何限制?