我正在尝试使用 slurm 在我的集群(单节点)上并行运行多个命令。 这是我的情况:
由于每个命令都需要物理核心,并且 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
有什么建议吗? 预先感谢您。
你已经快到了,你的参数应该没问题。这只是需要工作的命令的执行。您必须使用 srun 命令执行任务。
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=4
#SBATCH --mem-per-cpu=1G
srun ./command-1 &
srun ./command-2 &
# ...
srun ./command-N &
wait