17.06.2014 Aufrufe

Einführung in die Rechendienste - RRZN

Einführung in die Rechendienste - RRZN

Einführung in die Rechendienste - RRZN

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Compute<strong>die</strong>nste am<br />

Rechenzentrum<br />

Scientific Comput<strong>in</strong>g Gruppe<br />

css@rrzn.uni-hannover.de<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 1


Inhalt<br />

1 Zugang<br />

2 Arbeitsablauf<br />

3 Verfügbare Rechenleistung<br />

4 Anwendungen und Software<br />

5 Die Modules-Umgebung<br />

6 Benutzung des Batchsystems<br />

7 Beispiel-Batchskripte<br />

8 Dateisysteme<br />

9 Wenn Fehler auftauchen. . .<br />

10 Informationsl<strong>in</strong>ks<br />

11 Kontakt<strong>in</strong>formationen<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 2


Skizze des Clustersystems<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 3


Zugang–Accounts beantragen<br />

E<strong>in</strong> »Projekt« ist vorhanden:<br />

Der Projektleiter beantragt e<strong>in</strong>en neuen Account über <strong>die</strong> BIAS Webseite:<br />

https://bias.rrzn.uni-hannover.de<br />

Ke<strong>in</strong> vorhandenes »Projekt«:<br />

ORG.BEN4 ausfüllen<br />

danach Account über BIAS erstellen<br />

Tipps:<br />

Beantragter Benutzername soll den Namen des Nutzers abbilden<br />

Mailadresse des Nutzers angeben<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 4


Zugang–zum System<br />

ssh log<strong>in</strong>-node.rrzn.uni-hannover.de<br />

(Zugangsknoten: Orac und Avon)<br />

Hier kann man:<br />

Rechenjobs vorbereiten<br />

Batchskripte vorbereiten<br />

Rechenjobs <strong>in</strong> <strong>die</strong> Queue (Jobwarteschlange) schicken<br />

Kle<strong>in</strong>e Tests laufen lassen<br />

Den Queuestatus abfragen<br />

Rechenergebnisse sichten<br />

Dateien <strong>in</strong> das Archivsystem kopieren<br />

Dateien zum Arbeitsplatzrechner kopieren<br />

NICHT für Produktionsläufe: Maximale Laufzeit 30 M<strong>in</strong>uten, danach<br />

werden Prozesse abgebrochen<br />

Alle Anwendungen, Compiler und Tools s<strong>in</strong>d verfügbar<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 5


Zugang–zum System (W<strong>in</strong>dows; grafische Oberfläche)<br />

NX<br />

Kostenlos (frei verfügbar)<br />

Sehr schnell, kann über langsame Leitungen benutzt werden<br />

http://www.rrzn.uni-hannover.de/cluster-zugang.html#c15446<br />

X-W<strong>in</strong>32<br />

Kosten: 10 e<br />

http://www.rrzn.uni-hannover.de/cluster-zugang.html#c12246<br />

XM<strong>in</strong>g<br />

Kostenlos (Open-Source-Software)<br />

Benutzt PuTTY für e<strong>in</strong>e verschlüsselte Verb<strong>in</strong>dung zu den Log<strong>in</strong>knoten<br />

http://www.rrzn.uni-hannover.de/cluster-zugang.html#c12252<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 6


Zugang–zum System (W<strong>in</strong>dows; weitere Software)<br />

PuTTY: Nutzung mit der Kommandozeile auf den Log<strong>in</strong>knoten<br />

Kostenlos (Open-Source-Software)<br />

Benutzt e<strong>in</strong>e SSH (Secure-Shell) verschlüsselte Verb<strong>in</strong>dung<br />

http://www.rrzn.uni-hannover.de/cluster-zugang.html#c14762<br />

FileZilla: Dateien transferieren<br />

Kostenlos (Open-Source-Software)<br />

Be<strong>die</strong>nung über grafische Oberfläche<br />

http://filezilla-project.org/<br />

Dokumentation:<br />

http://www.rrzn.uni-hannover.de/cluster-zugang.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 7


Arbeitsablauf<br />

Dateien vom Arbeitsplatzrechner auf e<strong>in</strong>en der Log<strong>in</strong>knoten kopieren<br />

Sicher stellen, dass das Programm funktioniert<br />

Batchskript schreiben<br />

Batchskript submittieren; Job <strong>in</strong> <strong>die</strong> Warteschlange absetzen<br />

⇒ qsub <br />

Jobstatus überprüfen<br />

⇒ qstat -a<br />

http://www.rrzn.uni-hannover.de/betriebsstatus.html<br />

Überflüssige Daten löschen<br />

Optional: Ergebnisse zum Arbeitsplatzrechner zurückkopieren<br />

Optional: Ergebnisse <strong>in</strong>s Archivsystem kopieren<br />

⇒ Account zum Archiv muss über BIAS freigegeben werden<br />

http://www.rrzn.uni-hannover.de/batchsystem.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 8


Verfügbare Rechenleistung<br />

3 Cluster (für Jobs, <strong>die</strong> viele CPUs brauchen)<br />

Tane: 96 Knoten; je 12 Kerne á 2.9 GHz; 48 GB<br />

Paris: 11 Knoten; je 8 Kerne á 3 GHz; 64 GB<br />

Taurus: 54 Knoten; je 12 Kerne á 2.66 GHz; 48 GB<br />

14 SMP Rechner (für Jobs, <strong>die</strong> viel Hauptspeicher brauchen)<br />

Lucky: 24 Kerne á 2.6 GHz; 256 GB<br />

SMP: 18 Knoten; je 24 Kerne á 2.0 GHz; 256 GB<br />

Centaurus: 32 Kerne á 2.7 GHz; 512 GB<br />

Helena: 160 Kerne á 2.0 GHz; 640 GB<br />

http:<br />

//www.rrzn.uni-hannover.de/scientific_comput<strong>in</strong>g.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 9


