2017-05-13 10 views
0

Ich muss mehrere Simulationen auf einem Cluster mit sbatch ausführen. In einem Ordner habe ich das Python-Skript ausgeführt werden soll und eine Datei mit sbatch verwendet werden:Wie übergebe ich Aufträge an SLURM mit verschiedenen Knoten?

#!/bin/bash -l 
#SBATCH --time=04:00:00 
#SBATCH --nodes=32 
#SBATCH --ntasks-per-core=1 
#SBATCH --ntasks-per-node=36 
#SBATCH --cpus-per-task=1 
#SBATCH --partition=normal 
#SBATCH --constraint=mc 

module load Python 

source /scratch/.../env/bin/activate 

srun python3 script.py 

deactivate 

Was muss ich tun, ist das gleiche Python-Skript ausführen, aber unterschiedliche Werte für --nodes verwenden. Wie kann ich das machen? Außerdem würde ich gerne einen Ordner für jeden Lauf erstellen, in dem die Slurm-Datei gespeichert wird (Ausgabe), etwa wie "nodes_xy".

Antwort

1

Ihr Skript Angenommen wird submit.sh, genannt Sie die --nodes aus dem Skript entfernen und ausführen können:

for i in 2 4 8 16 32 64; do sbatch --nodes $i --output nodes_$i.txt, submit.sh; done 

Dies wird senden Sie das submit.sh Skript mit zwei zusätzlichen Parameter, --nodes und --output, die erste der steuern Anzahl der verwendeten Knoten, und die zweite, um den Namen der Ausgabedatei für jeden Wert 2, 4, 8 usw. anzugeben. Beachten Sie, dass alle Ausgabedateien im aktuellen Verzeichnis sind, müssen Sie das Einzeiler entwickeln ein bisschen, wenn Sie sie wirklich in getrennten Verzeichnissen brauchen.

Wenn die maximal zulässige Laufzeit für es erlaubt, können Sie alle Läufe in einem einzigen Job mit so etwas wie dies auszuführen:

#!/bin/bash -l 
#SBATCH --time=04:00:00 
#SBATCH --nodes=32 
#SBATCH --ntasks-per-core=1 
#SBATCH --ntasks-per-node=36 
#SBATCH --cpus-per-task=1 
#SBATCH --partition=normal 
#SBATCH --constraint=mc 

module load Python 

source /scratch/.../env/bin/activate 

for i in 2 4 8 16 32 64; 
do 
srun --nodes $i python3 script.py > nodes_$i 
done 

deactivate 
Verwandte Themen