Athene HPC-Cluster \@ Uni-Regensburg

Athene HPC-Cluster Uni-Regensburg

http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/hpc08.html
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/hpc08.pdf
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/hpc08.dvi
Feb 25, 2013

Chapter 1
What's New - Neuigkeiten

10'2012: Neue Kommandos: wip, qparams common
10'2012: Neue Graphikkarten
2012: Neuinstallation wegen Auslaufen der Wartungsverträge
13.6.2011: Neuer Knoten mit 2 Tesla M2070 GPGPU-Karten
10.1.2011: Neue Knoten 798, 801-816
11.2.2010: Neue Knoten 785-797
16.11.2009: Chapel von Cray, eine PGAS-Sprache mit Ziel hoher Produktivität, funktioniert.
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/hpccpl.html
10.11.2009: UPC, eine PGAS-Sprache, funktioniert.
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgasupc.html
30.10.2009: Titanium, eine PGAS-Sprache, funktioniert.
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgastit.html

Chapter 2
Probleme

module load parastation-gcc geht nicht

Chapter 3
Schnelleinstieg

Zum Rechnen auf der Athene benötigt man

3.1  Account

Bitte stellen Sie einen Antrag auf Clusterbenutzung im Rechenzentrum. Ihr normaler NDS-Account wird nach Genehmnigung auf die Athene übertragen.

Ein elektronisches Antragsformular finden Sie in

http://www-cgi.uni-regensburg.de/RZ/Dienste/Linux/HPC/index.phtml

3.2  Login

Der sog. Loginknoten ist Athene1; zum Arbeiten an der Athene müssen Sie sich dort einloggen. Als Account wird Ihr normaler NDS-Account verwendet. Beispiel mit ssh unter Linux:

ssh bbbxxxx@athene1 (aus dem Intranet)

Eine direkte Einwahl aus dem Internet ist verboten; Sie müssen von einem Rechner aus dem Intranet kommen. Für Studenten ist das vorzugsweise rex1, für wissenschaftliche Mitarbeiter rex2:

ssh bbbxxxx@rex1.rz.uni-regensburg.de
ssh athene1

Bildschirmprotokoll:

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/ssh.txt)

3.3  Wahl von Compiler und MPI-Library

Es stehen mehrere Werkzeuge zur Programmentwicklung zur Verfügung. Um sie benutzen zu können, müssen diverse Umgebungsvariable gesetzt werden. Das kann direkt geschehen, wenn Sie sich auskennen oder mit dem module-System automatisiert erfolgen.

In jedem Fall wird ein Compiler benötigt. Derzeit sind zwei Hersteller (FSF/Gnu, Intel), drei Sprachen (Fortran, C, C++) und ihre Versionsvarianten (Intel 10, Intel 11, gnu 4.1, gnu 4.4) verfügbar.

Hersteller Aufruf Sprache Compiler Version (Stand Oktober 2009)
FSF/Gnu gfortran Fortran gfortran 4.1.2, 4.4.1
FSF/Gnu gcc C gcc 4.1.2, 4.4
FSF/Gnu g++ C++ g++ 4.1.2, 4.4.1
Intel ifort Fortran ifort 10.0, 11.0
Intel icc C icc 10.0, 11.0
Intel icpc C++ icpc 10.0, 11.0

Über den aktuellen Stand können Sie sich jederzeit mit dem Kommando module avail informieren.

Die wichtigste Parallelbibliothek ist MPI, die auf der Athene in derzeit drei Varianten vorliegt.

MPI-Bibliothek Beschreibung Webseite für weitere Informationen
Parastation MPI MPICH für Infiniband
MVAPICH2 MPICH2 für IB mit VAPI http://mvapich.cse.ohio-state.edu/
Intel MPI (impi)

Die vierte Variante openMPI ist derzeit nur für den internen Gebrauch vorgesehen.

3.3.1  Wahl von Compiler/MPI-Library mit module

 
Eine ausführliche Beschreibung von module finden Sie unter

http://modules.sourceforge.net/
http://modules.sourceforge.net/man/module.html

module ist ein Alias für die folgende Kommandofolge mit dem Kommandokern /usr/bin/modulecmd

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/modalias.txt)

Die häufigsten module-Kommandos sind:

module avail (Welche Module existieren?)
module load parastation-gcc (Laden eines Moduls - hier impi-intel)
module list (Welche Module sind geladen?)
module unload parastation-gcc (Entfernen eines Moduls - hier parastation-gcc)

Manche Module schließen sich wechselseitig aus. Beim Wechsel muss dann vorher das alte Modul erst entfernt werden.

