http://www.tu-ilmenau.de

Logo TU Ilmenau


Logo Universitätsrechenzentrum
headerphoto Universitäts-
rechenzentrum
Ansprechpartner

UniRZ

IT Service Desk

Telefon +49 3677 69-1111

E-Mail senden

Ihre Position

INHALTE

Advanced Computing

TUILM-AdvancedComputing

Betrieb einer Cluster-Infrastruktur zur Durchführung massiv-paralleler numerischer Berechnungen und Simulationen.

Hardware

Die Computeservices des UniRZ beinhalten folgende Hardware:

MaPaCC 1 - Massiv Paralleler Computer Cluster

MaPaCC 1 - Massiv Paralleler Computer Cluster

Hardwarekonfiguration: 32 Knoten SUN X 4100:

  • 2x AMD Opteron Dual Core 275 (2,2 GHz)
  • Hauptspeicherausstattung:
    • 8  Knoten mit  4 GByte RAM
    • 16 Knoten mit 8 GByte
    • 8 Knoten mit 16 GByte
  • 2 Serial Attached SCSI (SAS) Festplatten je 73 GByte
  • 4x Gigabit Ethernet Interface
  • Infiniband Host Channel Adapter (IB HCA)
    Mellanox MT 23108
  • 1x Remote Service Controller (RSC)

Masterknoten SUN X4100:

  • 2x AMD Opteron Single Core 252 (2,6 GHz)
  • 4 GigaByte RAM
  • 2 Serial Attached SCSI (SAS) Festplatten je 73 GByte (RAID 1)
  • RAID 5 Filesystem - Kapazität: 1,5 TByte
  • 4x Gigabit Ethernet Interface
  • 1x Remote Service Controller (RSC)
MaPacc - Sicht auf Master- und Rechnerknoten
Abb. 1: Sicht auf Master- und Rechenknoten
Masterknoten (oben) und Fileserver (blaue Front)
Abb. 2: Masterknoten (oben) und Fileserver (blaue Front)
Infiniband Switch
Abb. 3: Infiniband Switch
Gigabit Switch und Adminnetzwerkswitch
Abb. 4: Gigabit Switch und Adminnetzwerkswitch

MaPaCC 2 - Massiv Paralleler Computer Cluster

MaPaCC 2 - Massiv Paralleler Computer Cluster

100 Compute Nodes

  • 24 GByte main memory
  • 8 CPU cores , 2 sockets (Intel X 5550 2.67 GHz)
  • 250 GByte harddisk
  • network 1: gigabit 1 Gbit/s
  • network 2: gigabit 1 Gbit/s
  • network 3: management  100MBit/s

1 SMP Node

  • 128 GByte main memory
  • 48 CPU cores; 8 sockets (AMD Opteron™ 8431 2.4 GHz)
  • 300 GByte harddisk (SATA RAID 0)
  • network 1: gigabit 1 Gbit/s
  • network 2: gigabit 1 Gbit/s
  • network 3: management  100MBit/s
Compute Nodes
Compute Nodes
Racklayout
Racklayout

MaPaCC 3 - Massiv Paralleler Computer Cluster

MaPaCC 3 - Massiv Paralleler Computer Cluster

48 Compute Nodes

  • 64 GByte main memory
  • 32 Cores at 4 sockets (AMD OPTERON 6134 2.3GHz)
  • 150 GByte local harddisk
  • network 1-4: gigabit 1 Gbit/s
  • network 5: infiniband 32 Gbit/s
  • network 6: management  100MBit/s

 

2 SMP Nodes

  • 128/256 GByte main memory
  • 32 Cores at 4 sockets
  • 150 GByte local harddisk
  • network 1-4: gigabit 1 Gbit/s
  • network 5: infiniband 32 Gbit/s
  • network 6: management  100MBit/s

Grafikarbeitsplätze im UniRZ (RTK 2)

Grafikarbeitsplätze im UniRZ (RTK 2)

Hardwareausstattung

  • Systembezeichnung: Esprimo P9900 E-Star5
  • Baujahr/Jahr d. Inbetriebnahme: 2011
  • CPU:    Intel i5 CPU 650 @ 3,20 GHz
  • Grafik: GeForce 9500 GS
  • RAM:    4 GB
  • HDD:    SATA 300GB
  • OS & Version: CentOS5

FileServer Infrastructure

Homedirectories

/usr/wrk/people*

  • people9 (13 TB)
  • people4 (9 TB)

Service

  • with weekly backup
  • with quotas
  • without tidy policies

 

Data Filesystems

