Direkt zum InhaltDirekt zur SucheDirekt zur Navigation
▼ Zielgruppen ▼

Humboldt-Universität zu Berlin - Computer- und Medienservice

Compute-Cluster

0. Use of Cluster - short English description
1. Hard- und Software
2. Clusteraufbau
3. Login auf Master und Knoten
4. Speicherplatz
Home
Temporär
Permanent
AFS
5. Module-Konzept
6. Programmentwicklung
7. Batchbetrieb
8. Anwendungssoftware
Gaussian09
GaussView
Matlab
Maple
ORCA
R Software
Turbomole
9. Dokumentationen


0. Use of Cluster - short English description

Use of Cluster English


Alle Fragen oder Probleme richten Sie an den Compute-Cluster Support.


1. Hard- und Software

Der Compute-Cluster CLOU (Cluster of UNIX Machines) ist ein Infiniband Cluster, der aus SuperMicro T2 Servern besteht. Die Server sind über ein sehr schnelles Kommunikationsnetzwerk (Infiniband QDR) verbunden. Damit ist das Compute-Cluster besonders für parallele Anwendungen sehr geeignet. Parallele Programme werden mit Hilfe von OpenMPI oder MPICH entwickelt. Shared Memory Programme können auf einem Knoten mit 8 Cores rechnen. Der Cluster ist andererseits auch mit Anwendungssoftware ausgestattet.


2. Clusteraufbau

Grafische Darstellung Compute-Cluster


3. Login auf Master und Knoten

Berechtigte Nutzer loggen sich auf dem Master-Server clou.cms.hu-berlin.de mittels SSH ein. Dieser ist mit einer Firewall abgeschirmt, und nur aus der HU-Domäne erreichbar. Ein Einloggen auf die Compute-Knoten von außen ist nicht möglich. Beide Master-Server (clou1/clou2) arbeiten als HA-Cluster. Sollte der aktive Login ausfallen, wird automatisch auf den anderen umgeschaltet. Vom Master Server ist dann mittels SSH ein Login auf den Knoten möglich.

Um gleichzeitig auf allen Compute-Knoten Kommandos ausführen zu können, z.B. Dateien/Verzeichnisse in den lokalen Verzeichnissen &nbsp/scratch/$USER&nbsp anlegen, löschen oder kopieren zu können, gibt es die parallele SSH. Um Knoten auszuwählen, gibt es vorkonfigurierte Knotendateien in &nbsp/usr/localshare/nodes&nbsp. Wenn Ausgaben umgelenkt werden sollen, kann man das mit der "-o" Option oder der "-e" Option tun. Es werden dann mit dem Namen pssh.out bzw. pssh.err Verzeichnisse angelegt, die Dateien mit den Ausgaben der einzelnen Knoten enthalten.

    pssh --help             Help zu PSSH
    pssh -P -h /usr/localshare/nodes/node1-16 cp /etc/motd /scratch/$USER
               kopiert /etc/motd  ins lokale /scratch/$USER auf node1-node16     
    pssh -o pssh.out -e pssh.err -h /usr/localshare/nodes/all mkdir /scratch/$USER/ompi                 
               legt das Unterverzeichnis /scratch/$USER/ompi an


4. Speicherplatz

4.1. Home-Verzeichnisse
An den Master Servern sowie allen Compute-Knoten sind die Home-Verzeichnisse der Nutzer eingehängt. Sie haben den Pfad:
/home/<fachbereich>/$USER
Die Home-Verzeichnisse werden täglich gesichert.

4.2. Temporäre Verzeichnisse

Auf jedem Compute-Knoten des Clusters stehen den Nutzern Verzeichnisse zur Ablage von temporären Daten zur Verfügung. Jeder Nutzer erhält ein Unterverzeichnis,

/scratch/$USER     lokal auf dem Knoten
/work/$USER        gemeinsam auf allen Knoten und Servern

in das er seine Daten während der Rechnung ablegen kann. Lokal auf jedem Knoten befindet sich das Filesystem &nbsp/scratch&nbsp. Außerdem steht an den Knoten das Lustre-Filesystem &nbsp/work&nbsp zur Verfügung. In dieses muss zwingend geschrieben werden, wenn parallel über einen Knoten hinweg gerechnet wird. Anderenfalls ist es sinnvoller in den lokalen &nbsp/scratch&nbsp-Bereich eines Konten zu schreiben. Die &nbsp/scratch&nbsp- und &nbsp/work&nbsp Verzeichnisse unterliegen einem Kontrollmechanismus. Diese Verzeichnisse werden nicht gesichert.


4.3. Permanente Verzeichnisse

