Computer Infos

Zugang

Der Zugang zu unserem leistungsfähigsten System erfolgt über ssh zum Headnode iapetos, ein entsprechendes Passwort vergeben die Admins.

$ ssh name@iapetos

Von iapetos ist die komplette Rechenleistung über das Queuing-System abrufbar. Ein direktes login auf die Rechenknoten beo-01 bis beo-34 ist normalerweise nicht erforderlich. Einen Überblick zu Auslastung und Status des Systems bietet Ganglia*.

Compiler

Auf iapetos sind folgende Compiler installiert:

Die Intel-Compiler bieten spezielle Optionen zur prozessor-spezifischen Optimierung, erlaubt sind:

Ein auf beiden Prozessoren lauffähiges Programm erhält man also z.B. mit:

$ icc -O3 -xO -axT programm.c -o programm

Parallelverarbeitung

OpenMP

Alle 34 Rechenknoten haben 8 Cores mit gemeinsamen 16 GB Speicher. Sie bieten sich also für Programme an, die mit OpenMP parallelisiert sind. Aktiviert wird OpenMP mit folgenden Compiler-Optionen:

MPI

Sowohl die 24 Xeon-Knoten als auch die 10 Opteron-Knoten sind untereinander mit InfiniBand vernetzt und eignen sich deshalb für massiv parallele Programme. Als Message Passing Interface ist Open MPI 1.2.4 installiert. Ein Modul-System erlaubt die Übersetzung von MPI-Programmen mit GNU oder Intel-Compilern. Folgender Befehl listet alle verfügbaren Module auf:

$ module avail

----------------------- /etc/ql/beobox/modules/versions ------------------------
3.2.3
------------------------ /usr/Modules/3.2.3/modulefiles ------------------------
dot module-cvs module-info modules null use.own
---------------------- /etc/ql/beobox/modules/modulefiles ----------------------
intel-mkl/10.0.2.018 intel-mkl/9.0.018 openmpi-gcc/1.2.4
intel-mkl/8.1 intel-mkl/9.1.023 openmpi-icc/1.2.4

Wird Open MPI mit Intel-Compilern gewünscht, wählt man:

$ module load openmpi-icc/1.2.4

Nun können MPI Programme mit Hilfe der mpi... Scripts übersetzt werden, z.B.:

$ mpicc mpi_hello.c -o mpi_hello.x

Die dabei verwendeten Compiler- und Linker-Optionen können mit folgenden Befehlen abgefragt werden:

$ mpicc --show-libs
$ mpicc --show-compile

Dies ist z.B. nützlich, wenn MPI-Programme mit anderen Compilern (pgi) bzw. Compiler-Versionen übersetzt werden sollen.

MPI-Programme müssen grundsätzlich über das Queuing-System gestartet werden. Weitere Details dazu folgen im nächsten Abschnitt.

Jobs und Queues

Die Verwaltung der Rechenzeit übernimmt das Queuing-System Torque, d.h. alle Rechnungen müssen mit einem Jobscript gestartet werden. Eine Übersicht über alle Queues und ihre Limits liefert der Befehl:

$ qstat -q

Die aktuelle Auslastung sieht man mit:

$ qstat -a

Ein typisches Jobfile (mit MPI) sieht folgendermaßen aus:

#!/bin/bash
#PBS -l nodes=4:ppn=8:ib
#PBS -q work
#PBS -r n
#PBS -j oe

cd $PBS_O_WORKDIR

mpirun -n 32 ./mpi_hello

Bei seriellen oder OpenMP Programmen entfällt der Befehl mpirun. Stattdessen wird man die Zahl der OpenMP-Threads mit

export OMP_NUM_THREADS=...

beeinflussen. Man beachte auch die im Jobfile verwendete Option ...:ib, die die Jobausführung auf die Xeon-Knoten beo-01 bis beo-24 beschränkt. Werden die Opteron-Knoten beo-25 bis beo-34 gewünscht, verwendet man ...:ge. Fehlt die Angabe ganz, wird das Programm auf einem beliebigen Knoten gestartet. Bei MPI-Jobs sollte eine Mischung verschiedenartiger Knoten vermieden werden, da zwischen Opterons und Xeons nur eine Ethernet-Verbindung besteht. Die vollständige Hilfe zu Torque findet sich im Netz.

An das Queuing-System übergeben wird das Jobfile mit:

$ qsub jobfile

Bibliotheken

Auf iapetos sind folgende Bibliotheken installiert (z.T. im Verzeichnis /apps/prod/):

Beim compilieren entsprechender Programme müssen gegebenenfalls die vollen Pfade angegeben werden. Bsp. MKL:

$ icc -I/apps/prod/math-lib/mkl/10.0.2.018/include programm.c -L/apps/prod/math-lib/mkl/10.0.2.018/lib/em64t -lmkl -lmkl_lapack -liomp5 -lpthread -Xlinker -rpath -Xlinker /apps/prod/math-lib/mkl/10.0.2.018/lib/em64t -o programm.x

Debugger

Als Debugger sind installiert:

Letzterer dient zur Analyse paralleler Programme (MPI).

*Zugriff auf Ganglia ist nur vom uni-internen Netz möglich.

last updated: Alex Weiße