IVV Naturwissenschaften IV der Fachbereiche Biologie Chemie Physik Einführung in das Computernetz der IVV Naturwissenschaften Teil II: Computing in der Physik Westfälische Wilhelms-Universität Münster Das Morfeus GRID 07-NOV-2007 Thomas Bauer (tombauer@uni-muenster.de) 1 Inhalt Allgemeine Begriffe zum Computing Das Morfeus GRID Die Condor-Software Rechnungen im GRID durchführen Zurechtfinden im GRID 2
Zwei Klassen von numerischen Berechnungen High Performance Computing (HPC) Programm benötigt sehr viel Rechenzeit High Throughput Computing (HTC) Programm läuft relativ schnell durch, muss aber sehr häufig gestartet werden (z.b. bei Parameterscans) In beiden Fällen lange Wartezeiten! Zwei Methoden zur Verkürzung der Rechenzeit Parallelisierung Code muss parallelisiert werden Programm läuft auf Parallelrechner Besonders geeignet für HPC-Bereich Verteiltes Rechnen (Distributed Computing) Code bleibt unverändert Programm läuft auf normalen PCs Besonders geeignet für HTC-Bereich
Distributed Computing in der IVV Naturwissenschaften Morfeus GRID Projektname des Grids Multiple Orphaned Resources For Educational Use GRID-Software: Condor Kostenlos Platformunabhängig Relativ leicht zu benutzen Aufbau des Morfeus GRIDs Biologie Arbeitsplatz Chemie Arbeitsplatz CIP CIP Central Manager Physik Terminalserver NWZHome Arbeitsplatz CIP Beschränkt auf Biologie, Chemie und Physik Ca. 700 Maschinen (Knoten, Clients) ~ 300 P4 ~ 150 C2D Jeder Knoten sendet in regelmäßigen Abständen seine Attribute (ClassADs) an den Central Manager
Nutzerkreis Wer kann das Morfeus GRID nutzen? Jeder Besitzer eines NWZnet-Accounts Wie benutze ich das Morfeus GRID? Computer mit installierter Condor-Software wird benötigt das sind (fast) alle Windows-Rechner der IVV Naturwissenschaften Terminalserver NWZHome für die Benutzung von außerhalb Welche Programme laufen im GRID? Nur Programme, die auch in einer Konsole laufen würden Die Condor-Software Es gibt keine graphische Benutzeroberfläche Benutzung erfolgt über Kommandos in der Konsole Linux: Shell Windows: Command Prompt (CMD) Manual: 800 Seiten!
Eine Rechnung im Morfeus GRID starten Vorgehensweise Programm schreiben (C/C++, Fortran,...) Programm compilieren und linken Job abschicken (submitten) Knoten führt Programm aus Ergebnis wird nach Beendigung des Programms zurückgeliefert Jobs abschicken Einmalig condor_store_cred add auf Knoten ausführen, von dem submittet wird Benötige Job Submission File (SUB-File) Klartextdatei Datei enthält alle Informationen über den anstehenden Job Liste der Dateien Anforderungen an den auszuführenden Knoten (Leistung, RAM,...)...
Beispiel für eine einfache SUB- Datei Hello.sub universe = vanilla executable = hello.exe queue # Dies ist ein Kommentar Universe Gibt die Umgebung an Im Morfeus GRID immer vanilla Executable Gibt den Namen der Auszuführenden an Queue Steht immer ganz am Ende der SUB-Datei Startkommando Kommentare mit # Beispiel für eine bessere SUB- Datei Hello.sub universe = vanilla executable = hello.exe log = hello.log output = hello.out error = hello.err queue Log Verlauf des Jobs wird mitgeschrieben und ständig aktualisiert Output Bildschirmausgabe in Datei umleiten Error Fehlermeldungen (des Betriebssystems) in Datei umleiten
Beispiel für eine gute SUB- Datei Requirements Definiert die Anforderungen an den Zielknoten Operatoren wie in C/C++ ACHTUNG: Falls OpSys nicht in der SUB-Datei definiert wurde, so wird dieser Wert vom aktuellen System übernommen! Hello.sub universe = vanilla executable = hello.exe log = hello.log output = hello.out error = hello.err requirements = OpSys== WINNT50 OpSys== WINNT51 queue Job abschicken Kommando condor_submit Hello.sub Verzeichnis, in dem das Kommando ausgeführt wird ist Arbeitsverzeichnis Log-, Error- und Output-Datei werden hier erstellt Ergebnisdateien werden an diese Stelle zurückgeschrieben
000 (1897.000.000) 08/22 16:26:29 Job submitted from host: <128.176.197.24:3740> JobID.Cluster 001 (1897.000.000) 08/22 16:26:38 Job executing on host: <128.176.240.82:1068> Aufbau der Log-Datei 004 (1897.000.000) 08/22 20:56:55 Job was evicted. Job wurde abgebrochen (0) Job was not checkpointed. Usr 0 00:00:00, Sys 0 00:00:00 - Run Remote Usage Usr 0 00:00:00, Sys 0 00:00:00 - Run Local Usage 0 - Run Bytes Sent By Job 0 - Run Bytes Received By Job 001 (1897.000.000) 08/22 20:59:38 Job executing on host: <128.176.240.123:1068> 010 (1897.000.000) 08/23 10:04:01 Job was suspended. Job pausiert Number of processes actually suspended: 1 011 (1897.000.000) 08/23 11:32:15 Job was unsuspended. Job wird fortgesetzt 005 (1897.000.000) 08/24 09:50:49 Job terminated. (1) Normal termination (return value 0) Usr 0 00:00:00, Sys 0 00:00:00 - Run Remote Usage Usr 0 00:00:00, Sys 0 00:00:00 - Run Local Usage Usr 0 00:00:00, Sys 0 00:00:00 - Total Remote Usage Usr 0 00:00:00, Sys 0 00:00:00 - Total Local Usage 7120444 - Run Bytes Sent By Job 3538741 - Run Bytes Received By Job 7120444 - Total Bytes Sent By Job 3538741 - Total Bytes Received By Job Zusätzliche Dateien Programm benötigt zusätzliche Datei(en) Analyse.sub messung.dat universe = vanilla executable = analyse.exe log = analyse.log output = analyse.out error = analyse.err transfer_input_files = messung.dat, parameter.txt queue Verschiedene Pfadangaben parameter.txt Absolute Pfade: z.b. Z:\2007\messung.dat Relative Pfade: z.b...\..\ms\messung.dat
Interaktive Programme Programm benötigt Eingabe über Tastatur Physik.sub universe = vanilla executable = physik.exe log = physik.log output = physik.out error = physik.err input = physik.in queue 9.81 3.141 42 physik.in Massenjobs (HTC) Ein Programm (htc.exe), Laufzeit T N verschiedne Parametersätze (parameter.dat) N Ergebnisdateien Ein Computer Morfeus GRID Laufzeit: N T Laufzeit: T
Massenjob vorbereiten Massenjob htc.sub htc.exe Job0 Job1 Job2 Job3 Job4 Arbeitsverzeichnis möglichst auf Netzlaufwerk (Gruppenplatte N:\Group\Physik, Homedrive I:) Bei Windows-Shares (Auch Laufwerk C:) sind maximal 10 gleichzeitige Verbindungen zugelassen! Erfahrungsgemäß sollte für jeden Job (Parametersatz) ein eigenes Verzeichnis erstellt werden SUB-File eines Massenjobs Massenjob htc.sub htc.exe Job0 Job1 Job2 Job3 Job4 htc.sub universe = vanilla executable = htc.exe initialdir = Job$(PROCESS) transfer_input_files = log = htc.log output = htc.out error = htc.err queue 5 Durch initialdir wird Arbeitsverzeichnis definiert $(PROCESS) nimmt hier die Werte 0 bis 4 an
Was passiert genau mit meinem Job nach dem Submitten? Job wird in die lokale Queue (Warteschlange) gestellt Diese Queue wird an den Central Manager gesendet Central Manager entscheidet wo der Job ausgeführt wird und stellt Verbindung her Queue Serielle Jobs submitten Automatismus für serielle Jobs Condor: DAG (Directed Acyclic Graph) Job A Job C Ergebnis Job B jobs.dag Job A JobA.sub Job B JobB.sub Job C JobC.sub Submitten Parent A B CHILD C condor_submit_dag jobs.dag
Queues abfragen condor_q Fragt die lokale Queue ab condor_q analyze Falls der Job nicht startet condor_q global Fragt alle Queues ab condor_q run Zeigt den Knoten an, der den Job ausführt condor_q name Knoten123 Fragt die lokale Queue ab eines anderen Knoten ab (hier: Knoten123) Eigene Jobs verwalten condor_rm ID.Cluster Job aus der (lokalen) Queue entfernen condor_hold ID.Cluster Job aus der (lokalen) Queue anhalten condor_release ID.Cluster Job aus der (lokalen) Queue wieder freigeben
Status des GRIDs abfragen condor_status Zeigt die aktuelle Auslastung an condor_status Knoten321 condor_status Knoten321 long Gibt detailliertere Auskunft Liste aller ClassADs Diese ClassADs werden in der SUB- Datei bei den requirements benutzt! Die gebräuchlichsten ClassADs OpSys Linux : Linux WINNT50 : Windows2000 WINNT51 : WindowsXP WINNT52 : Windows Server 2003 ARCH_TYPE P4 : Pentium IV C2D : Pentium Core2Duo RAM : Arbeitsspeicher in MB DISK : freier Festplattenplatz in kb MIPS bzw. KFLOPS : CPU-Leistung
Status eines Rechners condor_status zeigt State und Activity an State Unclaimed : Auf Knoten kann Job gestartet werden Claimed : Auf Knoten ist derzeit ein Job gestartet Owner : Der Knoten wird derzeit vor Ort benutzt Activity Busy : Ein Job wird gerade bearbeitet Suspended : Ein Job wurde zurückgestellt, da ein Benutzer vor Ort den Knoten braucht Idle : Prozessor wird derzeit nicht benutzt Gerechte Verteilung der Ressourcen Condor Prioritätssystem Kein FiFo (First In First Out) Benutzer mit besserer Priorität werden bei Ressourcenknappheit bevorzugt Eigene Priorität ist nur abhängig von der Nutzungsdauer condor_userprio Zeigt aktuelle Prioritäten an Beste Priorität ist 0.5 Je höher der Wert desto niedriger die Priorität
Tipps und Tricks Normalerweise möchte man für seinen Job den schnellsten Knoten, der zur Verfügung steht IMSL-Bibliothek fast.sub (...) RANK = MIPS (...) Statisch linken! (%link_f90_static%) UsingIMSL.sub (...) transfer_input_files = N:\Software\Programming\Intel\IMSL50\Fortran\IA32\LICENSE\LICENSE.DAT environment = LM_LICENSE_FILE = LICENSE.DAT (...) Quellen Morfeus Homepage www.uni-muenster.de/ivvnwz/computing/morfeus/ Condor Homepage http://www.cs.wisc.edu/condor/ Meine email-adresse tombauer@uni-muenster.de
Zusammenfassung Aufbau des Morfeus GRIDs Überblick über die Condor-Software Funktionsweise Jobs und Massenjobs abschicken Status des GRIDs abfragen Queue einsehen und bearbeiten Vielen Dank für Ihre Aufmerksamkeit! 140 120 Rechenzeit in Jahren 100 80 60 40 20 0 2005 2006 2007* Fragen...?