【问题标题】: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 个进程来运行。

  1. 如果我使用mpirun -n10 启动它,它是否能够检测到我的请求中的核心数量少于每个节点中可用的核心数量,并会自动从单个节点分配所有 10 个核心?与srun 有-N <number> 来指定节点数不同,mpirun 似乎没有这样的标志。我认为在一个节点上运行所有进程可以减少通信时间。

  2. 在上面的示例中,我们进一步假设每个节点有 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


    【解决方案1】:

    mpirun 没有关于集群资源的信息。它不会请求资源;您必须首先请求分配,通常使用 sbatch 或 salloc,然后 Slurm 将设置环境,以便 mpirun 知道在哪个节点上启动进程。因此,您必须查看sbatch 和salloc 选项来创建符合您需求的请求。默认情况下,Slurm 将尝试在最少数量的节点上“打包”作业。

    srun 也可以在由sbatch 或salloc 创建的分配中工作,但它也可以自己执行请求。

    【讨论】:

    • 我不知道mpirun也可以在slurm准备的资源上运行,一直以来我一直使用PBS和mpirun(或mpiexec)和@987654336 @ 与 srun.
    • 查看更多信息here
    猜你喜欢
    • 2022-07-13
    • 1970-01-01
    • 2017-05-25
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多