Module-Argument
dot GraphViz: Tool zur Erzeugung von Graphen
gcc-4.4 Gnu Compiler Collection 4.4 (C/C++/Fortran unterstützt OpenMP V3)
impi-gcc impi übersetzt mit gcc
impi-intel impi übersetzt mit icc
intel-10.0-icc Intel icc 10.0
intel-10.0-ifort Intel ifort 10.0
intel-11.0 Intel icc/ifort 11.0
module-cvs
module-info
modules
mvapich2-gcc MVAPICH2 übersetzt mit gcc
mvapich2-intel MVAPICH2 übersetzt mit icc
null
parastation-gcc Parastation MPI übersetzt mit gcc
parastation-intel Parastation MPI übersetzt mit icc
use.own

Zu OpenMP siehe http://sites.google.com/site/gfortransite/

Zu gfortran siehe http://gcc.gnu.org/wiki/GFortran

3.4  Übersetzung

Die Übersetzung normaler Programme und ihr Start sollte Linux-Kundigen keine Probleme bereiten. Nur die zusätzliche Verwendung paralleler Bibliotheken wie MPI erfordert Änderungen bei der gewohnten Bedienung.

In diesen Schnelleinstieg wird nur die Kombination FSF/Gnu mit Parastation-MPI beschrieben. Andere Kombinationen lesen Sie bitte in der ausführlicheren Dokumentation weiter unten nach.

Wir verwenden ein Hello-World-Programm mit MPI:

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/helmpi.c)

Es wird mit gcc übersetzt, anschließend wird Parastation-MPI anmontiert. Wie das folgende Beispiel zeigt, sind trotz des Wrappers mpicc die normalen Compiler-Optionen erlaubt. Natürlich müssen Sie ein Programm nur einmal übersetzen. Die bei der Option Wall erscheinende Warnung in mpi.h kann ignoriert werden.

module load parastation-gcc
mpicc helmpi.c
mpicc -v helmpi.c
mpicc -ansi -pedantic -Wall -o hp helmpi.c
In file included from helmpi.c:3:
/opt/parastation/mpi2/include/mpi.h:344: warning: ISO C90 does not support 'long long'

Die C++-Variante lautet:

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/helmpi.cc)

Es wird mit g++ übersetzt, anschließend wird Parastation-MPI anmontiert. Wie das folgende Beispiel zeigt, sind trotz des Wrappers mpicxx die normalen Compiler-Optionen erlaubt. Natürlich müssen Sie ein Programm nur einmal übersetzen. Die bei der Option Wall erscheinende Warnung in mpi.h kann ignoriert werden.

module load parastation-gcc
mpicxx helmpi.cc
mpicxx -v helmpi.cc
mpicxx -ansi -pedantic -Wall -o hp helmpi.cc

3.5  Start von HPC-Jobs

Das übersetzte Programm sollte normalerweise als Batchjob zur parallelen Ausführung auf den Knotenrechnern gestartet werden. Dazu wird Torque verwendet. Es ermöglicht sowohl einen interaktiven Start von Jobs (z.B. zum Debuggen) als auch den Start von Batch-Jobs. Torque ist aus dem älteren OpenPBS hervorgegangen. Deshalb taucht das Kürzel PBS in den Submit-Scripts auf. Der Scheduler heißt Maui.

Beschreibung:

http://www.clusterresources.com/pages/resources/documentation.php
http://www.clusterresources.com/pages/products/torque-resource-manager.php
http://www-theor.ch.cam.ac.uk/IT/servers/maui/maui-pbs-introduction.html

Der Batchjob wird in einem modifizierten Shell-Script, einem sog. PBS-Script aufgerufen. Als Script-Prozessor eignen sich alle Linux-Script-Prozessoren (bash, csh, sh,...).

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/batch.sh)

