Je tire mes cheveux depuis environ une semaine pour que le script de travail sbatch se soumette à plusieurs nœuds. J'ai deux noeuds de calcul avec (2) sockets (12) noyaux/socket (2) threads/core. J'ai un simple programme c qui calcule la série Fibonacci (pas de multi-thread ou mpi juste un seul programme de traitement de base unique).Sbatch et srun SLURM sch
Maintenant, j'ai le script fib.sh qui contient 30 lignes de "srun ./fibonacci &" et je fais ./fib.sh les 12 premiers travaux exécutés sur le premier noeud1, les 12 prochains fonctionnent sur un autre noeud2 et le Le repos est dans l'état d'attente qui est ce que je veux.
Mais quand j'essaye d'obtenir ce même comportement avec sbatch toutes les tâches s'exécutent sur node1 ce qui n'est pas ce que je veux. J'ai tordu avec les drapeaux #SBATCH en utilisant -n1 -N2, --cpus-per-task = 1, mais n'obtenant pas le résultat désiré. J'apprécie que quelqu'un puisse faire la lumière sur ce sujet.
Ci-dessous fait partie de mon slurm.conf si nécessaire
# SCHEDULING
FastSchedule=1
SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_Core
NodeName=node[1-2] Sockets=2 CoresPerSocket=12 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=node[1-2] Default=YES MaxTime=INFINITE State=UP
Ci-dessous le script sbatch
#!/bin/bash
# SBATCH --cpus-per-task=30
#SBATCH --ntasks-per-core=1
#run ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
wait