含糊不清的问题:阵列作业VS在一个批次中运行

时间:2018-11-22 03:39:30

标签: slurm

下面两个在Slurm上的并行化方案有什么区别?

方案1

运行thrust::system::system_error

sbatch script.sh

这会召唤8个运行#!/bin/bash #SBATCH --ntasks=8 ## more options srun echo hello 的作业

方案2 我已经使用数组作业完成了类似的工作。

echo hello

两种方案之间有区别吗?他们俩似乎都完成了同一件事。

1 个答案:

答案 0 :(得分:3)

方案1是一项单独的作业(具有8个任务),而方案2是8种不同的作业(每个具有一项任务)。在第一种情况下,所有任务将在同一时间安排,而在第二种情况下,将独立安排8个任务。

对于作业阵列(方案2),如果同时有8个CPU可用,则它们将同时启动,但是如果最初只有4个CPU可用,则将运行4个任务,其余4个仍待处理。初始的4个完成后,其他4个开始。通常用于embarrassingly parallel作业的情况下,这些作业不需要进行通信或同步,例如将同一程序应用于文件列表。

相比之下,对于单个作业(方案1),Slurm将同时启动8个任务,因此需要8个CPUS才能同时可用。这通常仅用于并行作业中需要进程相互通信的并行作业,例如使用Message Passing Interface库。