Mit der ersten Pseudokommentarzeile (Shebang #!/bin/bash) wird bash zur Ausführung gestartet. Die folgenden PBS-Direktiven (#PBS directive) sind mit dem Schlüsselwort PBS als Direktiven gekennzeichnet. Zeile 2 fordert 4 Knotenrechner (nodes) mit je 8 CPUs (ppn - processors per node, cores), also insgesamt 32 Cores an. Zeile 3 stellt eine maximale Verweilzeit (walltime - Wanduhr) des Jobs von 1 Minute ein. Verweilt der Job länger als die hier angegebene Zeit im System, wird er automatisch abgebrochen. Kleine Werte führen andereseits zu einem früheren Jobstart als größere. Wählen Sie also die Werte nach dem Prinzip so klein wie möglich, so groß wie nötig, vielleicht mit einem moderaten Sicherheitszuschlag nach oben. Diese Angabe wird also vom Batchsystem verwendet, um den Zeitpunkt des Jobstarts zu bestimmen und um zu lange (möglicherweise fehlerhafte) Jobs wieder zu entfernen. Der folgende Kommentar in Zeile 5 begrenzt die Rechenzeit (cput - CPU Time pro Core) auf 1 Minute. Dieser Wert kann angegeben werden, spielt jedoch keine Rolle, da er vom Batchsystem nicht verwendet wird. Der Rest der Datei besteht aus normalen Shellscript-Kommandos. Das cd-Kommando wechselt vom möglicherweise falschen Verzeichnis ${HOME} in das Verzeichnis ${PBS_O_WORKDIR}, aus dem das PBS-Script aufgerufen wurde. Hier werden auch die Resultate gespeichert. Das letzte Kommando mpiexec startet das Programm in der Datei hp auf 32 Cores (die Datei hp wurde wie in der letzten Übersetzung weiter oben erstellt).

Der Job wird mit dem Kommando

qsub batch.sh

in die Queue gestellt und abgearbeitet, sobald genügend Knoten frei geworden sind und der Job unter allen mit ihm konkurrierenden die höchste Priorität bekommen hat.

Auch im qsub-Kommando können begrenzende Limits als Option wie im PBS-Script selbst angegeben werden. Im folgenden Beispiel wird mit der Option -l (limit) die maximale walltime begrenzt. Von mehreren konkurrierenden Angaben gilt zunächst die qsub-Angabe, dann die PBS-Angabe und zuletzt die Voreinstellung.

qsub -l walltime=2:0:0 batch.sh (beim Start)
#PBS -l walltime=2:00:00 (im PBS-Script)

Mit dieser Beispiel-Option wird die maximale Verweilzeit (walltime) auf 2 Stunden begrenzt. Begrenzung der CPU-Zeit (cput) hat keine Wirkung.

Über den Status von Jobs, Queues und Server gibt das Kommando qstat Auskunft.

qstat
qstat  job-id
qstat -f  job-id
qstat -q  Queue-Übersicht
qstat -Q  Queue-Übersicht

Versehentlich gestartete Jobs können mit qdel wieder gelöscht werden:

qdel job-id

Nach dem normalen Ende eines Jobs werden die nach stdout und stderr geschriebenen Programmergebnisse in zwei Dateien geschrieben, deren Namen mit dem PBS-Scriptnamen beginnen und die Jobnummer enthalten. Im Beispiel sind das

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/eofiles.txt)

Ein interaktiver Job wird gestartet mit

qsub -I

