Я отправляю несколько искровых заданий в режиме кластера, которые прекрасно работают, когда я делаю это одно за другим со спецификациями ниже sbatch.
#!/bin/bash -l
#SBATCH -J Spark
#SBATCH --time=0-05:00:00 # 5 hour
#SBATCH --partition=batch
#SBATCH --qos qos-batch
###SBATCH -N $NODES
###SBATCH --ntasks-per-node=$NTASKS
### -c, --cpus-per-task=<ncpus>
### (multithreading) Request that ncpus be allocated per process
#SBATCH -c 7
#SBATCH --exclusive
#SBATCH --mem=0
#SBATCH --dependency=singleton
Если я использую модуль запуска для отправки одного и того же задания с разными номерами узлов и задач, система запутывается и пытается назначить в соответствии с $ SLURM_NTASK, что дает 16. Однако я спрашиваю, например, только 1 узел, 3 задачи.
#!/bin/bash -l
for n in {1..4}
do
for t in {3..4}
do
echo "Running benchmark with ${n} nodes and ${t} tasks per node"
sbatch -N ${n} --ntasks-per-node=${t} spark-teragen.sh
sleep 5
sbatch -N ${n} --ntasks-per-node=${t} spark-terasort.sh
sleep 5
sbatch -N ${n} --ntasks-per-node=${t} spark-teravalidate.sh
sleep 5
done
done
Как я могу исправить ошибку, указанную ниже, не позволяя slurm назначать странное количество задач на узел, превышающее ограничение.
Ошибка:
srun: Warning: can't honor --ntasks-per-node set to 3 which doesn't match the
requested tasks 16 with the number of requested nodes 1. Ignoring --ntasks-per-node.
srun: error: Unable to create step for job 233838: More processors requested than
permitted