2

假设我想运行一个有 100 个不同输入参数的程序。这就是我会在我的笔记本电脑上做的事情,例如:

for i in {1..32}
    do
    ./test.sh $i
done

其中 test.sh 只是一个虚拟程序

#!/bin/bash
name=$(hostname)
touch $1.test
echo $name >> $1.test
echo $name
sleep 5

如果我运行程序大约需要。160 秒。我尝试使用我的 test.slurm 在集群 40 个节点上运行 Slurm 作业,每个节点有 4 个 CPU:

#! /bin/bash
#
#SBATCH --ntasks=4
start=`date +%s`
for i in {1..32}
do
   srun -l -n1 -N1 -c1 ./test.sh $i &
done
wait
end=`date +%s`
runtime=$((end-start))
echo $runtime

我得到了 190 秒的运行时间,而不是预期的 ~40 秒,所以没有多处理,但如果我指定 2 个节点 --nodes=2 或超过 4 个任务,即必须分配第二个节点,我会缩短到 90 秒

4

0 回答 0