Queue-Übersicht (Jan'2011):

common
common32
striegnitz
rzkurs
spang_i
merkl
bocola
condmat
serial
develop
express
dick

Chapter 4
Allgemeines

4.1  Zeittafel

Abnahme: 26.2.2009

Testbetrieb: Februar 2009

Einweihung: 29.4.2009

Inbetriebnahme: 1.4.2009

Chapter 5
Hardware

In der veralteten und zu groben Taxonomie nach Flynn ist die Athene als MIMD-Architektur aufgebaut. Die Struktur des gesamten Clusters ist eine Distributed Memory Architektur. Jeder Knoten hat seinen eigenen Speicher, die Kommunikation erfolgt über eines der beiden Netze (Infiniband, GigE). Jeder einzelne Knoten verfügt über zwei Prozessoren mit je eigenem Speicher, der jedoch prinzipiell von beiden Prozessoren genutzt werden kann, also eine ccNUMA-Architektur. Jeder der beiden Prozessoren besteht aus vier Rechnerkernen mit gemeinsamem Speicher, bildet also eine SMP-Architektur.

5.1  Rechner

Bei der Erstinstallation war der Cluster fast homogen. Bei Erweiterungen kann diese Homogenität nicht erhalten bleiben.

5.1.1  Übersicht

 
Login Node (Athene 1), Typ S1
Master Node (Athene 2), Typ S1
File Server (Athene 3-4), 2 Typ S1

Node 1-122 (Infiniband), 122 Typ O1
Node 123-143 (Infiniband), 21 Typ O2
Node 144-176 (Infiniband), 33 Typ O3
Node 769-776, 780 (Gigabit Ethernet), 9 Typ O4
Node 777-779 (Gigabit Ethernet), 3 Typ O5

Node 785-797 (Gigabit Ethernet), 13 Typ X1
Node 798,801-816 (Gigabit Ethernet), 17 Typ X2
Node 833-834 (Infiniband), 2 Typ X3

Zusammen 220 Knoten, 402 × Quadcore-CPUs, 38 × Hexacore-CPUs und 1836 Cores (1504 Opteron, 104+228 Xeon).

Gesamtspeicher: 4352 GiB (Damit kann grob im gesamten Cluster eine dichte n×n-Matrix, n=700000 gespeichert werden. Die Größenordnung der Rechenzeit für eine Gausselimination bei dieser Matrix ist bei 220 Knoten = 1760 Cores mit 2 GHz rechnerisch mindestens t=20 h.)

Nicht jeder node ist allgemein verfügbar.

5.1.2  Ausstattung der Rechenknoten Typ O1, 1-122

 
CPU: 2 × AMD K10 Quad-Core, 2,2 GHz (Opteron 2354, Barcelona B3)
RAM: 16 GiB
HDD: 250 GB
Interconnect: GbE, 4X-DDR IB

5.1.3  Ausstattung der Rechenknoten Typ O2, 123-143

 
CPU: 2 × AMD K10 Quad-Core, 2,2 GHz (Opteron 2354, Barcelona B3)
RAM: 16 GiB
HDD: 500 GB
Interconnect: GbE, 4X-DDR IB

5.1.4  Ausstattung der Rechenknoten Typ O3, 144-176

 
CPU: 2 × AMD K10 Quad-Core, 2,2 GHz (Opteron 2354, Barcelona B3)
RAM: 32 GiB
HDD: 500 GB
Interconnect: GbE, 4X-DDR IB

5.1.5  Ausstattung der Rechenknoten Typ O4, 769-776,780

 
CPU: 2 × AMD K10 Quad-Core, 2,2 GHz (Opteron 2354, Barcelona B3)
RAM: 16 GiB
HDD: 500 GB
Interconnect: GbE

5.1.6  Ausstattung der Rechenknoten Typ O5, 777-779

 
CPU: 2 × AMD K10 Quad-Core, 2,2 GHz (Opteron 2354, Barcelona B3)
RAM: 32 GiB
HDD: 1 TB
Interconnect: GbE

5.1.7  Ausstattung der Rechenknoten Typ S1, athene[1-4]

 
CPU: 2 × AMD K10 Quad-Core, 2,2 GHz (Opteron 2354, Barcelona B3)
RAM: 32 GiB
HDD: 146 GB SAS
Interconnect: 10 GbE, 4X-DDR IB

5.1.8  Ausstattung der Rechenknoten, Typ X1, 785-797

 
CPU: 2 × Intel Xeon, 2,4 GHz (E5530, Nehalem-EP "Gainestown" [4 Cores, 8 Threads])
RAM: 24 GiB
HDD: 250 GB
Interconnect: GbE

5.1.9  Ausstattung der Rechenknoten, Typ X2, 798, 801-816

 
CPU: 2 × Intel Xeon, 2,66 GHz (X5650, Westmere-EP "Gulftown" [6 Cores, 12 Threads])
RAM: 24 GiB
HDD: 250 GB
Interconnect: GbE

5.1.10  Ausstattung der Rechenknoten, Typ X3, 833,834

 
CPU: 2 × Intel Xeon, 2,8 GHz (X5660, Westmere-EP "Gulftown" [6 Cores, 12 Threads])
GPU: 1 × M2070 (nVidia Tesla "Fermi"), 6 GiB ECC-RAM, 448 CUDA-Recheneinheiten
(Organisation: 14 Shadercluster a 32 Streamprozessoren; theoretische Leistung: Rpeak_SP 1.03TFlops, Rpeak_DP 515GFlops)
RAM: 24 GiB
HDD: 250 GB
Interconnect: GbE, 4X-QDR IB
System: Debian

5.1.11  Zugriffsrechte

 
public: 1-108, 144-176 (common queue)
seriell: 769 - 780
common32: 144-176 (4GiB pro Prozess)
Striegnitz: 109-122
Spang: 123-134, 769-776
Merkl: 135-143
Bocola: 777-779
condmat (Richter/Grifoni): 785-797, 801-816
dick: 798
tesla: 833,834 (currently in development)

5.1.12  Voreinstellung der Queues common, common32, serial, express und develop

 
min.nodect = 2
max.nodect = 32
default.pmem = 1 GiB
max.pmem = 2 GiB
default.nodes = 2:ppn = 8
max.walltime = 48:00 h
max_user_queuable = 20

default.nodes = 1:ppn = 1 (serial queue)

default.pmem = 2 GiB (common32)
max.pmem = 4 GiB (common32)

max.walltime = 5:00 h (express)
max.nodect = 4 (express)

max.walltime = 0:10 h (develop)

Aktuelle Angaben mit qstat -q und qstat -Q erfragen!

5.2  Netz

Gigabit Ethernet (Broadcom Corporation NetXtreme Gigabit Ethernet PCI Express (rev 21))

Infiniband (DDR 4x, 20 GBit/s, InfiniBand: Mellanox Technologies MT25204 [InfiniHost III Lx HCA] (rev 20))

Zwei unabhängige Netze, die beide für Message Passing verwendet werden können. Das Ethernet wird eher für Verwaltungszwecke, Infiniband eher für Message Passing eingesetzt. Message Passing mit Ethernet bremst Programme um einen Faktor von etwa 8.

5.3  Dateisystem

5.3.1  Dateiserver


Athene3

Athene4

Zwei NFS-Server für die Dateisysteme $HOME (quotiert, 3GiB/15000 files), /scratch und /data.

Derzeit existiert kein paralleles Filesystem.

5.3.2  Lokale Filesysteme: NFS

/tmp kann auch für lokale temporäre Daten verwendet werden; ist bei verteilter Anwendung mit vielen Knoten unter Umständen schneller als /scratch.

5.3.3  Umgang mit den Scratch-Verzeichnissen

Achtung: Es ist unfair und wird überwacht, ob Dateien mit touch aufgefrischt werden.

Chapter 6
Betriebssystem

SLES10 SP2 Enterprise Linux (Novell)

Chapter 7
Sprachen und Compiler

7.1  FSF/Gnu

Alle Gnu-Compiler stehen ohne weitere Vorbereitung direkt zur Verfügung (gfortran, gcc, g++). Für MPI-Programme sollte ein Wrapper zur Übersetzung benutzt werden (mpicc).

7.2  Intel

Intel muss mit module load aktiviert werden.

module load intel-11.0
module load intel-10.0-icc
module load intel-10.0-ifort

Die Compiler heißen mit ifort, icc und icpc.

/opt/intel/Compiler/11.0/074/Documentation
http://www.uni-r.de/EDV/kurs_info/brf09510/hpc/opt/intel/Documentation/getting_started_c.htm
http://www.uni-r.de/EDV/kurs_info/brf09510/hpc/opt/intel/Documentation/getting_started_f.htm

Es wird mit dem Compiler von Intel und der MPI-Bibliothek von MVAPICH übersetzt:

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/mpicc.txt)

