如何限制SLURM中并行执行的程序数量

问题描述 投票:0回答:1

我正在尝试使用 slurm 在我的集群(单节点)上并行运行多个命令。 这是我的情况:

  • 我有 N 个命令要运行
  • 我的集群中有 M 个物理核心 (M=4)

由于每个命令都需要物理核心,并且 M < N, I would like that, at most, only M commands are executed simultaneously.

问题是当我运行

sbatch
命令时,所有N个命令都被执行了。我尝试使用
--ntasks
参数但没有成功。可能我使用了错误的 SLURM 参数。

这是我正在使用的文件:

############# file name: ./run_parallel_commands.sh #############
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=4
#SBATCH --mem-per-cpu=1G

./command-1 &
./command-2 &
# ...
./command-N &
wait

并且它是运行执行的:

$ sbatch ./run_parallel_commands.sh

有什么建议吗? 预先感谢您。

linux slurm
1个回答
0
投票

你已经快到了,你的参数应该没问题。这只是需要工作的命令的执行。您必须使用 srun 命令执行任务。

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=4
#SBATCH --mem-per-cpu=1G

srun ./command-1 &
srun ./command-2 &
# ...
srun ./command-N &
wait
© www.soinside.com 2019 - 2024. All rights reserved.