Ich habe meine Haare für etwa eine Woche gezogen, um das sbatch-Jobskript an mehrere Knoten zu senden. Ich habe zwei Rechenknoten mit (2) Sockets (12) Kernen/Socket (2) Threads/Core. Ich habe ein einfaches c-Programm, das die Fibonacci-Serie berechnet (kein Multi-Thread oder mpi nur ein Single-Core-Programm).Sbatch und srun SLURM sch
Jetzt habe ich Skript fib.sh, das 30 Zeilen enthält "srun ./fibonacci &" und ich tun ./fib.sh die ersten 12 Jobs auf dem ersten Knoten1 laufen, die nächsten 12 auf einem anderen Knoten2 laufen und die Ruhe ist im Wartezustand was ich will.
Aber wenn ich versuche, das gleiche Verhalten mit sbatch zu bekommen, laufen alle Aufgaben auf node1, was nicht das ist, was ich will. Ich habe mit den #SBATCH-Flags mit -n1 -N2, --cpus-per-task = 1 herumgewunken, aber nicht das gewünschte Ergebnis erzielt. Ich schätze es, wenn jemand etwas Licht dazu bringen kann.
Unten ist ein Teil meiner slurm.conf benötigt, wenn
# 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
Unten ist die sbatch Skript
#!/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