7.3  OpenMP

OpenMP (Open Multiprocessing) ermöglicht parallele Ausführung in mehreren Threads, die durch Compiler-Direktiven in C, C++ und Fortran gesteuert werden.

Derzeit mit den Intel- und mit Gnu-Compilern (Version 4.4) möglich.

Zu OpenMP siehe http://sites.google.com/site/gfortransite/

Zu gfortran siehe http://gcc.gnu.org/wiki/GFortran

Umgebungsvariable für OpenMP:
setenv OMP_NUM_THREADS 5 (c-shell)
export OMP_NUM_THREADS=5 (bash)

Übersetzung mit
gcc -fopenmp x.c

7.4  PGAS

7.4.1  co-Array Fortran

siehe http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgascaf.html

7.4.2  UPC: Unified parallel C

siehe http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgasupc.html

7.4.3  Titanium: PGAS-Sprache auf Java-Gundlage

siehe http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgastit.html

Titanium ist eine in Berkeley entwickelte Java-basierte PGAS-Sprache. Webseite:
http://titanium.cs.berkeley.edu/

Im Verzeichnis
/home/brf09510/tc

existiert eine clusterfähige Titaniuminstallation. Sie kann benutzt werden, wenn ihr Verzeichnisname in den Pfad eingetragen wird.
setenv PATH "${PATH}:/home/brf09510/tc/bin"

Der Compiler kann (fast) jedes Java-Programm und jedes Titanum-Programm übersetzen. Die umfangreiche Java-Bibliothek steht natürlich nur sehr eingeschränkt zur Verfügung. Der Compileraufruf ist
tcbuild --help
tcbuild --backend gasnet-ibv-uni hello.ti
tcbuild --backend mpi-cluster-uniprocess hello.ti
tcbuild --backend sequential hello.ti
tcbuild --backend smp hello.ti

Übersetzte Titanium-Programme werden mit normalen PBS-Jobs auf den Clusterknoten gestartet. Das folgende Beispiel startet ein Programm in der Datei ./hello.

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/titjob.sh)

7.4.4  X10

http://x10-lang.org/
http://dist.codehaus.org/x10/documentation/languagespec/x10-latest.pdf
http://domino.research.ibm.com/comm/research_projects.nsf/pages/x10.index.html.

7.4.5  Chapel

http://chapel.cray.com/spec/spec-0.795.pdf
http://chapel.cray.com/.

7.4.6  Fortress

Chapter 8
Bibliotheken

8.1  Parallelrechnen

8.1.1  Parastation-MPI (modifiziertes MPICH mit Infiniband-Kommunikation)

8.1.2  mvapich

8.1.3  Intel-MPI

/opt/intel/impi/3.2.0.011/Doc_Index.html
http://www.uni-r.de/EDV/kurs_info/brf09510/hpc/opt/intel/impi/3.2.0.011/Doc_Index.html

8.1.4  OpenMP