Daten, die permanent abgelegt werden sollen und die im Home-Verzeichnis keinen Platz finden, können im permanenten Speicherbereich

/perm/$USER

abgelegt werden. Diese Verzeichnisse unterliegen auch der Kontrolle durch eine Hochwassermarke, die hier bei 85% liegt. Diese Verzeichnisse werden täglich gesichert


4.4. AFS-Verzeichnisse
Das CMS bietet jedem Account ein zusätzliches, gesichertes Verzeichnis im AFS an. Das Verzeichnis hat ein Quota-Limit von 5 GB. Auf den Login-Knoten kann auf das AFS-Verzeichnis des Nutzers
/afs/.cms.hu-berlin.de/user/$USER
zugegriffen werden. Vorher muss sich der Nutzer allerdings authentifizieren, in dem er die Kommandos:
kinit   (UNIX Passwort eingeben)
aklog 
eingibt. Das Ticket (Kerberos und AFS) ist dann 2 Tage gültig. Vor dem Logout sollte das Ticket wieder gelöscht werden mit
unlog; kdestroy

5. Module-Konzept

Um auf dem Cluster mit verschieden Versionen von Software arbeiten zu können, wurde das Module-Konzept angewendet. Die Versionen einer Software werden mit Hilfe von Skripten geladen und auch wieder entladen. In einem Batch-Skript ist das Entladen nicht erforderlich.
   module avai            listet alle verfügbaren Module
   module avai intel      listet alle intel Module
   module whatis          Kurzinformation zum Module
   module load <module>   lädt das gewünschte Module
   module list            listet die geladenen Module
   module rm <module>     entfernt ein Module
   module switch <module1> <module2>
                          wechselt auf ein anderes Module
   module unload module   entlädt das genannte Module 

6. Programmentwicklung

Zur Programmentwicklung stehen verschiedene Compiler und Bibliotheken zur Verfügung. Zum Parallelisieren von C- oder Fortran-Programmen sind die OpenMPI (Message Passing Interface) Bibliotheken installiert.

Auf dem Compute-Cluster können folgende Compiler genutzt werden:

Die Kommandos

mpicc, mpiCC, mpif77, mpif90

erzeugen parallele Programme, die unter OpenMPI laufen. Sie werden mit dem Kommando

mpirun

gestartet. Die Auswahl des gewünschten Compilerumgebung erfolgt über Module. Weitere Informationen finden Sie unter den Links zu den Compilern

Zum Parallelisieren eines Programms muss zusätzlich zum Compiler-Module noch das Module für die parallelen Bibliotheken geladen werden, beispielsweise openmpi-14-intel.
Soll beispielsweise die Berechnung der Zahl Pi parallelisiert werden, so könnte das folgendermaßen aussehen:

cd /work/$USER
cp /perm/skripte/ompi/pi3.f .
module load intel-cluster-322
module load openmpi-14-intel
module list
mpif90 -o pi3 pi3.f

Das erzeugte Programm pi3 ist ein paralleles Programm, das mit dem Intel-Compiler übersetzt wurde und über OpenMPI kommuniziert. Das Compilieren und Abarbeiten des Programmes muss in ein Batchskript verpackt und an SGE abgeschickt werden. Das Skript für das genannte Beispiel ist &nbsp/perm/skripte/ompi/run_ompi_16&nbsp.

7. Batchbetrieb

Auf dem Compute-Cluster ist als Batchsoftware Sun Grid Engine (SGE) installiert. Alle Rechnungen, die auf einem/mehreren der Knoten laufen sollen, sind an eine der Queues

   par, par_test        parallele Queues
   short, long          serielle Queues
   inter                interaktive Queue
   service              administrative Queue

abzuschicken. Das muss vom Login-Knoten aus geschehen. Kurze Compiler Läufe können auf dem Login-Server gestartet werden, längere sollten in die "short" Queue gestellt werden. Die seriellen Queues sind für serielle Rechnungen (auf nur einem Core), die parallelen Queues ausschließlich für parallele Rechnungen. Alle Queues sind Fair Share Queues, d.h. alle Nutzer bzw. Gruppen erhalten gleiche Ressourcen-Anteile in den Queues. Weitere Hinweise finden Sie auf den Seiten zur SGE-Zelle.


Cluster Skripte

Für alle Anwendungen gibt es Beispielskripte, die mit wenigen Änderungen zum Abschicken von Jobs verwendet werden können. Auf jeden Fall sollte die E-Mail Adresse geändert werden. Sie befinden sich im Verzeichnis &nbsp/perm/skripte&nbsp und dann in den entsprechenden Unterverzeichnissen.

