Dies ist eine alte Version des Dokuments!
Um auf dem Phoenix-Cluster zu arbeiten sind einige wenige Grundkenntnisse für die Arbeit mit Linux-System erforderlich.
Zur Arbeit auf dem Cluster stellen Sie eine SSH-Verbindung zu einem Loginknoten unter username@phoenix.hlr.rz.tu-bs.de
her. Dabei ist username
Ihr Benutzername, den Sie für alle Dienste des Gauß-IT-Zentrum nutzen, das Passwort ist das dazu gehörige Passwort.
ssh username@phoenix.hlr.rz.tu-bs.de
Für die Verwendung graphischer Anwendungen ist eine X-Weiterleitung mittels dem Parameter „-Y“ (nicht „-X“) nötig.
ssh -Y username@phoenix.hlr.rz.tu-bs.de
Wenn Sie mit einem Loginknoten verbunden sind, gibt es zwei Möglichkeiten Jobs zu starten: Direkt per Jobfile (dies ist die übliche Vorgehensweise), oder per Allokierung („Reservierung“) von Resourcen mithilfe eines Jobfiles, um interativ auf einzelnen Knoten zu arbeiten.
Ein Jobfile bzw. Jobscript sieht beispielsweise wie folgt aus:
#!/bin/bash # Job name: #SBATCH --job-name=Jobname # Wall clock limit: #SBATCH --time=1:00:00 # Number of tasks (cores): #SBATCH --ntasks=4 #SBATCH --exclusive module add mpi/intelmpi/5.1.2.150 module add intel-studio-2016 mkdir ~/systemtests/hpl/$HOSTNAME cd ~/systemtests/hpl/$HOSTNAME cp ${MKLROOT}/benchmarks/mp_linpack/bin_intel/intel64/runme_intel64_prv . cp ${MKLROOT}/benchmarks/mp_linpack/bin_intel/intel64/xhpl_intel64 . HPLLOG=~/systemtests/hpl/$HOSTNAME/HPL.log.2015.$(date +%y-%m-%d_%H%M) mpirun -genv I_MPI_FABRICS shm -np $MPI_PROC_NUM -ppn $MPI_PER_NODE ./runme_intel64_prv "$@" | tee -a $HPLLOG
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=2 #SBATCH --time=12:00:00 #SBATCH --job-name=nearest #SBATCH --ntasks-per-node=20 working_dir=~ cd $working_dir module load comp/gcc/6.3.0 module load mpi/openmpi/2.1.0/gcc mpiexec -np 40 ./test/mpinearest
partition
gibt die Partition (auch Queue genannt) an, auf der Sie rechnen wollen.
time
gibt die maximale Laufzeit Ihres Jobs an, bevor dieser dann abgebrochen wird.
job-name
gibt einen Namen an, unter dem Sie Ihren Job später in SLURM wieder finden können.
Ein Jobfile muss dann mittels sbatch
gestartet werden.
username@login01 [~] sbatch jobname.job
Eine Startzeit kann mit dem Schalter –begin
vorgegeben werden. Beispielsweise:
--begin=16:00 --begin=now+1hour --begin=now+60 (seconds by default) --begin=2010-01-20T12:34:00
Weitere Informationen bietet auch man sbatch
. Sämtliche dort verwendeten Parameter können auch im Jobscript selber mit #SBATCH
angeben werden.
Wenn Sie sich Knoten reservieren wollen um interaktiv auf diesen zu arbeiten, ist dies mit einem simplen Jobfile möglich:
#!/bin/bash -l #SBATCH --partition=standard #SBATCH --nodes=1 #SBATCH --time=7-00:00:00 #SBATCH --job-name=SleepExample #SBATCH --ntasks-per-node=1 cd ~/data_dir sleep 168h
Bei der Ausführung per sbatch
wird dann ein Knoten für die angegebene Zeit benutzt. Da ein Job läuft, kann auf diesen vom Besitzer per SSH zugegriffen werden. Um den richtigen Knoten zu finden, verwenden Sie squeue
und suchen nach dem angegebenen Jobnamen. Danach aktivieren Sie den Sitzungsmanager mit screen
.
username@login01 [~] sbatch jobname.job [Knoten finden] username@login01 [~] ssh node265 username@node265 [~] screen username@node265 [~] ...
Nachdem Sie nun eine Anwendung gestartet haben, können Sie die Sitzung mit Strg + A + D
in den Hintergrund verschieben. Wichtig ist dabei, dass Sie vorher screen
eingegeben haben, um den Sitzungsmanager zu starten.
Eine in den Hintergrund verschobene Sitzung wird nicht geschlossen, wenn Sie die SSH-Verbindung trennen. Damit laufen Ihre Prozesse in diesen Sitzungen entsprechend weiter, andernfalls würden Sie beendet werden!
Um eine einzelne Sitzung wieder aufzunehmen verwenden Sie auf dem entsprechenden Knoten screen -r
. Sollten mehrere Sitzungen im Hintergrund offen sein, wird eine Liste angezeigt, aus der Sie spezifizieren müssen:
username@node265 [~] screen -r 154577.pts-0.node265 (Detached) 154308.pts-0.node265 (Detached) 153240.pts-0.node265 (Detached) Type "screen [-d] -r [pid.]tty.host" to resume one of them. username@node265 [~] screen -r 153240.pts-0.node265
Diese Sitzung lässt sich danach mit Eingabe von screen -d
wieder in den Hintergrund verschieben.
Sie können sich mit dem Befehlt squeue
eine Liste aller Jobs in SLURM anzeigen lassen. Mehr Informationen gibt es mit squeue -l
.
username@login01 [~]squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 333 standard MD_BA_GA user0001 R 58:56 1 node265 336 standard bash username R 1:12 2 node267,node268 334 standard bash user0002 R 50:16 1 node266 331 vis vis user0003 R 1:25:22 1 vis01 329 standard name1 user0003 PD 00:00 1 (Resources)
JOBID
ist die ID der Jobs, um diese in SLURM ansprechen zu können.
NAME
ist der von Ihnen gewählte Name zur leichteren Identifikation des Jobs.
ST
gibt den Status des Jobs an (R
= Running, PD
= Wartend).
TIME
beschreibt die Zeit, die der Job bereits läuft.
Sollte der Job nicht laufen (PD
), wird unter NODELIST
statt der Knoten eine knappe Begründung angegeben, warum der Job (noch) nicht läuft.
Mit der ID des Jobs lässt sich ein Job mit scancel
abbrechen:
username@login01 [~]scancel 336 salloc: Job allocation 336 has been revoked.