Verfügbare Rechenleistung (fort.)<br />

Sehr große Projekte können auf dem HLRN rechnen<br />

Gesondertes Antragsverfahren<br />

»Schnupperaccounts« s<strong>in</strong>d möglich<br />

http://www.hlrn.de<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 10


Steigende Rechenleistung<br />

Rechenleistung des Clustersystems<br />

Rechenleistung (GFlops)<br />

3<br />

2<br />

1<br />

Rechenleistung<br />

Rechenleistung/Watt<br />

400<br />

300<br />

200<br />

100<br />

Rechenleistung/Watt (MFlops/W)<br />

0<br />

01.2008<br />

·10 4 Datum<br />

07.2008<br />

02.2009<br />

08.2009<br />

03.2010<br />

09.2010<br />

04.2011<br />

11.2011<br />

05.2012<br />

0<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 11


Anwendungen und Software<br />

Es gibt e<strong>in</strong>e Vielfalt von Anwendungen und Software auf dem<br />

Clustersystem<br />

Chemie<br />

Biologie<br />

Ingenieurwissenschaften<br />

Numerik<br />

Mathematik<br />

Physik<br />

Statistik<br />

Wirtschaftswissenschaften<br />

Parallelisierungswerkzeuge<br />

Softwareentwicklung<br />

Visualisierung<br />

Die »Modules«-Umgebung erleichtert <strong>die</strong> Benutzung<br />

Das module-Kommando <strong>in</strong>itialisiert <strong>die</strong> richtige Umgebung für <strong>die</strong><br />

jeweilige Anwendung<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 12


Anwendungen–Physik<br />

Anwendung Gebiet Modulname<br />

Comsol Multiphysik comsol<br />

Matlab Matrizen und allgeme<strong>in</strong>e Numerik matlab<br />

Octave Matrizen und allgeme<strong>in</strong>e Numerik octave<br />

QuTiP Quanten<strong>in</strong>formation qutip<br />

Bild: Trajektorien für e<strong>in</strong> neues 3D-Elektronenmikroskop (COMSOL) | Renke Scheuer, Institut für Mess- und Regelungstechnik, LUH<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 13


Anwendungen–Mathematik<br />

Anwendung Gebiet Modulname<br />

GAMS Mathematische Optimierung gams<br />

Maple Symbolische Mathematik maple<br />

Mathematica Symbolische Mathematik mathematica<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 14


Anwendungen–Wirtschaftswissenschaft und Statistik<br />

Anwendung Gebiet Modulname<br />

R Statistik und Grafik R<br />

SAS Statistische Analyse, Data-M<strong>in</strong><strong>in</strong>g sas<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 15


Anwendungen–Chemie<br />

Anwendung Gebiet Modulname<br />

CPMD Molekulardynamik cpmd<br />

Crystal Elektronische Struktur-Berechnung crystal<br />

GAMESS-US Allgeme<strong>in</strong>e ab <strong>in</strong>itio Quantenchemie gamess_us<br />

Gaussian Elektronische Struktur-Berechnung gaussian<br />

Gromacs Molekulardynamik gromacs<br />

MSINDO Molekulardynamik ms<strong>in</strong>do<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 16


Anwendungen–Biologie<br />

Anwendung Gebiet Modulname<br />

Biopython Werkzeuge für biologisches Rechnen biopython<br />

Blat Schnelle Sequenzsuche blat<br />

Bowtie Genesequenzen Anordner bowtie<br />

BWA Burrows-Wheeler Anordner bwa<br />

Oases Transcriptome Assemblierung für kurzes oases<br />

Lesen<br />

TGI Cluster Tool EST/mRNA Datensätzen <strong>in</strong> Clustern sortieren<br />

tgicl<br />

Velvet Gen-Sequenz Anordung velvet<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 17


Anwendungen–Ingenieurwissenschaft<br />

Anwendung Gebiet Modulname<br />

Abaqus F<strong>in</strong>ite Element Simulationen abaqus<br />

ANSYS Multiphysik ansys<br />

CFX Fluiddynamik cfx<br />

Fluent Fluiddynamik fluent<br />

Gambit Präprocess<strong>in</strong>g (Geometrie/Meshes) gambit<br />

HFSS Elektromagnetisches Feld Simulationen hfss<br />

Marc F<strong>in</strong>ite Element Simulationen marc<br />

Maxwell Elektromagnetische Feld-Simulationen maxwell<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 18


Anwendungen–Ingenieurwissenschaft (fort.)<br />

Anwendung Gebiet Modulname<br />

Nastran F<strong>in</strong>ite Element Simulationen nastran<br />

OpenFOAM Fluiddynamik openfoam<br />

Patran Prä- und Postprozessor für CAE Simulationen patran<br />

Creo CAD/CAE Entwurfs- und Entwicklungswerkzeug<br />

creo/proe<br />

SELFE 3D Ozeansimulation selfe<br />

StarCCM+ Fluiddynamik starccm<br />

StarCD Fluiddynamik starcd<br />

Bild: Wasserspiegelauslenkung und Sal<strong>in</strong>ität im Weserästuar | Anna Zorndt, Franzius Institut, LUH<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 19


Anwendungen–Simulationspakete<br />

Anwendung Beschreibung Modulname<br />

Harm<strong>in</strong>v Waveform harmonic <strong>in</strong>version harm<strong>in</strong>v<br />

Meep FDTD simulations meep<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 20


Anwendungen–Visualisierung<br />

Anwendung Gebiet Modulname<br />

Blender 3D Grafik blender<br />

Gnuplot Allgeme<strong>in</strong>e Datenvisualisierung gnuplot<br />

Paraview Allgeme<strong>in</strong>e und 3D Datenvisualisierung paraview<br />

Povray »Persistence of Vision« Raytracer povray<br />

QtiPlot Schnelle Datenvisualisierung qtiplot<br />