g09            Gaussian Skripte
matlab         Matlab Skripte
ompi           OpenMPI Skripte
orca           ORCA Skripte
turbo          Turbomole Skripte

8. Anwendungssoftware

Gaussian09

Das Programmpaket Gaussian dient der Berechnung der elektronischen Struktur von Molekülsystemen. Es ist für theoretische und experimentelle Chemiker von Interesse.
Auf dem Compute-Cluster stehen die Versionen A.02 und C.01 zur Verfügung. Das Programm kann seriell oder parallel (über Shared Memory Routinen), unter Nutzung von max. 8 Cores, gerechnet werden. Die gewünschte Version des Programmes wird mit Hilfe eines Modules geladen.

module load g09-a02 
module load g09-c01
Alle notwendigen Variablen werden durch das Module voreingestellt. Die G09-Rechnungen sind im Batchbetrieb zu starten. Dazu dienen die weiter unten genannten Beispiel-Skripte. Für serielle Rechnungen sind die Queues short, long zu nutzen, für parallele Läufe die Queue par. Außerdem muss für einen parallelen Lauf im Eingabefile *.com definiert werden, wie viele Prozessoren verwendet werden sollen.

%NProcShared=8

z.B. startet den Lauf auf 8 Prozessoren unter Verwendung von SMP. Maximal sind 8 Prozessoren möglich. Diese Anzahl muss dann identisch sein mit der Anweisung im Skript (#$ -pe smp 8).
Es ist keine Default.Route definiert, so dass standardmäßig ein Memory-Wert von 6 MW genommen wird. In der seriellen Queue kann für den Link 0 ein max. Wert von 5 GB (%mem=5000mb) angegeben werden. In der parallelen Queue ein max. Wert von 42 GB (%mem=42000mb).

Die Dateien, die von Gaussian 09 geschrieben werden, werden standardmäßig im Verzeichnis $GAUSS_SCRDIR abgelegt. Dieses Verzeichnis ist als &nbsp/work/g09scr&nbsp definiert. Aus Performance Gründen kann dieser Wert im Skript neu gesetzt werden, z.B. auf &nbsp/scratch/g09scr&nbsp. Dazu muss im Skript die Zeile

GAUSS_SCRDIR=/scratch/g09scr

nach der "module"-Zeile eingefügt werden. Als Arbeitsverzeichnis des Nutzers kann zwischen den Verzeichnissen &nbsp/work/$USER&nbsp und &nbsp/scratch/$USER&nbsp gewählt werden. Der Vorteil des &nbsp/work/$USER&nbsp liegt darin, dass dieses Verzeichnis auch an dem Login-Knoten CLOU zur Verfügung steht, der Nachteil eine längere Laufzeit der Rechnung. Das Verzeichnis &nbsp/scratch/$USER&nbsp liegt nur lokal an den Knoten an, das Ergebnis muss also vom Knoten geholt werden. Das kann im Skript passieren mit der Zeile:

cp /scratch/$USER/g09/file.log /work/$USER/g09
oder man kopiert nach dem Ende der Rechnung die Ausgabe per scp auf das &nbsp/work&nbsp Verzeichnis:
scp node12:/scratch/$USER/g09/file.log /work/$USER/g09

Der Vorteil der Nutzung des &nbsp/scratch&nbsp Verzeichnisses liegt darin, dass die Laufzeit sich um einiges reduziert, was bei lang laufenden Jobs erheblich sein kann.

Alle temporären Verzeichnisse unterliegen einem Kontrollmechanismus, um zu verhindern, dass das Dateisystem überläuft. Es kommt vor, dass Gaussian bei Fehlern große "core" Dateien schreibt und diese im $HOME des Nutzers ablegt. Das kann zur Folge haben, dass das Quota-Limit des Nutzers überschritten wird und danach keine Rechnungen mehr ausgeführt werden können, bis die "core" Dateien entfernt sind. Um das zu verhindern, sollte das "core size limit" auf einen kleinen Wert oder 0 gesetzt werden. Unter der [t]csh muss die Zeile

limit coredumpsize 0

in das Loginskript eingetragen werden. Für die bash die Zeile

ulimit -c 0

in Datei .bashrc.
Skripte zum Abschicken von Gaussian09 Rechnungen stehen in den Verzeichnissen &nbsp/perm/skripte/g09_a02&nbsp bzw. &nbsp/perm/skripte/g09_c01&nbsp.

qsub run_g09_ser       -> seriell in Queue "short"
qsub run_g09_smp_scr   -> parallel in Queue "par" auf /scratch 
qsub run_g09_smp_work  -> parallel in Queue "par" auf /work

GaussView

Das Programm GaussView dient zur grafischen Darstellung der Ergebnisse von Gaussian Rechnungen. Die Version 5.09 des Programms korreliert mit der Version Gaussian09.

Da das Programm ein grafisches Werkzeug ist, kann es auf dem Cluster nur in der interaktiven Queue "inter" gestartet werden. Im Skript muss die Display Variable auf den lokalen Rechner gesetzt werden. Außerdem muss auf dem lokalen Rechner das Empfangen von Fenstern des Clusters zugelassen werden.

Im Verzeichnis /perm/skripte/g09_c01 gibt es ein Skript für einen interaktiven Start des GaussView Programms auf einem der Knoten des Clusters. In diesem Skript muss die DISPLAY Variable entsprechend den lokalen Bedingungen geändert werden

qsub run_gv_inter      -> interaktiv in Queue "inter"

MatLab

Die aktuelle Version ist Matlab R2010a. Die gewünschte Version wird mit Hilfe eines Modules geladen. Siehe Beispielskript run_matlab. Matlab kann im commandline Modus oder interaktiv aufgerufen werden. Interaktive Rechnungen sind in die Queue inter zu stellen. Nicht interaktive Rechnungen in die Queues short oder long. Beispiel-Skripte liegen im Verzeichnis /perm/skripte/matlab. Sie müssen den gewünschten Rechnungen angepasst werden. Auf jeden Fall muss die E-Mail Adresse geändert werden. Start der Skripte mit dem Kommando

qsub run_matlab

Maple

Die aktuelle Version ist Maple 14. Die gewünschte Version wird mit Hilfe eines Modules geladen. Siehe Beispiel-Skripte. Es kann im Kommandozeilenmodus (maple) oder als grafische Anwendung gestartet werden (xmaple). Die Beispiel-Skripte befinden sich im Verzeichnis /perm/skripte/maple und müssen den Wünschen des Anwenders angepasst werden. Auf jeden Fall muss die E-Mail Adresse geändert werden. Sie sind mit dem Kommando abzuschicken:

qsub  run_maple_inter
qsub  run_maple

Da die Umstellung des Lizenzservers auf die Version 14 erst am 11.8.2010 erfolgt, kann Maple im Moment noch nicht genutzt werden.

ORCA

Das Programm ORCA steht in der Version 2.7 zur Verfügung und kann parallel oder seriell gerechnet werden. Beispielskripte sind unter &nbsp/perm/skripte/orca&nbsp zu finden. Rechnungen sind über den Batchbetrieb zu starten. Für einen parallelen Lauf muss die Zeile

! PAL8

im Eingabefile stehen, um auf 8 Cores zu starten. Anderenfalls wird nur auf einem Core gerechnet. Das Skript ist mit

qsub run_orca_ompi

abzuschicken.



R Software

Die R Software steht auf allen Knoten des Compute-Clusters CLOU zur Verfügung. Die aktuelle Version ist R 2.14. Die R Kommandos müssen in ein Batch Skript gepackt werden und können dann seriell auf dem Compute-Cluster gerechnet werden.
Ein Beispielskript run_R_short befindet sich im Verzeichnis /perm/skripte/misc. Es ist ein einfaches Beispiel, das eine Matrix ausgibt.

cd 
cp /perm/skripte/misc/run_R_short .
-> vi run_R_short  -> E-Mail anpassen und ...
qsub  run_R_short

Die Ausgaben des genannten Beispiels stehen dann unter Jobid.out.

Es besteht auch die Möglichkeit, R interaktiv zu rechnen. Dazu muss das Skript

/perm/skripte/misc/run_R_inter

verwendet werden. Das Skript stellt den Job in die Queue inter. Es wird dann ein XTerm aufgemacht, in dem R aufgerufen wird. Beim Schließen des Fensters wird der Job beendet. Wichtig ist, dass im Skript die DISPLAY Variable gesetzt wird. Diese muss in der Form "hostname.domainname:0" angegeben werden, z.B.

export DISPLAY=pluto.cms.hu-berlin.de:0

Turbomole

Das Programmpaket Turbomole steht in der Version 6.1 für alle Mitarbeiter des Insituts für Chemie zur Verfügung. Es kann seriell und parallel gerechnet werden, allerdings nicht über einen Knoten hinweg. Eine parallele ridft Rechnung skaliert bis zu 8 Cores gut.
Das parallele Turbomole benutzt die MPICH-Bibliotheken, diese sind aber bereits in den parallelen Skripts enthalten, so dass sie nicht extra geladen werden müssen. Als Beispielskripte dienen:

qsub run_turbo61          
qsub run_turbo61_mpi   


9. Dokumentationen