8.2  Atlas

Die Bibliothek steht im Verzeichnis

/opt/lapack/atlas-3.8.2

Mit dem folgenden Beispielprogramm (Quelle: http://math-atlas.sourceforge.net/faq.html) wird die Versionsnummer der Bibliothek am Bildschirm ausgegeben:

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/atlasv.c)

Übersetzung des Beispiels und Start:

(http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/atlasv.r)

8.3  MKL Math Kernel Library

/opt/intel/Compiler/11.0/074/Documentation/mkl
http://www.uni-r.de/EDV/kurs_info/brf09510/hpc/opt/intel/Documentation/mkl/mkl_documentation.htm

Chapter 9
Torque und Maui

9.1  Torque

9.1.1  Übersicht

siehe http://www.clusterresources.com/products/torque/docs/a.acommands.shtml

9.1.2  qsub

siehe http://www.clusterresources.com/products/torque/docs/commands/qsub.shtml

9.1.3  Ressourcen

siehe http://www.clusterresources.com/products/torque/docs/2.1jobsubmission.shtml\#resources

Ressource Wert Bedeutung
cput [[hh:]mm:]ss Maximale CPU-Zeit pro core des Jobs
walltime [[hh:]mm:]ss Maximale Verweilzeit des Jobs

9.1.4  qstat

9.1.5  qdel

9.2  PBS

9.2.1  PBS Umgebungsvariable

 
Die folgenden Umgebungsvariable werden von der Umgebung des qsub-Kommandos weitergereicht:

Variable Wert (Bsp) Beschreibung
PBS_ENVIRONMENT PBS_BATCH set to PBS_BATCH to indicate that the job is a batch job; otherwise
set to PBS_INTERACTIVE to indicate that the job is a PBS interactive job
PBS_JOBID 165139.Athene2 the job identifier assigned to the job by the batch system
PBS_JOBNAME batch.sh the job name supplied by the user
PBS_NODEFILE /var/spool/torque/aux// the name of the file that contains the list of the nodes
165139.Athene2 assigned to the job
PBS_QUEUE common the name of the queue from which the job is executed
PBS_TMPDIR

Die Umgebungsvariable X aus der Umgebung des qsub-Kommandos wird als Variable PBS_O_X weitergereicht.

Variable Wert (Bsp) Beschreibung
PBS_O_HOME /home/brf09510 HOME variable in the evvironm. in which qsub was executed
PBS_O_LANG en_US.UTF-8 LANG variable in the evvironm. in which qsub was executed
PBS_O_LOGNAME brf09510 LOGNAME variable in the evvironm. in which qsub was executed
PBS_O_PATH /usr/bin:/bin:/ PATH variable in the evvironm. in which qsub was executed
PBS_O_MAIL /var/mail/brf09510 MAIL variable in the evvironm. in which qsub was executed
PBS_O_SHELL /bin/tcsh SHELL variable in the evvironm. in which qsub was executed
PBS_O_TZ TZ variable in the evvironm. in which qsub was executed
PBS_O_HOST Athene1.uni-regensburg.dethe name of the host upon which the qsub command is running.
PBS_SERVER Athene1.uni-regensburg.dethe hostname of the pbs_server which qsub submits the job to.
PBS_O_QUEUE batchthe name of the original queue to which the job was submitted.
PBS_ARRAYID each member of a job array is assigned a unique identifier (see -t)
PBS_O_WORKDIR /home/brf09510the abs. path of the current working dir. of the qsub command

Zusätzlich werden die folgenden Umgebungsvariable definiert:

Variable Wert (Bsp) Beschreibung
PBS_O_HOST Athene1.uni-regensburg.de the name of the host upon which the qsub command is running
PBS_O_QUEUE batch the name of the original queue to which the job was submitted
PBS_O_WORKDIR /home/brf09510 the absolute path of the current working directory of the qsub command

9.3  Maui

Chapter 10
Debuggen

Intel

/opt/intel/Compiler/11.0/074/Documentation/idb
/opt/intel/Compiler/11.0/074/idb/Getting_Started.html
http://www.uni-r.de/EDV/kurs_info/brf09510/hpc/opt/intel/Documentation/idb/Getting_Started.html
http://www.uni-r.de/EDV/kurs_info/brf09510/hpc/opt/intel/Documentation/idb/debugger_documentation.htm

Chapter 11
Weitere Details

Parastation zur Steuerung des Clusters (Process Management)

Gridmonitor

Webseite: http://cluster-competence-center.com/support.php

Chapter 12
Glossar

AMD: CPU-Hersteller (K10).

ATLAS: Automatically Tuned Linear Algebra Software. Zur Zeit stehen C- und F77-Schnittstellen bereit, die effiziente parallele BLAS- und LAPACK-Funktionen aufrufen.