VTK Visualisierungs Tookit vtk<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 21


Compiler<br />

Anwendung Sprachen Modulnamen<br />

GNU C/C++, Java, Fortran gcc, g++, gcj, gfortran<br />

Intel C/C++, Fortran icc, ifort,<br />

<strong>in</strong>tel.compiler<br />

PGI C/C++, Fortran pgi<br />

Sun Java Java sun-java<br />

Solaris Studio C/C++, Fortran solstudio<br />

Nvidia CUDA C cudatoolkit<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 22


Numerische Bibliotheken<br />

Bibliothek Gebiet Modulnamen<br />

Geospatial Data Datenverarbeitung gdal<br />

Abstraction Library (GDAL)<br />

Gnu Scientific Library (GSL) Allgeme<strong>in</strong>e Numerik gsl<br />

FFTW<br />

Fourier-<br />

fftw<br />

Transformation<br />

Intel Math Kernel Library (MKL) Allgeme<strong>in</strong>e Numerik imkl<br />

LAPACK/BLAS L<strong>in</strong>eare Algebra lapack, blas<br />

Multi-precision complex arithm. Complex Arith. mpc<br />

Multi-precision float<strong>in</strong>g po<strong>in</strong>t Float<strong>in</strong>g Po<strong>in</strong>t Arith. mpfr<br />

Qhull<br />

Computationale<br />

Geom.<br />

qhull<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 23


Allgeme<strong>in</strong>e Bibliotheken und Anwendungen<br />

Bibliothek Gebiet Modulnamen<br />

L A TEX Textbearbeitung latex<br />

libctl Controlefile-Bibliothek libctl<br />

PROJ Cartografische Projektionen proj<br />

Xerces XML-Bearbeitung xerces-c<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 24


MPI-Implementierungen<br />

MPI – das Message Pass<strong>in</strong>g Interface – ist e<strong>in</strong>e Bibliothek für <strong>die</strong><br />

Kommunikation zwischen Prozessoren, um Programme <strong>in</strong> fast beliebigen<br />

Konfigurationen parallel laufen zu lassen<br />

Implementierung Beschreibung Modulname<br />

MPICH2 Standard MPICH Installation mpich2<br />

MVAPICH MPICH für Inf<strong>in</strong>iband optimiert mvapich2<br />

Intel MPI Intels Implementierung des MPI impi<br />

OpenMPI OpenMPI openmpi<br />

PGI-MPICH MPICH mit PGI Compiler übersetzt pgi-mpich<br />

PGI-MVAPICH MVAPICH mit PGI Compiler übersetzt pgi-mvapich<br />

MPI funktioniert nicht automatisch; muss programmiert se<strong>in</strong><br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 25


Debugger und Profiler<br />

Anwendung Beschreibung Modulname<br />

Valgr<strong>in</strong>d Call Graph und Speicheranalyse valgr<strong>in</strong>d<br />

kCachegr<strong>in</strong>d Grafische Oberfläche zu Valgr<strong>in</strong>d kcachegr<strong>in</strong>d<br />

Valkyrie Grafische Oberfläche zu Valgr<strong>in</strong>d valkyrie<br />

Totalview Paralleler Debugger totalview<br />

Intel Trace Analyser Profiler itac<br />

VTune Profiler vtune<br />

MPE MPI-Programm-Profiler mpe2-impi<br />

Scalasca Parallelprogramm-Profiler scalasca<br />

Intel Debugger<br />

idb<br />

GNU Debugger<br />

gdb<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 26


Verwenden der Modules-Umgebung<br />

Zuerst muss <strong>die</strong> Modules-Umgebung <strong>in</strong>itialisiert werden<br />

Initialisierung passiert normalerweise beim Log<strong>in</strong> automatisch<br />

Initialisierung <strong>in</strong>nerhalb e<strong>in</strong>es Batchjobs:<br />

#!/b<strong>in</strong>/bash -log<strong>in</strong><br />

<strong>in</strong> <strong>die</strong> erste Zeile e<strong>in</strong>es Batchskripts.<br />

Falls das module-Kommando nicht bekannt ist, muss man <strong>die</strong> Umgebung<br />

explizit mit e<strong>in</strong>em der folgenden Kommandos <strong>in</strong>tialisieren<br />

Im Allgeme<strong>in</strong>en:<br />

source $MODULESHOME/<strong>in</strong>it/`basename $SHELL`<br />

Mit ksh, bash und csh funktioniert auch:<br />

. $MODULESHOME/<strong>in</strong>it/ksh<br />

. $MODULESHOME/<strong>in</strong>it/bash<br />

. $MODULESHOME/<strong>in</strong>it/csh<br />

Der Punkt und das Leerzeichen vorne s<strong>in</strong>d wichtig!!!<br />

http://www.rrzn.uni-hannover.de/modules.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 27


Kommandos der Modules-Umgebung<br />

Alle Module anzeigen lassen<br />

$ module avail<br />

E<strong>in</strong> Modul (oder mehrere) laden<br />

$ module load <br />

E<strong>in</strong> Modul entladen<br />

$ module unload <br />

Bereits geladene Module zeigen<br />

$ module list<br />

Informationen über e<strong>in</strong> Modul zeigen<br />

$ module show <br />

Hilfe und detaillierte Informationen über e<strong>in</strong> Modul zeigen<br />

$ module help <br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 28


Batchsystem<br />

E<strong>in</strong> Batchsystem ist e<strong>in</strong> automatisches System, um Rechenjobs fairen Zugang<br />

zu den Ressourcen e<strong>in</strong>es Clusters zu währen. Jobs werden von e<strong>in</strong>em zentralen<br />

Ort zum Batchsystem geschickt (»submittiert«) und <strong>in</strong> e<strong>in</strong>e Warteschlange<br />

