【问题标题】:mpirun with slurm : how to run multiple processes on a single CPUmpirun with slurm:如何在单个 CPU 上运行多个进程
【发布时间】:2016-10-11 05:31:07
【问题描述】:

我想写slurm批处理(sbatch)来运行几个mpi应用程序。因此,我希望能够运行类似的东西

salloc --nodes=1 mpirun -n 6 hostname 

但我收到了这条消息:

系统中没有足够的可用插槽来满足 6 个插槽 应用程序要求的: 主机名

要么为您的应用请求更少的插槽,要么提供更多的插槽供使用。

节点实际上有 4 个 CPU。因此,我正在寻找允许每个 CPU 执行更多任务的东西,但我找不到合适的选项。我知道当缺少物理资源时,仅 mpi 就能够运行多个进程。我认为问题出在 slurm 方面。 你有什么建议/cmets?

【问题讨论】:

    标签: mpi cpu slurm


    【解决方案1】:

    使用srun 并提供选项--overcommit,例如像这样:

    test.job:

    #!/bin/bash
    #SBATCH --nodes=1
    #SBATCH --ntasks=6
    #SBATCH --overcommit
    
    srun hostname
    

    运行sbatch test.job

    来自man srun

    通常,srun 不会为每个 CPU 分配多个进程。通过指定--overcommit,您明确允许每个 CPU 有多个进程。

    请注意,取决于您的集群配置,这可能也适用于 mpirun,也可能不适用,但我会坚持使用 srun,除非您有充分的理由不这样做。

    一个重要的警告:默认情况下,大多数 MPI 实现在过度使用时都具有糟糕的性能。如何解决这是一个不同的、更困难的问题。

    【讨论】:

      猜你喜欢
      • 2014-07-05
      • 1970-01-01
      • 2021-04-18
      • 2011-06-07
      • 2022-11-05
      • 2016-07-15
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      相关资源
      最近更新 更多