【问题标题】:parallel but different Slurm srun job step invocations not working并行但不同的 Slurm srun 作业步骤调用不起作用
【发布时间】:2016-05-31 15:21:39
【问题描述】:

我想在大量不同的输入文件上运行相同的程序。我可以将每个作为单独的 Slurm 提交提交,但我不想通过一次在其上倾倒 1000 个作业来淹没队列。我一直试图弄清楚如何通过首先创建分配来处理相同数量的文件,然后在该分配中使用 srun 循环遍历所有文件,为每次调用提供分配中的单个核心。问题是无论我做什么,一次只能运行一个作业步骤。我能想到的最简单的测试用例是:

#!/usr/bin/env bash

srun --exclusive --ntasks 1 -c 1 sleep 1 &
srun --exclusive --ntasks 1 -c 1 sleep 1 &
srun --exclusive --ntasks 1 -c 1 sleep 1 &
srun --exclusive --ntasks 1 -c 1 sleep 1 &

wait

我分配多少核心并不重要:

time salloc -n 1 test
time salloc -n 2 test
time salloc -n 4 test

它总是需要 4 秒。难道不能让多个作业步骤并行执行吗?

【问题讨论】:

    标签: slurm


    【解决方案1】:

    原来每个 cpu 的默认内存没有定义,所以即使是单核作业也可以通过保留所有节点的 RAM 来运行。

    设置 DefMemPerCPU 或指定显式 RAM 预留就可以了。

    【讨论】:

    • 我也有同样的问题。我用 srun 依次运行 3 个作业,但在第一个作业后它卡住了。您能否分享一下您添加脚本来解决问题的具体内容?我使用它,但我仍然有错误。 #SBATCH --mem=0 export DAEMON_MEM=${SLURM_MEM_PER_CPU:=4096} export SPARK_MEM=$((${DAEMON_MEM}*(${SPARK_WORKER_CORES} -1)))
    【解决方案2】:

    请注意,在这种情况下,您会同时测量运行时间和等待时间。您的提交脚本应如下所示:

    #!/usr/bin/env bash
    
    time {
    srun --exclusive --ntasks 1 -c 1 sleep 1 &
    srun --exclusive --ntasks 1 -c 1 sleep 1 &
    srun --exclusive --ntasks 1 -c 1 sleep 1 &
    srun --exclusive --ntasks 1 -c 1 sleep 1 &
    wait
    }
    

    只需提交

    salloc -n 1 test
    salloc -n 2 test
    salloc -n 4 test
    

    然后您应该观察差异,以及使用n<4 时的srun: Job step creation temporarily disabled, retrying 等消息。

    【讨论】:

    • 这些都是很好的建议,非常感谢。问题原来是别的东西。
    猜你喜欢
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2020-09-05
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多