(auch »Queue« genannt) gestellt. E<strong>in</strong> Scheduler verteilt <strong>die</strong> Jobs nach e<strong>in</strong>em<br />

vorgegebenen Priorisierungsalgorithmus auf <strong>die</strong> vorhandenen Ressourcen, um<br />

möglichst viel Durchsatz zu erzielen.<br />

Simulationen (Rechenjobs) werden mit e<strong>in</strong>em »Batchskript« <strong>in</strong> <strong>die</strong> Queue<br />

abgeschickt. E<strong>in</strong> Batchskript ist e<strong>in</strong>e Textdatei, <strong>die</strong> <strong>die</strong> Ressourcen (wie<br />

Rechenzeit, Hauptspeicher und CPU-Anzahl) beschreibt, <strong>die</strong> der Rechenjob für<br />

se<strong>in</strong>en Lauf benötigt. Das Batchskript enthält auch <strong>die</strong> Kommandos, <strong>die</strong> man<br />

auf der Konsole absetzen würde, um den Job laufen zu lassen. Diese<br />

Kommandos werden auf dem entsprechenden Rechenknoten automatisch<br />

durchgeführt.<br />

http://www.rrzn.uni-hannover.de/batchsystem.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 29


Anatomie e<strong>in</strong>es Batchskripts<br />

#!/b<strong>in</strong>/bash beschreibt, welche Shell für <strong>die</strong> Ausführung des Skriptes<br />

verwendet werden soll<br />

Optionen ans Batchsystem übergeben<br />

Zeilen fangen mit #PBS an<br />

Beschreiben u.a. <strong>die</strong> Anforderungen des Jobs, welche Warteschlange<br />

verwendet werden soll, usw.<br />

Kommandos, <strong>die</strong> <strong>die</strong> Simulation/den Rechenjob vorbereiten und<br />

durchführen, z.B.:<br />

Nötigenfalls <strong>die</strong> Modules-Umgebung <strong>in</strong>itialisieren<br />

mit #!/b<strong>in</strong>/bash -log<strong>in</strong> unnötig<br />

Module laden<br />

Umgebungsvariablen setzen<br />

In das Verzeichnis wechseln, <strong>in</strong> dem gerechnet werden soll<br />

Das Programm aufrufen<br />

Grundsätzlich wird alles nach e<strong>in</strong>em ‘#’ (Kommentarzeichen) ignoriert<br />

Ausnahmen:<br />

#! <strong>in</strong> der ersten Zeile<br />

PBS-Optionen<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 30


E<strong>in</strong> simples Batch-Skript<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N job_name<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=3gb<br />

9<br />

0 # show which computer the job ran on<br />

1 echo "Job ran on:" $(hostname)<br />

2<br />

3 # change to work dir:<br />

4 cd $BIGWORK<br />

5<br />

6 # run the program<br />

7 ./hello<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 31


PBS-Optionen<br />

#PBS -N Name des Jobs<br />

#PBS -M Mailadresse des Nutzers<br />

#PBS -m ae<br />

Mail an Nutzer senden; beim Jobende (’e’) oder -abbruch (’a’)<br />

#PBS -j oe<br />

Zusammenführen (»jo<strong>in</strong>«) von Standardausgabe (’o’) und<br />

Fehlerprotokoll (’e’); (STDOUT und STDERR)<br />

#PBS -l nodes=:ppn= Knoten, Prozessorkerne je Knoten anfordern<br />

#PBS -l walltime= Maximale Laufzeit des Jobs (HH:MM:SS)<br />

#PBS -l mem= Gesamthauptspeicher des Jobs anfordern<br />

z.B. 3600mb, 10gb<br />

#PBS -q Name der Warteschlange (Queue)<br />

z.B. all, test, helena<br />

#PBS -W x="PARTITION:" Name der Clusterpartition (optional)<br />

z.B. paris, smp, tane, taurus<br />

#PBS -v Liste der Umgebungsvariablen, <strong>die</strong> zum Job exportiert<br />

werden sollen<br />

#PBS -V<br />

Alle Umgebungsvariablen der aktuellen Shell dem Job exportieren<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 32


Batchsystemkommandos<br />

Jobs <strong>in</strong> <strong>die</strong> Warteschlange absetzen<br />

$ qsub <br />

Interaktive Batchjobs<br />

$ qsub -I -X (öffnet e<strong>in</strong>e Shell auf e<strong>in</strong>em Knoten)<br />

Alle Jobs anzeigen lassen<br />

$ qstat -a<br />

Alle Jobs mit Knoten-Ansicht anzeigen lassen<br />

$ qstat -n<br />

Volle Ausgabe für e<strong>in</strong>en bestimmten Job zeigen<br />

$ qstat -f <br />

Job von der Queue löschen<br />

$ qdel <br />

Job von e<strong>in</strong>er Queue <strong>in</strong> e<strong>in</strong>e andere schieben<br />

$ qmove <br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 33


Erweiterte Batchsystemkommandos<br />

Alle Jobs anzeigen lassen mit geteilter Ansicht: »show queue«<br />

(RUNNING, IDLE, BLOCKED)<br />

$ showq<br />

Alle bereits existierende Reservierungen zeigen: »show reservations«<br />

$ showres<br />

Sofort verfügbare Prozessoren und Laufzeiten: »show backfill«<br />

$ showbf<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 34


Warteschlangen (Queues)<br />

