Trend der letzten Jahre in der Parallelrechentechnik

4 Cluster-Rechner 4.1 Einführung  Trend der letzten 10-15 Jahre in der Parallelrechentechnik • weg von den spezialisierten Superrechner-Plattformen h...
Author: Rainer Biermann
0 downloads 1 Views 670KB Size
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,