4 Cluster-Rechner 4.1 Einführung Trend der letzten 10-15 Jahre in der Parallelrechentechnik • weg von den spezialisierten Superrechner-Plattformen hin zu kostengünstigeren Allzwecksystemen, die aus lose gekoppelten einzelnen oder Multiprozessor-Rechnern bestehen • Idee: „man nehme 1000 ALDI-PCs und ein schnelles Netz-werk“ und hat zumindest theoretisch die Rechenleistung eines wesentlich teureren Superrechners („low-cost Superrechner von der Stange“) • Beispiel Ring-Cluster:
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 1
4 Cluster-Rechner 4.1 Einführung Definition Cluster: ein paralleles oder verteiltes Rechensystem, dass • aus einer Menge für sich allein funktionsfähiger Rechner besteht,
• die miteinander über ein Netzwerk verbunden sind und
• die zusammen als eine integrierte Rechenressource arbeiten.
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 2
4 Cluster-Rechner 4.1 Einführung Vorteile und Argumente für Cluster Computing • einzelne Arbeitsplatzrechner oder PCs werden laufend leistungsstärker
• ebenso hat die Kommunikations-Bandbreite zwischen Arbeitsplatzrechnern zu- und die Latenzzeit aufgrund leistungsfähiger Netzwerke abgenommen
• PC- bzw. Arbeitsplatzrechner-Cluster sind leichter in bestehende Netzwerke zu integrieren als spezielle Parallelrechner
• bereits existierende und einzelnen Personen zugeordnete Rechner sind häufig nur gering ausgelastet
• Entwicklungswerkzeuge für Arbeitsplatzrechner (PCs) sind häufig ausgereifter und verbreiteter als entsprechende Lösungen für spezielle nicht-standardisierte Parallelrechnersysteme Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 3
4 Cluster-Rechner 4.1 Einführung • PC- bzw. Arbeitsplatzrechner-Cluster sind eine kostengünstige und einfach verfügbare Alternative zu spezialisierten HochleistungsRechner-Plattformen
• Cluster lassen sich vergleichsweise leicht ausbauen Erweiterung der Leistungsfähigkeit eines Knotens durch Hinzufügen weiteren Speichers oder zusätzlichen Prozessoren
• Cluster, Netzwerk von Clustern, Arbeitsplatzrechner-Cluster sind im Folgenden synonyme Begriffe
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 4
4 Cluster-Rechner 4.2 Allgemeiner Aufbau Cluster-Architektur Allgemein: Cluster-Computing-Architektur • mehrere Hochleistungs-Rechner • Cluster-Middleware (Cluster-Betriebssystem) • Hochgeschwindigkeits-Netzwerk
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 5
4 Cluster-Rechner 4.2 Allgemeiner Aufbau Cluster-Architektur Hochgeschwindigkeits-Netzwerke für Cluster-Rechner (Stand: Sommer 2009) • Ethernet (10Mbps) , Fast Ethernet (100Mbps), Gigabit Ethernet (1Gbps)
• SCI (Scalable Coherent Interface) (lt. Herstellerangabe von Dolphin PCIe Adapterkarten , 500-700 MByte / s; 1,4 µs Latenzzeit)
• Myrinet (bis 2.5 GByte / s unidirektional pro PCIe-Adapterkarte) • QsNet (bis 404 MByte / s, erreicht in 1024 Knotensystem, 5-7 µs Latenzzeit QSNet-II)
• InfiniBand (effektive Bandbreite pro Leitung und Knoten 2.5 Gbit/s bzw. 5 GBit/s (DDR-RAM); 12x Bündelung 30 bzw. 60 GBit/s )
•
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 6
4 Cluster-Rechner 4.2 Allgemeiner Aufbau Cluster-Architektur Übliches Kommunikationsprotokoll • TCP / IP Manchmal: spezielle schnelle Kommunikationsprotokolle und Dienste • Active Messages (Berkeley) Details: • Vorlesung Programmierung und Architekturen von ClusterRechnern
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 7
4 Cluster-Rechner 4.3 Programmierumgebungen mit die zwei wichtigsten Programmierumgebungen • PVM („Parallel Virtual Machine“) • MPI („Message Passing Interface“) • gilt allgemein für parallele Rechensysteme Message Passing vs. gemeinsamen Speicher • lose vs. eng gekoppelt Speicher-gekoppelt Rechnerknoten
Netzwerk / Bus
gemeinsamer Speicher
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 8
Daten ...
D:
Rechnerknoten
H:
D:
Nachrichten-gekoppelt
...
4 Cluster-Rechner 4.3 Programmierumgebungen - Nachrichtenkopplung
Kopf H:
H:
D:
...
Netzwerk
D: ...
Rechnerknoten
Rechnerknoten
H:
Rechnerknoten
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 9
4 Cluster-Rechner 4.3 Programmierumgebungen - Nachrichtenkopplung Cluster (zumeist) Nachrichten-gekoppelt • folgende Annahmen bzw. Eigenschaften: jede CPU bzw. genauer Cluster-Knoten hat eigenen lokalen Speicher, kein gemeinsamer Speicher Architektur einfach skalierbar Tasks kommunizieren explizit untereinander (send/receive messages) weite Verbreitung von Sprachen, die auf Weitergabe von Nachrichten beruhen, einige standardisiert MPI (und früher PVM) sind dabei die mit Abstand bedeutendsten Umgebungen Virtueller gemeinsamer Speicher („virtual shared memory“) bei verteilten Systemen wenig durchgesetzt
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 10
4 Cluster-Rechner 4.4 Programmierumgebung MPI MPI: Spezifikation einer Bibliothek zur Programmierung von Mehrprozessorsystemen mit verteiltem Speicher • Standardschnittstelle des MPI-Forums • Informationen: www.mpi-forum.org
MPI Orientierung an PVM (Parallel Virtual Machine) • vieles wurde verfeinert • aber keine echte Erweiterung, somit PVM und MPI untereinander nicht zueinander kompatibel • PVM hat seinerseits bei eigenen Erweiterungen wieder Elemente von MPI übernommen
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 11
4 Cluster-Rechner 4.4 Programmierumgebung MPI Entwicklung MPI • MPI-1 wurde 1994 standardisiert • seit Juli 1997 existiert MPI-2-Standard • mehrere PD-Libraries: MPICH der Argonne National Laboratories,
• • • • • •
LAM, CHIMP und UNIFY Standard für Kommunikation der Tasks (message passing) Umgebung besteht im Wesentlichen aus umfangreicher Bibliothek (MPI-Library) explizites „Message Passing“ Paradigma entwickelt durch Konsortium von Industrie und Universitäten Zielstellung sind Portabilität und Performance Hersteller-Implementationen: DEC, IBM, HP, Cray, Sun, Hitachi
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 12
4 Cluster-Rechner 4.4 Programmierumgebung MPI kurze Einführung in MPI(-I) • einerseits umfangreich (125 Funktionen) • andererseits klein in der praktischen Anwendung • mit bereits 6 Funktionen lassen sich einfache SPMD-Programme entwickeln
MPI_Init; Initialisierungsroutine MPI_Comm_Size; gibt Anzahl der beteiligten Prozesse zurück MPI_Comm_rank; gibt eindeutige Prozessidentifikation zurück MPI_Send; Standardfunktion zum Senden MPI_Receive; Standardfunktion zum Empfangen MPI_Finalize; Abschlussroutine
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 13
4 Cluster-Rechner 4.4 Programmierumgebung MPI
• keine dynamisch aufrufbaren Prozesse Prozessanzahl beim Starten fest (im Gegensatz zu PVM und MPI-2)
• sehr vielfältige Funktionen (im Gegensatz zu PVM) • MPI-2 unterstützt dynamische Prozesserzeugung und parallele Ein-/Ausgabe Erweiterung der Sprachanbindung – ursprünglich C und Fortran77 jetzt Fortran90 und andere Sprachen
• Nachrichten-Austausch intern über Warteschlangen gelöst Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 14
4 Cluster-Rechner 4.4 Programmierumgebung MPI • MPI-Programmablauf Ein Programm, das auf MPI aufsetzt, beginnt mit dem Einfügen der Fortran- oder C-Bindings: include "mpi.h" Bevor aber Prozesse existieren, muss MPI_Init die Umgebung initialisieren Danach kann jeder Prozess mit MPI_Comm_rank seine Ordnungsnummer und mit MPI_Comm_size die Zahl seiner "Geschwister" erfragen Am Schluss des Programms sollte MPI_Finalize stehen, um Systemressourcen wieder freizugeben Beim Abfangen von Fehlersituationen sorgt MPI_Abort für einen geordneten Abbruch Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 15
4 Cluster-Rechner 4.4 Programmierumgebung MPI • Beispiel: Erstellen eines MPI-Programms, in dem Botschaften folgendermaßen verschickt werden: – Prozess 0 sendet eine Botschaft an Prozess 1 – Prozess 1 sendet eine Botschaft an Prozess 2 – ..., Prozess N-1 sendet eine Botschaft an Prozess 0
Die Botschaft besteht aus einer 64 Bit Real Größe, die vom Prozess 0 mit dem Wert 0.0 initialisiert wird
jeder Prozess addiert seine Prozess-Id zu dieser Größe und sendet die Botschaft weiter an den nächsten Prozess Prozess 0 gibt schließlich das Ergebnis aus
Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 16
4 Cluster-Rechner 4.4 Programmierumgebung MPI Folgende sechs Funktionen reichen aus: MPI_Init() MPI_Finalize() MPI_Comm_rank() MPI_Comm_size() MPI_Send(buf, count, datatype, dest, tag, comm) MPI_Recv(buf,count,datatype,source,tag,comm,status) Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 17
4 Cluster-Rechner 4.4 Programmierumgebung MPI #include #include #include int main(int argc, char *argv[]) { int size, rank; double botschaft; MPI_Status status;
MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size);
botschaft = 0.0; Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 18
4 Cluster-Rechner 4.4 Programmierumgebung MPI if(rank == 0) { MPI_Send(&botschaft, 1, MPI_DOUBLE, MPI_COMM_WORLD); MPI_Recv(&botschaft, 1, MPI_DOUBLE, MPI_COMM_WORLD, &status); printf("result: %lf\n", botschaft); } else { MPI_Recv(&botschaft, 1, MPI_DOUBLE, MPI_COMM_WORLD, &status); botschaft += rank; MPI_Send(&botschaft, 1, MPI_DOUBLE, 1, MPI_COMM_WORLD); } MPI_Finalize(); exit(0); } Lehrstuhl Informatik 3 - Prof. D. Fey Vorlesung Rechnerarchitektur WS 2012/13 8.1.-15.1.2013 Folie 19
1, 1, size-1, 1,
rank-1, 1,
(rank+1)%size,