all – für Jobs aller Art 1 (#PBS -q all; Default-E<strong>in</strong>stellung)<br />

test – für kurze Testjobs (#PBS -q test)<br />

nur e<strong>in</strong> Knoten kann benutzt werden; Jobs, <strong>die</strong> mehr als e<strong>in</strong>en Knoten<br />

anfordern, werden <strong>in</strong> <strong>die</strong>ser Queue nicht anlaufen<br />

helena – für große-SMP-Jobs (#PBS -q helena)<br />

nur e<strong>in</strong> Knoten kann benutzt werden; Jobs, <strong>die</strong> mehr als e<strong>in</strong>en Knoten<br />

anfordern, werden <strong>in</strong> <strong>die</strong>ser Queue nicht anlaufen<br />

1 außer Jobs, <strong>die</strong> für <strong>die</strong> test oder helena Queues gedacht s<strong>in</strong>d<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 35


Warteschlangen (Grenzen)<br />

Maximale Anforderungen der all und helena Queues<br />

Anzahl gleichzeitig laufender Jobs pro Benutzer: 64<br />

Kerne pro Benutzer: 768<br />

Maximales Wallclock-Limit: 200 Stunden<br />

(#PBS -l walltime=200:00:00)<br />

Maximale Anforderungen der test Queue<br />

47 GB Hauptspeicher (#PBS -l mem=47gb)<br />

6 Stunden Wallclockzeit (#PBS -l walltime=6:00:00)<br />

1 Knoten, 12 Kerne (#PBS -l nodes=1:ppn=12)<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 36


Verfügbare Hauptspeicherressourcen<br />

Das Betriebssystem benötigt selbst auch Hauptspeicher; <strong>die</strong> maximal<br />

möglichen Anforderungen s<strong>in</strong>d daher etwas ger<strong>in</strong>ger<br />

Verfügbare Ressourcen:<br />

Tane-Knoten: 47 GB<br />

Taurus-Knoten: 47 GB<br />

test-n001 (<strong>die</strong> test-Queue): 47 GB<br />

Paris Standardknoten: 62 GB<br />

Paris »dicker«-Knoten: 125 GB<br />

Lucky: 252 GB<br />

SMP-Knoten: 252 GB<br />

Centaurus: 504 GB<br />

Helena: 630 GB<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 37


Anmerkungen zu den Jobanforderungen<br />

Jobanforderungen bitte anpassen!<br />

Wichtig s<strong>in</strong>d Wallclock-Zeit, Hauptspeicher und CPU/Kern-Anzahl<br />

Vorteile genauer Angaben:<br />

Besserer Gesamtdurchsatz durch genauere Planbarkeit<br />

Jobs laufen schneller an und s<strong>in</strong>d früher fertig<br />

Jobs, <strong>die</strong> erheblich ger<strong>in</strong>gere Ressourcen verbrauchen als angefordert,<br />

erzeugen e<strong>in</strong>e Warnungsmail<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 38


Beispiel-Batchskripte<br />

serielles Programm<br />

paralleles Programm<br />

serielles Matlab<br />

paralleles Matlab<br />

serielles Comsol<br />

paralleles Comsol<br />

serielles ANSYS<br />

shared mem ANSYS<br />

distributed mem ANSYS<br />

SAS<br />

R<br />

serielles GAMS<br />

paralleles GAMS<br />

serielles OpenFOAM<br />

(airFoil2D)<br />

paralleles OpenFOAM<br />

(motorBike)<br />

MSINDO<br />

Abaqus<br />

Gaussian<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 39


Beispiel-Batchskript (serielles Programm)<br />

Beispiel für e<strong>in</strong> »serielles« Programm (verwendet nur e<strong>in</strong>en Prozessor) hello.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N mo<strong>in</strong><br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=3600mb<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # change to work dir:<br />

2 cd $PBS_O_WORKDIR<br />

3 # the program to run<br />

4 ./hello<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 40


Beispiel-Batchskript (serielles Matlab-Programm)<br />

Matlab-Programm auf e<strong>in</strong>em Prozessor laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N serialMatlab<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1:matlab<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=3gb<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # load the relevant modules<br />

2 module load matlab<br />

3 # change to work dir:<br />

4 cd $PBS_O_WORKDIR<br />

5 # log file name<br />

6 LOGFILE=$(echo $PBS_JOBID | cut -d"." -f1).log<br />

7 # the program to run<br />

8 matlab -nojvm -nosplash < hello.m > $LOGFILE 2>&1<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 41


Beispiel-Batchskript (paralleles Matlab-Programm)<br />

Matlab-Programm auf vier (4) Prozessorkerne laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N ParallelMatlab<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=4:matlab<br />

7 #PBS -l walltime=00:10:00,mem=4gb<br />

8 # show which computer the job ran on<br />

9 echo "Job ran on:" $(hostname)<br />

0 # load the relevant modules<br />

1 module load matlab<br />

2 # change to work dir<br />

3 cd $PBS_O_WORKDIR<br />

4 # log file name<br />

5 LOGFILE=$(echo $PBS_JOBID | cut -d"." -f1).log<br />

6 # the program to run<br />

7 matlab -nodesktop < l<strong>in</strong>_solve.m > $LOGFILE 2>&1<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 42


Beispiel paralleles Matlab-Programm<br />

1 function l<strong>in</strong>_solve(n)<br />

2 fpr<strong>in</strong>tf(’=============== START =================\n’)<br />

3 if narg<strong>in</strong> ~= 1<br />

4 n = 10000;<br />

5 fpr<strong>in</strong>tf(’Us<strong>in</strong>g default matrix size: n = %d\n’, n)<br />

6 else<br />

7 n = str2num(n); % argument is a str<strong>in</strong>g; convert to num<br />

8 fpr<strong>in</strong>tf(’Us<strong>in</strong>g the matrix size: n = %d\n’, n)<br />

9 end<br />

0<br />

1 tic<br />

2<br />

3 % set up the matrix to solve<br />

4 A = rand(n);<br />

5 y = rand(n,1);<br />

6<br />

7 % solve the matrix<br />

8 x = A\y;<br />

9<br />

0 toc<br />

1 fpr<strong>in</strong>tf(’=============== END =================\n’)<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 43


Beispiel-Batchskript (serielles Comsol-Programm)<br />

Comsol auf e<strong>in</strong>em Prozessor laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N comsol_micromixer<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:30:00<br />

8 #PBS -l mem=10gb<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # load the relevant modules<br />

2 module load comsol<br />

3 # change to work dir:<br />

4 cd $PBS_O_WORKDIR<br />

5 # the program to run<br />

6 comsol batch -<strong>in</strong>putfile micromixer.mph<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 44


Beispiel-Batchskript (paralleles Comsol-Programm)<br />

Comsol auf acht (8) CPU-Kerne laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N comsol_micromixer_parallel<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=8<br />

7 #PBS -l walltime=00:30:00<br />

8 #PBS -l mem=10gb<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # load the relevant modules<br />

2 module load comsol<br />

3 # change to work dir:<br />

4 cd $PBS_O_WORKDIR<br />

5 # work out the number of threads<br />

6 export NUM_THREADS=$(wc -l $PBS_NODEFILE | cut -d" " -f1)<br />

7 # the program to run<br />

8 comsol batch -<strong>in</strong>putfile micromixer.mph -np $NUM_THREADS<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 45


Beispiel-Batchskript (serielles ANSYS-Programm)<br />

ANSYS auf e<strong>in</strong>em Prozessor laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N testcase.serial<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:20:00<br />

8 #PBS -l mem=2gb<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # load the relevant modules<br />

2 module load ansys<br />

3 # change to work dir<br />

4 cd $PBS_O_WORKDIR<br />

5 # start program for serial run;<br />

6 # (assum<strong>in</strong>g that an <strong>in</strong>put file testcase.dat has been created before):<br />

7 ansys130 -i testcase.dat -o serial.out<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 46


Beispiel-Batchskript (shared ANSYS-Programm)<br />

ANSYS auf e<strong>in</strong>em Knoten mit mehreren Prozessoren und geteiltem Speicher<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N testcase.shared<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=4<br />

7 #PBS -l walltime=00:20:00<br />

8 #PBS -l mem=2gb<br />

9 # load the relevant modules<br />

0 module load ansys<br />

1 # change to work dir<br />

2 cd $PBS_O_WORKDIR<br />

3 # calculate number of threads for shared memory computation<br />

4 nthr=$(cat $PBS_NODEFILE | wc -l)<br />

5 echo "nthreads = "$nthr<br />

6 # start program<br />

7 ansys130 -b -np $nthr -i testcase.dat -o shared.out<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 47


Beispiel-Batchskript (distributed ANSYS-Programm)<br />

ANSYS auf mehreren Knoten laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N testcase.distr<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=2:ppn=4<br />

7 #PBS -l walltime=00:20:00<br />

8 #PBS -l mem=2gb<br />

9 # load the relevant modules<br />

0 module load ansys<br />

1 # change to work dir<br />

2 cd $PBS_O_WORKDIR<br />

3 # set stacksize<br />

4 ulimit -s 300000<br />

5 # create correct HOST str<strong>in</strong>g for ANSYS call<br />

6 create_ansys_mach<strong>in</strong>e_file mach<strong>in</strong>es<br />

7 read HOST < mach<strong>in</strong>es<br />

8 echo $HOST<br />

9 # start program <strong>in</strong> distributed memory mode<br />

0 ansys130 -b -dis -mach<strong>in</strong>es $HOST -mpi hpmpi -i testcase.dat -o distr.out<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 48


Beispiel-Batchskript (SAS-Programm)<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N seriellSAS<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:30:00<br />

8 #PBS -l mem=5gb<br />

9<br />

0 # show which computer the job ran on<br />

1 echo "Job ran on:" $(hostname)<br />

2 # load the relevant modules<br />

3 module load sas<br />

4 # change to work dir:<br />

5 cd $PBS_O_WORKDIR<br />

6 # the program to run<br />

7 sas Simulation.sas<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 49


Beispiel-Batchskript (R-Programm)<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N seriellR<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=3600mb<br />

9<br />

0 # show which computer the job ran on<br />

1 echo "Job ran on:" $(hostname)<br />

2 # load the relevant modules<br />

3 module load R<br />

4 # change to work dir:<br />

5 cd $PBS_O_WORKDIR<br />

6 # the program to run<br />

7 R --slave < fanta22_korrektur.R<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 50


Beispiel-Batchskript (serielles GAMS-Programm)<br />

GAMS-Programm auf e<strong>in</strong>em (1) Prozessorkern laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N GAMS_trnsport<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=4gb<br />

9<br />

0 # show which computer the job ran on<br />

1 echo "Job ran on:" $(hostname)<br />

2 # load the relevant modules<br />

3 module load gams<br />

4 # change to work dir<br />

5 cd $PBS_O_WORKDIR<br />

6 # the program to run<br />

7 gams trnsport.gms lo=2 lf=transport_log.log<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 51


Beispiel-Batchskript (paralleles GAMS-Programm)<br />

GAMS-Programm auf vier (4) Prozessorkerne laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N CLSP_Optimal<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=4<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=4gb<br />

9<br />

0 # show which computer the job ran on<br />

1 echo "Job ran on:" $(hostname)<br />

2 # load the relevant modules<br />

3 module load gams<br />

4 # change to work dir<br />

5 cd $PBS_O_WORKDIR<br />

6 # correctly specify the number of cores <strong>in</strong> cplex.opt!!<br />

7 # the program to run<br />

8 gams CLSP_Optimal.gms lo=2 lf=CLSP_Optimal.log<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 52


Beispiel-Batchskript (serielles OpenFOAM-Programm)<br />

simpleFoam auf e<strong>in</strong>em (1) Prozessorkern laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N airFoil2D<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=1<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=4gb<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # load the relevant modules<br />

2 module load openfoam/1.7.1<br />

3 # <strong>in</strong>itialise the OpenFOAM environment<br />

4 source $foamDotFile<br />

5 # change to work dir:<br />

6 cd $PBS_O_WORKDIR/airFoil2D<br />

7 # clean up from possible previous runs<br />

8 ./AllClean<br />

9 # the program to run<br />

0 simpleFoam<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 53


Beispiel-Batchskript (serielles OpenFOAM-Programm)<br />

simpleFoam auf e<strong>in</strong>em (1) Prozessorkern laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N motorBike<br />

3 ####PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -M cochrane@rrzn.uni-hannover.de<br />

5 #PBS -m ae<br />

6 #PBS -j oe<br />

7 #PBS -l nodes=1:ppn=1<br />

8 #PBS -l walltime=00:30:00<br />

9 #PBS -l mem=4gb<br />

10 # show which computer the job ran on<br />

11 echo "Job ran on:" $(hostname)<br />

12 # load the relevant modules<br />

13 module load openfoam/1.7.1<br />

14 # <strong>in</strong>itialise the OpenFOAM environment<br />

15 source $foamDotFile<br />

16 # change to work dir:<br />

17 cd $PBS_O_WORKDIR/motorBike<br />

18 # clean up from previous runs<br />

19 ./Allclean<br />

20 # set up the mesh and the simulation<br />

21 cp system/fvSolution.org system/fvSolution<br />

22 cp -r 0.org 0 > /dev/null 2>&1<br />

23 blockMesh<br />

24 snappyHexMesh -overwrite<br />

25 sed -i ’s/\(nNonOrthogonalCorrectors\).*;/\1 10;/g’ system/fvSolution<br />

26 potentialFoam -writep<br />

27 sed -i ’s/\(nNonOrthogonalCorrectors\).*;/\1 0;/g’ system/fvSolution<br />

28 # the program to run<br />

29 simpleFoam<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 54


Beispiel-Batchskript (paralleles Programm)<br />

E<strong>in</strong> MPI-paralleles Programm namens p<strong>in</strong>g_pong_advanced_send, das<br />

über zwei (2) Prozessoren verteilt wird.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N p<strong>in</strong>gpong<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=2,walltime=00:10:00,mem=4gb<br />

7 #PBS -W x=PARTITION:tane<br />

8<br />

9 # show which computer the job ran on<br />

0 echo "Job ran on:" $(hostname)<br />

1 # load the relevant modules<br />

2 module load impi<br />

3 # change to work dir:<br />

4 cd $PBS_O_WORKDIR<br />

5 # the program to run <strong>in</strong> parallel<br />

6 mpirun --rsh=ssh -mach<strong>in</strong>efile $PBS_NODEFILE -np 2 -env I_MPI_DEVICE shm \<br />

7 ./p<strong>in</strong>g_pong_advanced_send_c<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 55


Beispiel-Batchskript (MSINDO)<br />

MSINDO auf 6 Prozessorkerne laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N MgO_444<br />

3 #PBS -M ich@me<strong>in</strong>e.email.adresse.de<br />

4 #PBS -m ae<br />

5 #PBS -j oe<br />

6 #PBS -l nodes=1:ppn=6<br />

7 #PBS -l walltime=00:10:00<br />

8 #PBS -l mem=16gb<br />

9 #PBS -W x=PARTITION:tane:paris:kuh<br />

10<br />

11 # show which computer the job ran on<br />

12 echo "Job ran on:" $(hostname)<br />

13 # load the relevant modules<br />

14 module load ms<strong>in</strong>do<br />

15<br />

16 export KMP_STACKSIZE=64M<br />

17 export OMP_DYNAMIC=.FALSE.<br />

18 export OMP_NUM_THREADS=$(cat $PBS_NODEFILE | wc -l)<br />

19<br />

20 INPUTFILE="MgO_444.<strong>in</strong>p"<br />

21<br />

22 # change to work dir:<br />

23 TEMPDIR=$BIGWORK/$(basename $INPUTFILE .<strong>in</strong>p).$$<br />

24 cd $TEMDIR<br />

25 LOGFILE=$PBS_O_WORKDIR/$INPUTFILE.out.$$<br />

26 echo "Runn<strong>in</strong>g on $OMP_NUM_THREADS cores" >> $LOGFILE<br />

27<br />

28 # the program to run<br />

29 time ms<strong>in</strong>do < $INPUTFILE >> $LOGFILE 2>&1<br />

30 # clean up output files<br />

31 if [ -s "fort.9" ]; then cp fort.9 $PBS_O_WORKDIR/$INPUTFILE.f9.$$; fi<br />

32 if [ -n "$(ls *.dat)" ]; then cp *.dat $PBS_O_WORKDIR/; fi<br />

33 if [ -n "$(ls *.molden)" ]; then cp *.molden $PBS_O_WORKDIR/; fi<br />

34 if [ -n "$(ls *.xyz)" ]; then cp *.xyz $PBS_O_WORKDIR/; fi<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 56


Beispiel-Batchskript (Abaqus)<br />

Abaqus auf 4 Prozessorkerne laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N llbeam<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse.de<br />

4 #PBS -j oe<br />

5 #PBS -m ae<br />

6 #PBS -l nodes=1:ppn=4<br />

7 #PBS -l mem=15GB<br />

8 #PBS -l walltime=00:50:00<br />

9<br />

10 # show which computer the job ran on<br />

11 echo "Job ran on:" $(hostname)<br />

12<br />

13 # load the relevant modules<br />

14 module load abaqus<br />

15<br />

16 # change to work<strong>in</strong>g directory<br />

17 cd $PBS_O_WORKDIR<br />

18<br />

19 # set up simulation parameters<br />

20 np=$(cat $PBS_NODEFILE | wc -l)<br />

21 mnp=$(sort -u $PBS_NODEFILE | wc -l)<br />

22 cp $PBS_NODEFILE hostfile<br />

23 echo $np >> hostfile<br />

24 echo $mnp >> hostfile<br />

25 create_abaqus_host_list<br />

26<br />

27 # run the program<br />

28 abaqus job=llbeam cpus=$np doma<strong>in</strong>s=$np parallel=doma<strong>in</strong> mp_mode=mpi double <strong>in</strong>teractive<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 57


Beispiel-Batchskript (Gaussian)<br />

Gaussian auf 4 Processorkerne laufen lassen.<br />

1 #!/b<strong>in</strong>/bash -log<strong>in</strong><br />

2 #PBS -N gaussian<br />

3 #PBS -M ich@me<strong>in</strong>e.mail.adresse.de<br />

4 #PBS -j eo<br />

5 #PBS -m ae<br />

6 #PBS -l nodes=1:ppn=4<br />

7 #PBS -l mem=10gb<br />

8 #PBS -l walltime=00:30:00<br />

9<br />

0 # show which computer the job ran on<br />

1 echo "Job ran on:" $(hostname)<br />

2<br />

3 # load the relevant modules<br />

4 module load gaussian<br />

5<br />

6 # change to work<strong>in</strong>g directory<br />

7 cd $PBS_O_WORKDIR<br />

8<br />

9 # run the program<br />

0 g09 < <strong>in</strong>put.com > g09job.out<br />

⇐Zurück zur Batchskriptliste<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 58


Struktur der Dateisysteme<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 59


Details der Dateisysteme<br />

$HOME<br />

Global verfügbares Heimverzeichnis<br />

Daten werden gesichert; unbegrenzte Lebensdauer<br />

Datenvolumen begrenzt über Unix-Quotasystem<br />

Für Skripte, Programme und kle<strong>in</strong>e endgültige Ergebnisse geeignet<br />

$BIGWORK<br />

Global verfügbares Arbeitsverzeichnis<br />

Für große »Work«-Dateien geeignet<br />

69 TB Speicherplatz für alle zusammen.<br />

$BIGWORK-Variable zeigt auf /bigwork/<br />

Daten werden NICHT gesichert; Daten haben e<strong>in</strong>e Lebensdauer von 28<br />

Tagen (nach der letzten Änderung der Daten)<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 60


Details der Dateisysteme (fort.)<br />

Archivsystem<br />

Langfristige Lagerung von Dateien, auch von großen Datenmengen<br />

Daten s<strong>in</strong>d auf dem Tape-Backup-Archiv der Universität gesichert<br />

Von den Log<strong>in</strong>knoten mit lftp-Kommando erreichbar<br />

Mehr Informationen unter:<br />

http://www.rrzn.uni-hannover.de/archivierung.html<br />

http://www.rrzn.uni-hannover.de/archivierung_policy.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 61


Wenn Fehler auftauchen. . .<br />

1 Batchskript und nötigenfalls das Programm überprüfen<br />

2 Clusterdokumentation lesen:<br />

http://www.rrzn.uni-hannover.de/clustersystem.html<br />

3 Sagt Google etwas dazu?<br />

4 Melden Sie sich über <strong>die</strong> Hilfemail<strong>in</strong>gliste:<br />

cluster-help@rrzn.uni-hannover.de mit den folgenden Infos<br />

Ihr Benutzername<br />

Job ID Nummer<br />

Wann der Job gelaufen ist<br />

Auf welchem Rechenknoten der Job gelaufen ist<br />

Das Batchskript<br />

E<strong>in</strong>e kurze Beschreibung des Problems<br />

Jegliche Fehlermeldung des Programms, falls vorhanden<br />

Das Ausgabeprotokoll des Jobs, z.B.: myjob.o12345 als Anhang<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 62


Informationsl<strong>in</strong>ks<br />

http://www.rrzn.uni-hannover.de/clustersystem.html<br />

http://www.rrzn.uni-hannover.de/cluster-zugang.html<br />

http://www.rrzn.uni-hannover.de/batchsystem.html<br />

http://www.rrzn.uni-hannover.de/rechnerressourcen.html<br />

http://www.rrzn.uni-hannover.de/<strong>in</strong>stallierte_software.html<br />

http://www.rrzn.uni-hannover.de/handbuecher.html<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 63


Kontakt<strong>in</strong>formationen<br />

Fragen, Anregungen und Problemberichte:<br />

cluster-help@rrzn.uni-hannover.de<br />

Fachberatung<br />

Dr. Gerd Brand: brand@rrzn.uni-hannover.de<br />

Dr. Andreas Gerdes: gerdes@rrzn.uni-hannover.de<br />

Oliver Heimbrock: heimbrock@rrzn.uni-hannover.de<br />

Dr. Holger Naundorf: naundorf@rrzn.uni-hannover.de<br />

Adm<strong>in</strong>istration, allgeme<strong>in</strong>e Beratung<br />

Klaus Dobr<strong>in</strong>dt: dobr<strong>in</strong>dt@rrzn.uni-hannover.de<br />

Patrick Njofang: njofang@rrzn.uni-hannover.de<br />

Möchten Sie e<strong>in</strong>e Tour der Rechner am Rechenzentrum? Melden Sie sich!<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 64


Vielen Dank für <strong>die</strong> Aufmerksamkeit!<br />

:-)<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 65


Never work at Home!<br />

Warum es ke<strong>in</strong>e gute Idee ist, <strong>in</strong> /home e<strong>in</strong>en L<strong>in</strong>k auf /bigwork anzulegen:<br />

1 root@avon:/home/nhXXXXXX# ls -l<br />

2 total 4<br />

3 lrwxrwxrwx 1 nhXXXXXX nhXX 17 Oct 17 2010 bigwork -> /bigwork/nhXXXXXX<br />

4 root@avon:/home/nhXXXXXX#<br />

/home nur über NFS angebunden<br />

Job muss über NFS nach /home und wieder über NFS zurück nach<br />

BIGWORK<br />

Langer Weg! Hohe Last für /home Fileserver!<br />

Compute<strong>die</strong>nste am Rechenzentrum Scientific Comput<strong>in</strong>g Gruppe | 7. November 2013 66

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!