Bandbreite (bandwidth): Maximale Frequenz, mit der Daten über eine Verbindung des Netzes geschickt werden können. Einheit: Byte pro Sekunde. Daraus folgt die Übertragungszeit t für n Byte mit der Bandbreite b: t = n /b.

Barcelona: Quadcore-Chip von AMD mit vier K10-Architekturen.

BSP: Bulk Synchroneous Programming; älteres Software-Modell mit Message Passing; http://www.bsp-worldwide.org/.

CAF: siehe Co-Array Fortran

ccNUMA: Cluster-Architektur (Cache Coherent Nonuniform Memory Access). Jede CPU verfügt über einen Cache zum Speicher; manchmal teilen sich CPU-Gruppen einen gemeinsamen Cache. Jede CPU kann aber prinzipiell (schlimmstenfalls nach Wartezeit) auf jede Speicherzelle zugreifen. Die Caches werden automatisch synchronisiert. Der Cache beschleunigt die Speicherzugriffe im Vergleich zu NUMA.

Chapel: Eine PGAS-Sprache von Cray
http://chapel.cray.com/spec/spec-0.795.pdf
http://chapel.cray.com/.

CMF: nicht mehr aktuelles Software-Modell.

Co-Array Fortran: PGAS-Sprache;
http://www.nag.co.uk/SC22WG5/.
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgascaf.html (Skript)

CUDA: Software-Modell von NVidia (siehe GPU).

Core: CPU-Kern (Unabhängig agierende ALU/FPU, die ein Programm eigenständig abarbeiten kann).

DARPA: Defense Advanced Research Projects Agency (U.S Department of Defense institute) Urheber eines Projektes für den Entwurf neuer paralleler Programmiersprachen 2002. Seit 2006 konkurrieren noch die Entwürfe X10 (IBM), Chapel (Cray) und Fortress (Sun).
http://www.hpcx.ac.uk/research/hpc/technical_reports/HPCxTR0706.pdf.

Distributed Memory: Cluster-Architektur. Jeder Prozessor hat seinen eigenen Speicher. Datenaustausch zwischen den Prozessoren erfolgt über ein unabhängiges Netz.

DM/DMEM: Distributed memory; viele Prozessoren haben je einen eigenen Speicher; vermeidet Flaschenhälse; erfordert Kommunikation.

DMP: Distributed Memory Processing; Jede CPU ist mit eigenem Speicher ausgestattet. Alternative zu SMP.

Fortress: PGAS-Sprache von Sun.
http://projectfortress.sun.com/Projects/Community/
http://research.sun.com/projects/plrg/fortress.pdf
http://research.sun.com/projects/plrg/Publications/GSPx-Lecture2006public.pdf.

GAS: Global address space

GASNET: Global-Address Space Networking. GASNet is a language-independent, low-level networking layer that provides network-independent, high-performance communication primitives tailored for implementing parallel global address space SPMD languages such as UPC, Titanium, and Co-Array Fortran. The interface is primarily intended as a compilation target and for use by runtime library writers (as opposed to end users), and the primary goals are high performance, interface portability, and expressiveness.
http://gasnet.cs.berkeley.edu/

GigE: Gigabit Ethernet.

GPU-Programming (siehe CUDA): Graphik-Prozessor.

HPF: High Performance Fortran.

IB: Infiniband.

IPMI: Intelligent Platform Management Interface - Protokoll.

K10: CPU-Architektur von AMD (auch AMD Opteron (K10)).

Latenz: Verweilzeit einer Nachricht im Netz. Latenz T für n Byte mit Bandbreite b bei einem Overhead o: T = o + n / b. Der Overhead besteht aus den meist konstanten Zeiten, die zum Start und Empfang der Nachricht benötigt werden und der Signalllaufzeit für 1 Bit.

MIMD: (Flynn); Multiple Instruction Multiple Data; mehrere unabhängige Prozessoren bearbeiten mehrere Befehlsströme mit unabhängigen Daten. Je nach Speicherarchitektur unterscheidet man SM/SHMEM, DM/DMEM und VSM.

MISD: (Flynn); Multiple Instruction Single Data; eigentlich überflüssige Einstufung, die nur zur Vervollständigung von SISD, SIMD, MISD, MIMD eingeführt wurde. Um dem Ausdruck nachträglich doch noch Sinn zu verleihen, wurden hier Pipeline-Architekuren, die ja hintereinander mit demselben Datum arbeiten, subsummiert. Eigentlich jedoch liegt aber nach jedem Pipeline-Schritt ein anderes modifiziertes Datum vor. Weiter werden hier fehlerredundante Mehrfacharchitekturen genannt, wo mehrere Prozessoren mit demselben Datum rechnen, deren Ergebnis nur akzeptiert wird, wenn es überall gleich ist.

