Предположим, я хочу запустить программу с 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
если я запусту программу, она займет ок. 160se c. Я пытаюсь запустить задание Slurm на кластере из 40 узлов с 4 процессорами в каждом с моим test.slurm:
#! /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 задач ie должен быть выделен второй узел, до 90 секунд