/mnt/*

  • san2emt (9.1 TB)
  • fhgsan (5.7 TB)

Service

  • with weekly backup
  • with quotas
  • without tidy policies

 

Scratch Filesystems

/usr/scratch*

  • scratch (1.4 TB)
  • scratch1 (3.9 TB)
  • scratch_tsm (2.8 TB)
  • scratch3 (141 TB) / High performance Scratch Filesystem

Service

  • without weekly backup
  • without quotas
  • with tidy policies

Some words to /usr/scratch3

  • consist of 96x 2 Terabyte SAS hard disks
  • 24 disk per storage node
  • distibuted over 4 storage nodes
  • 1 metadata nodes
    every storage administrates 24 Disks
    and 36 Tbytes raid5 Redundancy
    … 1 disk Redundance
  • FHG FS Fraunhofer File System

 

Storage Nodes
Storage Nodes

TUIL - CS - Ressources - History

TUIL - CS - Ressources - History

SGI Origin 2000 (1996)

1 Computenode, 18 Cores (18 Sockets: ), 9 GByte RAM

 

FSC Cluster (2001-2006)

20 Computenodes, 40 Cores (40 Sockets: 2 CPU AMD 1800+), 40 GByte RAM

 

SUN V 880 (2004-2010)

8 Computenodes, 8 Cores (8 Sockets: UltraSparc III: 1.2 GHz), 16 GByte RAM

 

FSC BX 600 (2004)

10 Computenodes, 20 Cores (20 Sockets: 2 CPU Xeon: 2.4 GHz), 40 GByte RAM

Jobverwaltung mit LSF

Der Zugang zu den Computeservern erfolgt über das TUILAN. Die Programme bzw. die Software werden auf dem Computeserver gestartet und die grafische Ausgabe (bei interaktiven Jobs) erfolgt auf dem Clienten - also auf dem PC oder auf einer Workstation auf dem Arbeitsplatz des Nutzers. Die Zuteilung der CS- Ressourcen wie CPU, Memory erfolgt durch Jobverwaltungssoftware LSF.

Das Jobverwaltungssytem LSF (Load Sharing Facility) ermöglicht den Zugriff auf die Computeserver. Eine direkte ssh-basierende Verbindung zu einem einzelnen Knoten des CS- Clusters ist nicht möglich. Beim Arbeiten mit den Maschinen wird zwischen Batchjobs und interaktiven Jobs unterschieden. Jeder Job wird beim Starten durch eine von LSF zugeteilte Jobnummer (JobID) eindeutig gekennzeichnet.
Bevor ein Job gestartet wird, muß der Job hinsichtlich seiner Ressourcen (CPU Zeit, RAM) klassifiziert werden. Im Ergebnis dessen wird der Job vom Nutzer durch LSF einer passenden Queue zugeordnet.

Welche Ressourcen benötigt mein Job?
Bevor ein Job auf dem Computeserver ablaufen kann, muß der Nutzer seinen Job hinsichtlich der erforderlichen Ressourcen klassifizieren. Ressourcen können zum Beispiel sein:

  • Interaktiver oder Batchjob
  • Betriebssystem
  • gewünschte CPU- Zeit
  • erforderlicher Hauptspeicher
  • Anzahl der Prozessoren

Die für den Job erforderlichen Ressourcen (Jobparameter) werden mit den vorgegebenen Queuekonfigurationen verglichen und damit einer bestimmten Queue zugeordnet.

Jobverwaltung mit LSF

Interaktive Jobs

Interaktiver Job
Als ein interaktiver Job wird ein Job bezeichnet, welcher auf dem Computeserver ein xterm startet und die grafische Ausgabe auf den Clienten umleitet. Die dazugehörige Kommandozeile lautet:

bsub -Is xterm

Die Option -Is gibt an, dass es sich um einen interaktiven Job mit Shellmode- Unterstützung handelt (siehe Abschnitt LSF Kommandos). Wenn wie im obigen Beispiel keine Queue oder kein Hostname angegeben wird, wird eine Standardqueue zugewiesen - LSF ist so konfiguriert, daß als Standardqueue die Queue mit dem Namem Inter8 gewählt wird und als Host die makalu1 oder makalu2 gewählt wird. Alternativ können für einen interaktiven Job folgende Kurzbefehle verwendet werden:

j interaktiver Job in der Standardqueue Inter8

j24 interaktiver Job in der Queue Inter24

Weitere Optionen zu bsub sind im Abschnitt LSF Kommandos erläutert.

DISPLAY-Variable

Die Umgebungsvariable DISPLAY gibt den Hostnamen oder IP-Adresse der Maschine an, zu dem bei einem interaktiven Job die grafische Ausgabe erfolgen soll. Das ist der Hostname (oder IP-Adresse) des Rechners, an dem sich der Nutzer physisch befindet. Zur richtigen Einstellung der DISPLAY-Variable gibt es mehrere Möglichkeiten:

Die DISPLAY- Variable wird vor dem Absetzen des Job auf den Namen (oder IP-Adresse) des Hosts bzw. Arbeitsplatzrechners gesetzt, auf welchem die grafische Ausgabe erfolgen soll. Zum Beispiel ist die Maschine namens kongur.rz.tu-ilmenau.de der Submit-Host und otto.inf-technik.tu-ilmenau.de der Host, an welcher der Nutzer arbeitet und an welcher die grafische Ausgabe erfolgen soll. Zuerst wird eine ssh- Verbindung von otto.inf-technik.tu-ilmenau.de zur Maschine namens kongur.rz.tu-ilmenau.de hergestellt:

ssh kongur.rz.tu-ilmenau.de -l unirz_username

Anschließend wird derWert der Variablen DISPLAY auf die Maschine otto.inf-technik.tu-ilmenau.de mit folgendem Kommando gesetzt:

setenv DISPLAY otto.inf-technik.tu-ilmenau.de:0

Die Zeichenfolge ":0" ist notwending um den primären X-Server auf otto.inf-technik.tu-ilmenau.de anzusprechen. Dann kann mit dem Kommando

bsub -Is xterm -sb -sl 1000

der interaktive Job abgesetzt werden. Alternativ können für das Absetzen eines interaktiven Jobs folgende Kurzbefehle verwendet werden:

j interaktiver Job in der Standardqueue Inter8

j24 interaktiver Job in der Queue Inter24

Der Ausgabebildschirm bzw. -host kann beim Jobabsetzen auch in Form einer Option des xterm- Kommandos angegeben. Das Kommando zum Absetzen eines interaktiven Jobs lautet dann:

bsub -Is xterm -display otto.inf-technik.tu-ilmenau.de:0

Für das erfolgreiche Starten eines interaktiven Jobs ist unbedingt der nachfolgende Abschnitt zu beachten!

Die X-Server Freigabe mit xhost

Dem jeweiligen interaktiven Rechenknoten (z. Z. makalu1 bzw. makalu2) muß explizit erlaubt werden, eine grafische Ausgabe auf dem Arbeitsplatzrechner vorzunehmen. Das geschieht mit dem Kommando xhost, welches auf dem Rechner auszuführen ist, an welchem der Nutzer interaktiv arbeiten möchte. Auf dem obengenannten Host namens otto.inf-technik.tu-ilmenau.de müssen vor dem Absetzen des interaktiven Jobs die folgenden Kommando ausgeführt werden:

xhost makalu1.rz.tu-ilmenau.de
xhost makalu2.rz.tu-ilmenau.de

Batchjob

Als Batchjob wird der Job bezeichnet, welcher keine grafische Ausgabe auf den Clienten benötigt. Die in diesem Job sequentiell abzuarbeitenden Kommandos werden in einem Skriptfile aufgeführt und zeilenweise ausgeführt.

Eine allgemeine Kommandozeile zum Absetzen eines Batchjobs lautet:

bsub -q Batch24 $HOME/start.ansys

Das bsub- Kommando mit den Optionen wird auf dem Clienten ausgeführt. Die Skriptdatei namens start.ansys, welche die abzuarbeitenden Kommandos enthält, muß sich in dem obigen Beispiel in dem Homeverzeichnis ($HOME) des Nutzer befinden! Die Datei start.ansys kann zum Beispiel folgende Kommandos enthalten:

#!/bin/csh
date
cd $HOME/work/ansys
pwd
ls
setansys
ansys100 -p ansysrf < stab.inp
echo endlich fertig mit dem Beispiel

Dieser Job erhält eine Job-ID und wird in die Queue mit dem Namen Batch24 eingeordnet und auf dem Rechenknoten mit der geringsten Belastung (Load) gestartet. Mit dem Kommando bjobs kann der Jobstatus angezeigt werden. Der Output des Jobs kann während der Jobabarbeitung mit dem Kommando bpeek JobID angesehen werden.

Das bsub- Kommando ermöglicht beim Absenden eines Jobs die Angabe vieler Optionen. Daher ist es sinnvoll, sich mit einem Editor (vi, nedit, ieditor) ein Skript zu generieren, welches das bsub- Kommando mit den nachfolgenden Optionen enhält. So ein Skript kann zum Beispiel mit dem Namen start.ansys.lsf bezeichnet werden und folgende Zeile beinhalten:

bsub -q Batch72 -J AnsysJob -o $HOME/ansys.log $HOME/start.ansys

Dieser Job mit dem Namen AnsysJob soll in die Queue Batch72 eingeordnet werden und abgearbeitet werden. Der Job- Outputwird in einer Datei namens ansys.log im Homeverzeichnis gespeichert. Letztendlich wird in diesem Skript das im Homeverzeichnis des Nutzers befindliche Skript start.ansys aufgerufen - welches z. B. folgende Kommandos enthält.

Diese Vielzahl von Optionen beim Absenden eines Batchjobs kann sehr unübersichtlich sein. Im nachfolgenden Abschnitt wird eine weitere Möglichkeit zur kombinierten Abspeicherung der Joboptionen und der auszuführenden Kommandos beschrieben.

Die bsub- Optionen und die Jobbefehle in einem Skriptfile

Für die gemeinsame Abspeicherung der bsub- Optionen und der abzuarbeitenden Kommandos ist notwendig, eine einzige Skriptdatei zu erstellen. Dieser Datei kann der Name "start.ansys.lsf" gegeben werden und folgendermaßen aufgebaut sein:

#!/bin/csh
#BSUB -q Batch72
#BSUB -R linux
#BSUB -J AnsysJob
#BSUB -o ansys.log
date
cd $HOME/work
pwd
setansys
ansys100 -p ansysrf ansys.inp
echo Endlich fertig!
echo War das anstrengend!

Eine Option für das bsub- Kommando wird in der Datei namens Batch mit der Zeichenfolge #BSUB gekennzeichnet. Nachdem alle Optionen aufgeführt sind, folgen dann die auszuführenden Kommandos.

Das Absetzen des Batchjobs mit den aufgeführten Optionen und die Abarbeitung der Kommandos, welche im Skript namens start.ansys.lsf aufgeführt sind, erfolgt dann mit:

bsub < start.ansys.lsf

Dieser Job wird in der Queue namens Batch72 eingeordnet und auf einem vom LSF Jobverwaltungssystem zugeteilten Knoten gestartet. Der Jobname lautet AnsysJob und der Joboutput wird nach Jobende in einer Datei namens ansys.log in dem Verzeichnis abgelegt, aus dem dieser Job gestartet wurde.

Es wird zuerst das Kommando date ausgeführt und anschließend mit dem Kommando cd $HOME/work in das Homeverzeichnis des Nutzers und weiter in das Verzeichnis work gewechselt. Es wird mit pwd das aktuelle Verzeichnis abgefragt und dann das Programm oder Skript namens ansys100 ausgeführt. Zum Schluß werden noch zwei kleine Bemerkungen mit Hilfe des echo Kommandos ausgegeben.

Serielle Batchjobs

Serielle Comsoljobs

Serielle Comsoljobs werden auf einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf beinhaltet folgende Zeilen:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1500 && mapacc"
#BSUB -o lsf_comsol.log
#BSUB -e lsf_comsol.err
#BSUB -J Comsol_Job_seriell
date
pwd

comsol -tmpdir /usr/tmp batch input

date

 

Hinweise

  • dieser Comsoljob wird mit dem Kommando bsub<start.lsf gestartet
  • es muss ein Comsol Inputfile namens input.m existieren - der Name des Inputfiles kann geändert werden - die *.m Extension muss beibehalten werden
  • es wird der Inputfile ohne Extension angegeben
  • die mit #BSUB beginnenden Zeilen stellen die Optionen für das bsub Kommando dar
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1500 MB Hauptspeicher und bekommt den Jobnamen "Comsol_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_comsol.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_comsol.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Comsoljob mit dem Kommando bsub < start.lsf gestartet wird
  • der Comsolbatchjob wird aus diesem Verzeichnis gestartet - daher befindet sich auch der Comsolinputfile als auch sämtliche Logfiles in diesem Verzeichnis
  • eine Erläuterung aller Comsol Optionen erhält man mit dem Kommando comsol -help

Serielle Matlabjobs

Serielle Matlabjobs werden auf einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf beinhaltet folgende Zeilen:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1500 && mapacc"
#BSUB -o lsf_matlab.log
#BSUB -e lsf_matlab.err
#BSUB -J Matlab_Job_seriell
date
pwd
setmatlab

matlab -nodisplay -nojvm -nodesktop -nosplash < matlab.m > matlab.log

date

 

Hinweise

  • dieser Matlabjob wird mit dem Kommando bsub<start.lsf gestartet
  • es muss ein Matlab Inputfile namens matlab.m existieren - der Name des Inputfiles kann geändert werden - die *.m Extension sollte beibehalten werden
  • die mit #BSUB beginnenden Zeilen stellen die Optionen fuer das bsub Kommando dar
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1500 MB Hauptspeicher und bekommt den Jobnamen "Matlab_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_matlab.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_matlab.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Matlabjob mit dem Kommando bsub < start.lsf gestartet wird
  • der Matlabbatchjob wird aus diesem Verzeichnis gestartet - daher befindet sich auch der Matlabinputfile als auch sämtliche Logfiles in diesem Verzeichnis
  • eine Erläuterung der Matlab Optionen -nodisplay -nojvm -nodesktop -nosplash erhält man mit dem Kommando matlab -help

Serielle Fluentjobs

Serielle Fluentjobs werden auf einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf kann folgende Zeilen beinhalten:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1000 && mapacc"
#BSUB -o lsf_fluent.log
#BSUB -e lsf_fluent.err
#BSUB -J Fluent_Job_seriell
date
cd $HOME/work/fluent
pwd
setfluent
fluent 3d -g < fluent.jou > fluent.log

Hinweise

  • dieser Fluentjob wird mit dem Kommando bsub<start.lsf gestartet
  • es muss ein Fluent Inputfile namens fluent.jou existieren
  • die mit #BSUB beginnenden Zeilen stellen die Optionen fuer das bsub Kommando dar
  • der Fluent Jornalfile namens fluent.jou hat folgenden Inhalt
    file/read-case-data fluent_input.cas
    solve/initialize initialize
    solve/iterate 10
    file/write-data fluent_output.dat
    exit
    yes
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1000 MB Hauptspeicher und bekommt den Jobnamen "Fluent_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_fluent.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_fluent.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Fluentjob mit dem Kommando bsub < start.lsf gestartet wird

Serielle Ansysjobs

Serielle Ansysjobs werden auf einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf kann folgende Zeilen beinhalten:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1500 && mapacc"
#BSUB -o lsf_ansys.log
#BSUB -e lsf_ansys.err
#BSUB -J Ansys_Job_seriell
date
cd $HOME/work/ansys
pwd
setansys11

# mit -p aa_t_a wird die Teaching Advance Lizenz benutzt
ansys110 -p aa_t_a < ansys.inp

# mit -p aa_r wird die Ansys Academic Research Lizenz benutzt
ansys110 -p aa_r  < ansys.inp

date

 

Hinweise

  • dieser Ansysjob wird mit dem Kommando bsub<start.lsf gestartet
  • es muss ein Ansys Inputfile namens ansys.inp existieren - oder der Name des Inputfiles geändert werden
  • die Ansys "Teaching Advanced" Lizenz (aa_t_a) ist knotenpunktlimitiert, die Ansys "Academic Research" Lizenz (aa_r) beinhaltet kein Knotenpunktlimit - die unlimitierte Ansys Lizenz sollte bei entsprechender Notwendigkeit benutzt werden
  • die mit #BSUB beginnenden Zeilen stellen die Optionen fuer das bsub Kommando dar
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1500 MB Hauptspeicher und bekommt den Jobnamen "Ansys_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_ansys.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_ansys.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Fluentjob mit dem Kommando bsub < start.lsf gestartet wird
  • sinnvollerweise sollten sich der Ansysinputfile (hier: ansys.inp) und die LSF Datei im gleichen Verzeichnis befinden - dann kann das "cd ..." Kommando entfallen

Serielle Maxwelljobs

Serielle Maxwelljobs werden auf einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf beinhaltet folgende Zeilen:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1500 && mapacc"
#BSUB -o lsf_maxwell.log
#BSUB -e lsf_maxwell.err
#BSUB -J Maxwell_Job_seriell
date
pwd
maxwell -BatchSolve -Local -Ng Projektname1.mxwl
date

 

Hinweise

  • dieser Maxwelljob wird mit dem Kommando bsub<start.lsf gestartet
  • es muss ein maxwell Projekt  namens Projektname1.mxwl existieren
  • die mit #BSUB beginnenden Zeilen stellen die Optionen fuer das bsub Kommando dar
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1500 MB Hauptspeicher und bekommt den Jobnamen "Maxwell_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_maxwell.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_maxwell.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Maxwelljob mit dem Kommando bsub < start.lsf gestartet wird
  • der Maxwellbatchjob wird aus diesem Verzeichnis gestartet - daher befindet sich auch das Maxwellprojekt in Form eines Projektfiles
  • Mit dem Kommando maxwell -help  werden alle Maxwell Startoptionen in einem grafischen Fenster angezeigt

Parallele Batchjobs

Parallele Comsoljobs

Parallele Comsoljobs werden auf einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf beinhaltet folgende Zeilen:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1500 && mapacc"
#BSUB -o lsf_comsol.log
#BSUB -e lsf_comsol.err
#BSUB -J Comsol_Job_seriell
#BSUB -n 2
date
pwd

comsol -tmpdir /usr/tmp -np 2 batch input

date

 

Hinweise

  • dieser Comsoljob wird mit dem Kommando bsub<start.lsf gestartet
  • dem bsub wird mit der Option "-n 2"die Anzahl der gewünschten CPUs mitgeteilt
  • dem Comsol Solver wird mit der Option "-np 2" die Anzahl der zu verwendeten CPUs mitgeteilt - die bsub und die comsol Angaben müssen hinsichtlich der Anzahl der verwendeten CPUs unbedingt übereinstimmen!
  • es muss ein Comsol Inputfile namens input.m existieren - der Name des Inputfiles kann geändert werden - die *.m Extension muss beibehalten werden
  • es wird der Inputfile ohne Extension angegeben
  • die mit #BSUB beginnenden Zeilen stellen die Optionen fuer das bsub Kommando dar
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1500 MB Hauptspeicher und bekommt den Jobnamen "Comsol_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_comsol.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_comsol.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Comsoljob mit dem Kommando bsub < start.lsf gestartet wird
  • der Comsolbatchjob wird aus diesem Verzeichnis gestartet - daher befindet sich auch der Comsolinputfile als auch sämtliche Logfiles in diesem Verzeichnis
  • eine Erläuterung aller Comsol Optionen erhält man mit dem Kommando comsol -help

Parallele ABINIT Jobs

Parallele shared memory MPI basierende ABINIT Jobs können mit nachfolgenden LSF Beispielskript gestartet werden:

#!/bin/csh
#BSUB -q Batch72
#BSUB -R "mem>500 span[ptile=2]"
#BSUB -o abinit_lsf.log
#BSUB -e abinit_lsf.err
#BSUB -n 2
#BSUB -J ABINIT_parallel
cd $HOME/work/abinit
pwd
date
mpirun -np 2 ./abinip < ./inputfile
date

Diese Zeilen müssen in einer Datei abgespeichert werden - z. B. mit dem Namen start.abinit.lsf - und der parallele LSF Job wird mit dem Kommando

bsub < start.abinit.lsf

gestartet.

Alternativ können die obigen Zeilen in zwei Skripte aufgeteilt werden - Skript 1 für das bsub Kommando und seine Optionen - Skript 2 enthält die auszuführenden Kommandos:

Skript 1: start.abinit.lsfSkript 2: start.abinit
bsub
-q batch72
-R "mem>500 span [ptile=2]"
-o abinit_lsf.log
-e abinit_lsf.err
-n 2
-J ABINIT_parallel
$HOME/start.abinit

cd $HOME/work/abinit
pwd
date
mpirun -np 2 ./abinip < ./inputfile
date


Hinweise:

  • für das Starten eines ABINIT Jobs mit LSF ist das am Anfang dieser Seite aufgeführte Skript namens start.abinit.lsf zu bevorzugen weil sich hier die gesamten LSF Joboptionen und die eigentlichen Kommandos in einer Datei befinden
  • Skript 1 und Skript 2 müssen Ausführungsrechte erhalten:
    chmod 700 start.abinit.lsf
    chmod 700 start.abinit
  • die Angabe der Inputfiles sollte vorzugsweise unter Verwendung des vollen Pfadnamens erfolgen - die $HOME Variable kann im Skript 1 und im Skript 2 verwendet werden
  • Die mit der Option -o und -e angegebenen Output- und Errordateien werden - wenn wie im Beispielskript bezeichnet - in dem Verzeichnis abgelegt aus welchem dieser Job gestartet wird. Wenn diese Logfiles in einem anderem Verzeichnis abgespeichert werden sollen - z. B. im Homeverzeichnis - dann muss der komplette Pfadname angegeben werden - es dürfen dabei keine Umgebungsvariablen wie $HOME verwendet werden; z. B. mit:
    #BSUB -o /usr/wrk/people9/otto/work/abinit/abinit_lsf.out
  • die Option -n 2 gibt die Anzahl der angeforderten CPU- Cores an - zusammen mit der Option span[ptile=2] fordert dieser Job damit von zwei Hosts je zwei CPU Cores an; wird die Option span[ptile=2] nicht verwendet entscheidet LSF über die Verteilung und Auswahl der CPU Cores innerhalb des Clusters - z. B. 1 CPU Core auf Host 1 und 1 CPU Core auf Host 13
  • die Option -mem 500 fordert zum Startzeitpunkt 500 MByte Hauptspeicher (RAM) ueber alle (!) Parallelprozesse (= MPI Threads) an
  • die Option -q Batch72 ordnet diesen Job in die Queue Batch72 ein - und erhaelt eine max. CPU Zeit von 72 h über alle (!) MPI Threads
  • der ABINIT Job ist nach dem Starten noch einige Minuten zu "beobachten" - falsche Settings, die zum Abbruch des Programms führen (kommentiert mit "decision to take exit") - werden am Ende der Ausgabe mit einem Tip zur Reparatur ausgegeben
  • ein Tutorial und weitere Infos zu ABINIT findet man unter www.abinit.org

Parallele Fluentjobs

Parallele Fluentjobs werden auf mehr als einer CPU bzw. einem CPU Core abgearbeitet.

Der LSF Inputfile namens start.lsf kann folgende Zeilen beinhalten:

#!/bin/csh
#BSUB -q Batch24
#BSUB -R "mem > 1000 && mapacc span[ptile=4]"
#BSUB -o lsf_fluent.log
#BSUB -e lsf_fluent.err
#BSUB -J Fluent_Job_parallel
#BSUB -n 4
date
cd $HOME/work/fluent
pwd
setfluent
fluent 3ddp -lsf -t4 -ssh -g < fluent.jou > fluent.log

Hinweise

  • dieser Fluentjob wird mit dem Kommando bsub<start.lsf gestartet
  • für den Fluentjob werden vier CPUs bzw. Cores angefordert  - durch die bsub Option #BSUB n 4 und als Option zum Fluent Kommando fluent 3ddp -lsf -t4 ...
  • span[ptile=4] erzwingt das mindestens vier Fluentprozesse auf vier Core auf einem Host gestartet werden - span[ptile=2] erzwingt dass mindestens zwei Fluentprozesse auf einem Host gestartet werden
  • werden für diesen parallelen Fluentjob user defined function (UDF) verwendet - ist vorher unbedingt das UDF Handbuch zu konsultieren!!!
  • es muss ein Fluent Inputfile namens fluent.jou existieren
  • die mit #BSUB beginnenden Zeilen stellen die Optionen fuer das bsub Kommando dar
  • der Fluent Jornalfile namens fluent.jou hat folgenden Inhalt
    file/read-case-data fluent_input.cas
    solve/initialize initialize
    solve/iterate 10
    file/write-data fluent_output.dat
    exit
    yes
  • dieser Job wird entsprechend den oben verwendeten Optionen in die Queue Batch24 eingeordnet, benötigt mindestens 1000 MB Hauptspeicher und bekommt den Jobnamen "Fluent_Job_seriell"
  • der (LSF) Output wird in eine Datei namens "lsf_fluent.log" geschrieben
  • eventuelle Fehlermeldungen werden in eine Datei namens "lsf_fluent.err" geschrieben
  • die Output- und Errordatei befinden sich in dem Verzeichnis, von dem aus dieser Fluentjob mit dem Kommando bsub < start.lsf gestartet wird

MPI Jobs

MPI Jobs LSF Optionen und Kommandos allgemein gestartet werden:

#!/bin/csh
#BSUB -q Batch24
#BSUB -n 4
#BSUB -a openmpi
#BSUB -R "mem>1000 span[ptile=4]"
#BSUB -o mpi_lsf.log
#BSUB -e MPI_lsf.err
#BSUB -J MPI_Job_LSF
date
pwd

mpirun.lsf ./a.out
date


Hinweise

  • das MPI Binary muss vor dem Starten des Jobs übersetzt werden
  • dieser Job wird in der Queue Batch24 eingeordnet
  • die bsub Option -a openmpi zeigt die Verwendung der OpenMPI Implementation an
  • die bsub Option span[ptile=4] erzwingt dass auf einem Knoten mindestens vier MPI Threads laufen müssen
  • das Batchsystem weist diesem MPI Job die freien Knoten im Cluster zu

Parallele MPI Jobs

Parallele MPI basierende LAMMPS Jobs können mit nachfolgenden LSF Beispielskript gestartet werden:

#!/bin/csh
#BSUB -q Batch72
#BSUB -R "mem>500 span[ptile=2]"
#BSUB -o lammps_lsf.log
#BSUB -e lammps_lsf.err
#BSUB -n 4
#BSUB -a mpichp4
#BSUB -J LAMMPS_parallel
cd $HOME/work/lammps
pwd
date
setlammps
pam -g mpich4_wrapper lmp_g++ < $HOME/work/lammps/in.lj
date

Diese Zeilen müssen in einer Datei abgespeichert werden - z. B. mit dem Namen start.lammps.lsf - und der parallele LSF Job wird mit dem Kommando

bsub < start.lammps.lsf

gestartet. Alternativ können die obigen Zeilen in zwei Skripte aufgeteilt werden - Skript 1 für das bsub Kommando und seine Optionen - Skript 2 enthält die auszuführenden Kommandos:

Skript 1: start.lammps.lsfSkript 2: start.lammps

bsub
-q batch24
-R "mem>500 span [ptile=2]"
-o lammps_lsf.log
-e lammps_lsf.err
-n 4
-a mpichp4
-J LAMMPS_parallel
$HOME/start.lammps

cd $HOME/work/lammps
pwd
date
setlammps
pam -g mpich4_wrapper lmp_g++ $HOME/work/lammps/in.lj

 

Hinweise:

  • Skript 1 und Skript 2 müssen Ausführungsrechte erhalten:
    chmod 700 start.lammps.lsf
    chmod 700 start.lammps
  • die Angabe der Inputfiles sollte vorzugsweise unter Verwendung des vollen Pfadnamens erfolgen - die $HOME Variable kann im Skript 1 und im Skript 2 verwendet werden
  • Die mit der Option -o und -e angegebenen Output- und Errordateien werden - wenn wie im Beispielskript bezeichnet - in dem Verzeichnis abgelegt aus welchem dieser Job gestartet wird. Wenn diese Logfiles in einem anderem Verzeichnis abgespeichert werden sollen - z. B. im Homeverzeichnis - dann muss der komplette Pfadname angegeben werden - es dürfen dabei keine Umgebungsvariablen wie $HOME verwendet werden; z. B. mit:
    #BSUB -o /usr/wrk/people9/otto/work/lammps/lammps_lsf.out
  • die Option -n 4 gibt die Anzahl der angeforderten CPU- Cores an - zusammen mit der Option span[ptile=2] fordert dieser Job damit von zwei Hosts je zwei CPU Cores an; wird die Option span[ptile=2] nicht verwendet entscheidet LSF über die Verteilung und Auswahl der CPU Cores innerhalb des Clusters - z. B. 1 CPU Core auf Host 1 und 3 CPU Core auf Host 13
  • die Option -mem 500 fordert zum Startzeitpunkt 500 MByte Hauptspeicher (RAM) ueber alle (!) Parallelprozesse (= MPI Threads) an
  • die Option -q Batch72 ordnet diesen Job in die Queue Batch72 ein - und erhaelt eine max. CPU Zeit von 72 h über alle (!) MPI Threads
  • die Option -a mpichp4 gibt an dass man dass Lammps unter Verwendung das MPICH Distribution starten möchte - dieses MPICH ist auf jedem Knoten im Cluster im Verzeichnis /usr/app-soft/mpich.ch_p4 installiert
  • mit pam wird innerhalb von LSF der parallel application manager bezeichnet - der pam startet und kontrolliert alle zu diesem Job zugehörigen MPI Threads

Gaussian Jobs

#!/bin/csh
#BSUB -q Batch72
#BSUB -R "mem>500 span[ptile=4]"
#BSUB -o gaussian_lsf.log
#BSUB -e gausian_lsf.err
#BSUB -n 4
#BSUB -J Gaussian_parallel
cd $HOME/work/gaussian
pwd
date
setgaussian
g03 < $HOME/work/gaussian
date

Queuekonfiguration

Welche Ressourcen benötigt mein Job?

Bevor ein Job auf dem Computeserver ablaufen kann, muß der Nutzer seinen Job hinsichtlich der erforderlichen Ressourcen klassifizieren. Ressourcen können zum Beispiel sein:

  • Interaktiver oder Batchjob
  • gewünschte Maschine
  • gewünschte CPU- Zeit
  • erforderlicher Hauptspeicher
  • Anzahl der Prozessoren

Die für den Job erforderlichen Ressourcen (Jobparameter) werden mit den vorgegebenen Queuekonfigurationen verglichen und damit einer bestimmten Queue zugeordnet.

Die Queues und ihre Konfiguration

In diesem Abschnitt sind alle verfügbaren Queues mit ihren jeweiligen Ressourcen bzw.Parametern aufgeführt. Die Ressourcen einer Queue (Queueparameter) sind:

  • maximale Anzahl der Jobs in dieser Queue
  • maximale Anzahl der Jobs je Nutzer
  • maximale Anzahl der Jobs je Computeserver
  • maximale Laufzeit der Jobs
  • maximale CPU-Zeit (Usertime) der Jobs
  • maximal verfügbarer Hauptspeicher
  • die Namen der verfügbaren Computeserver
  • gewünschte CPU-Zeit
  • maximale Anzahl der Prozessoren

Folgende Queues mit ihren Parametern sind für allgemeine Anwendungen verfügbar:

Queues mit Parametern
QueuenameMax. Anzahl der JobsMax. Anzahl der Jobs je NutzerMax. Laufzeit
Inter81628 h
Inter24 16612 h
InterXL221614 Tage
Batch241003024 h
Batch721006072 h
BatchXL10044kein Limit


Für spezielle Applikationen und Nutzer können bei Bedarf zusätzliche Queues eingerichtet werden.

LSF Kommandos

Häufig verwendete LSF-Kommandos

In dem nachfolgenden Abschnitt werden die einzelnen LSF-Kommandos in ihrer grundlegenden Aufgabe erläutert. Soweit nicht angegeben, erhält man tiefergehende Informationen zu dem jeweiligen Kommando über die Man Pages.

Häufig verwendete LSF-Kommandos
lsinfoInformationen zu der LSF- Konfiguration bezüglich Maschinentyp, -bezeichnung, -modell und der vorhandenen Ressourcen
lsmonAusgabe der Belastung (des Loads) aller Rechenknoten
bhostsAnzeige des Status aller Masterhosts
bhosts -lausführliche Ausgabe der Hostparameter
man bhostsAnzeige aller Optionen zum Kommando
bqueuesAnzeige das Queuestatus
bqueues -lausführliche Ausgabe aller Queuparameter
man bqueuesAnzeige aller Optionen zum Kommando
bjobsAnzeige des Jobstatus der eigenen (!) Jobs
bjobs -l Anzeige aller Jobparameter
bjobs -u allAnzeige der Jobs aller Nutzer
bjobs -l 1153Jobinformationen des Jobs mit der JobID 1153
man bjobsAnzeige aller Optionen zum Kommando
bpeek JobIDAnzeige des Joboutputs, also der ASCII- Zeichen, die der Job auf dem Bildschirm ausgibt
bpeek -f JobIDkontinuierliche Ausgabe des Joboutputs (wie tail -f )
man bpeekAnzeige aller Optionen zum Kommando
xlsmonGrafisches Frontend für die Anzeige der Load- Informationen und Ressourcen allerbeteiligten Hosts im CS-Cluster
xbsubGrafische Frontend zum Absetzen eines Jobs
xlsbatchGrafisches Frontend zur Ansicht aller Jobs, Hosts, Queues, Users, Hostgroups

Remote Visualization

HowTo

Wie kann ich den "Remote Visualization" Server benutzen?
  1. Einmaliger Download der TurboVNC Software hier

  2. Verbinden mit dem Remote Visualization" Server per ssh
    Hinweis: Einmaliger Download eines ssh Clienten - z. B. putty - hier

  3. Start des TurboVNC Servers mit vncserver
    Hinweis: Beim erstmaligen Starten des TurboVNC Servers muss ein Passwort gesetzt werden!


  4. Auf dem Clienten (=Arbeitsplatzrechner) den TurboVNC Clienten starten
    Start > Programme > TurboVNC > TurboVNC Viewer

  5. Eingabe des (Remote Visualization" Server) Hostnamens hpcvr.rz.tu-ilmenau.de und der in Schritt 3 angezeigten Displaynummer:
    New TurboVNC Connection

  6. Auf Ihrem Clienten (=Arbeitsplatzrechner) erscheint der vollständige Linux KDE Desktop:
    Turbo Desktop


  7. Hinweis: Software die OpenGL Funktionalität voraussetzt muss mit vglrun Kommando gestartet werden - z. B. die Visualsierungssoftware tecplot gestartet mit: vglrun tecplot
    Im Folgenden ist eine Auswahl weiterer OpenGL basierender Software aufgeführt:
    Gambit:    vglrun gambit
    Fluent 6:  vglrun fluent6
    Fluent 12: vglrun fluent12
    HFSS:      vglrun hfss
    Maxwell:   vglrun maxwell
    Avizo:     vglrun avizo
    Comsol:    comsol -mesa
    Fieldview: vglrun fv
    Gaussview: vglrun /usr/app-soft/gaussian/gv/gview

    Das vglrun Kommando leitet die OpenGL Aufrufe an die Grafikkarte des entfernten Visualisierungsservers - damit wird der Arbeitsplatzrechner nur minimal belastet.

FAQ

1. Wie starte ich den TurboVNC Server?

Der Start des VNC Server erfolgt mit dem Kommando

vncserver

2. Wie kann ich mir meine laufenden TurboVNC anzeigen lassen?

Die laufenden VNC Server können mit dem Kommando

vncserver -list

angezeigt werden - dabei wird folgender Output erzeugt:

hpcvr.rz.tu-ilmenau.de:> vncserver -list
TurboVNC server sessions:
X DISPLAY #     PROCESS ID
:7              32498

Die Angabe :7 bezeichnet die Nummer des für den jeweiligen Nutzer relevanten VNC Server - hier ist es die Nummer :7.

Hinweis: Für jeden Nutzer ist ein laufender TurboVNC Server ausreichend!

3. Wie kann ich einen TurboVNC Server stoppen?

Ein laufender VNC Server mit der Nummer :7 kann mit dem Kommando

vncserver -kill :7

gestoppt werden. Die anschliessende Abfrage der laufenden VNC Server mit

hpcvr.rz.tu-ilmenau.de:> vncserver -list
TurboVNC server sessions:
X DISPLAY #     PROCESS ID

zeigt keinen laufenden VNC Server an.

4. Wie kann ich das Passwort für meinen TurboVNC Server ändern?

Das Passwort für meinen TurboVNC Server kann ich mit dem Kommando

vncpasswd

ändern.

5. Wie kann ich die Auflösung meines VNC Servers konfigurieren?

Mit der geometry Option kann die Auflösung des TurboVNC Servers eingestellt werden - wenn ich einen TurboVNC Server mit einer Auflösung von 1280x1024 Pixel starten möchte muss der TurboVNC Server folgendermassen gestartet werden

vncserver -geometry 1280x1024

Ebenso können andere Auflösungen angegeben werden.

Hinweis: Ohne Angabe der geometry Option wirde der TurboVNC Server mit einer Auflösung von 1024x768 Pixel gestartet!

6. Wozu brauche ich am lokalen (Windows) Clienten den "TurboVNC Viewer (Listen Mode)"

Im "Listen Mode" des TurboVNC Viewer erfolgt keine Weiterleitung der Tastatur- und Maussignale an den TurboVNC Server auf dem "Remote Visualization" Host. Für dieses Feature kann mit dem Kommando vncpasswd ein zusätzliches Passwort vergeben werden - um anderen Personen den Desktop im "view only" Modus zur Verfügung stellen zu können.

 

Hardware Server

8x Dual Core AMD Opteron 880 2,4 GHz

32 GByte Hauptspeicher

  Quadro FX 3450/4000 SDI

Software Server

VirtualGL | TurboVNC

Software Client

TurboVNC | Download unter www.virtualgl.org/Downloads/TurboVNC

Direkter Downloadlink für den TurboVNC-Windowsclienten hier.

Start des TurboVNC Client unter Windows mit

Start > Programme > TurboVNC > Turbo VNC Viewer

 

Es erscheint folgendes Loginfenster:

Software

Hinweis: Mit dem in runden Klammern angegebenen Kommando wird die Softwareumgebung gesetzt.

Computational Fluid Dynamics (CFD)

  • Fluent (setfluent)
    Start von Fluent 6.3 mit fluent6
    Start von Fluent 12 mit fluent12
    Start von Fluent 12.1 mit fluent121
    Start von TGrid mit tgrid
  • Ansys/CFX (setansys121)
    Start von Ansys Classic mit launcher121
    Start von CFX mit cfx5
  • Comsol 3.5a mit comsol

Multi Purpose

  • Maple (xmaple)
  • Matlab
    Start von Matlab 2007b mit m2007
    Start von Matlab 2009b mit m2009
    Start von Matlab 2010b mit m2010
    Start von Matlab 2011a mit m2011
  • Mathematica (setmath)

Visualisierung, Pre- und Postprozessing

  • Gambit
    Start von Gambit mit gambit
  • Tecplot (settecplot)
  • Ensight (setensight)
  • Fieldview (setfieldview)
  • Avizo
  • Patran
  • Comsol
    Start von Comsol 3.5 mit comsol
    Start von Comsol 4.1 mit comsol4

Simulation

  • Ansys (setansys)
  • Maxwell, Optimetrics (setmaxwell)
  • HFSS (sethfss)
  • ADS (setads)
  • Simplorer (setansoft)
  • MSC: Adams, Nastran, ... (setmsc)
  • Hypermesh (sethyper)
  • Comsol (comsol)
  • LAMMPS (setlammps)
  • Gaussian (setgaussian09)
  • Turbomole (setturbomole)
  • Silvaco (setsilvaco2010)
  • TCAD (settcad)

Europractice

  • Cadence
  • Mentor Graphics (setmentor)
  • Synopsys (setsynop)
  • Altera
  • Xilinx

Compiler

  • gnu
  • PGI (setpgi)
  • Intel (setintel)
  • NAG (setnag)

Bibliotheken

  • fftw
  • mpb

Kommunikation

  • MPICH (setmpi_chp4)
  • OpenMPI (setompi)





Materialien/Links

LSF - Load Sharing Facility

Message Passing Interface MPI

InfiniBand IB

Parallel Programming


Compiler

Benchmarking

Vortragsfolien