MPI: Message Passing Interface (MPI-1, MPI-2); wichtigstes Software-Modell http://www.mpi-forum.org/docs/.

MPICH Das CH von MPICH kommt von CHameleon, eine Bezeichnung für die Portabilitätsschicht im ursprünglichen MPICH, die den Anschluss an beliebige Message-Passing-Systeme gewährleistet.
http://wiki.mcs.anl.gov/mpich2/index.php/Frequently_Asked_Questions

MVAPICH Der Name MVAPICH signalisiert, dass die zugrundeliegende MPI-Implementierung MPICH die InfiniBand VAPI-Schnittstelle benutzt. Die offizielle Aussprache ist Emwahpitsch.
http://mvapich.cse.ohio-state.edu/
http://mvapich.cse.ohio-state.edu/support/faq.shtml

Node: Knotenrechner mit ggf mehreren CPU-Kernen.

NUMA: Cluster-Architektur. (Non Uniform Memory Access).Vielen Prozessoren ist je ein eigener Speicher zugeordnet, aber prinzipiell kann jeder Prozessor, ggf. nach einer Wartezeit, jede Speicherzelle, auch die anderer Prozessoren, benutzen.

OpenMP: Open Multiprocessing; Thread-basiertes Software-Modell http://openmp.org/wp/.

Open MPI: Open Source MPI-Implementierung. Jünger als MPICH. Vorsicht: hat soviel mit OpenMP zu tun wie Javascript mit Java! http://www.open-mpi.org/

PBS: Portable Batch System.

PGAS: Partitioned global address space; Software-Modell mit global nutzbarem, aber bereichsweise den Prozessoren zugeteiltem Speicher.

PThreads: Thread-Modell für C von POSIX.

PVM: Parallel Virtual Machine; Software-Modell mit Message Passing http://www.csm.ornl.gov/pvm/.

Shebang, auch Magic Line: mit #! beginnende Scriptzeile, die als Kommando mit der Scriptdatei als Argument ausgeführt wird.

SISD: (Flynn); Single Instruction Single Data; der klassische sequentielle Rechner.

SIMD: (Flynn); Single Instruction Multiple Data; Ein Befehlswerk holt und analysiert Befehle. Die eigentliche Ausführung wird von einem Array mehrerer Prozessoren übernommen, die dann mit mehreren Datenströmen unabhängig dieselbe Befehlssequenz durchführen können.

SHMEM/SM: SHared MEMory; viele Prozessoren teilen sich einen gemeinsamen Speicher; Flaschenhals bei Speicherzugriff; Notwendigkeit der Synchronisation von Schreibzugriffen; kein Datenaustausch zwischen den Prozessoren nötig (keine Kommunikation). SHMEM ist auch eine Kommunikationebibliothek von Cray.

SM/SHMEM: siehe SHMEM.

SMP: Cluster-Architektur. (Symmetric MultiProcessing). Viele Prozessoren greifen gleichberechtigt auf alle restlichen Resourcen, insbesondere den gemeinsamen Speicher, zu. Der gemeinsame Datenbus bildet hier einen extremem Flaschenhals. Alternative zu DMP.

Split-C: GAS-Sprache (PGAS ohne P) aus Berkeley http://www.cs.berkeley.edu/~yelick/arvindk/splitc-super93.ps.

Titanium: Java-basierte PGAS-Sprache.
http://titanium.cs.berkeley.edu/
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgastit.html (Skript)

Torque: Terascale Open source Resource and QUEue manager.

UMA: Cluster-Architektur. (Uniform Memory Access): Viele Prozessoren greifen gleichberechtigt über mehrere Zugänge auf den gemeinsamen Speicher zu. Das beschränkt den Flaschenhals von SMP auf die Fälle, in denen auf Daten in derselben Speicherbank zugegriffen wird.

UPC: C-basierte PGAS-Sprache;
http://upc.gwu.edu/docs/upc_specs_1.2.pdf.
http://www.uni-regensburg.de/EDV/kurs_info/brf09510/hpc/pgasupc.html (Skript)

VSM: Virtual Shared Memory; Oberbegriff zu NUMA und PGAS

X10: PGAS-Sprache con IBM; Java-basiert;
http://x10-lang.org/
http://dist.codehaus.org/x10/documentation/languagespec/x10-latest.pdf
http://domino.research.ibm.com/comm/research_projects.nsf/pages/x10.index.html.

Inhalt

Contents

TTH-Seite:
http://hutchinson.belmont.ma.us/tth/




File translated from TEX by http://hutchinson.belmont.ma.us/tth/"> TTH, version 3.89.
On 25 Feb 2013, 12:31.