460 likes | 576 Views
Bulk Synchronous Parallel Computing. Seminar Parallele Programmierung Michael Poldner. Motivation. Sequentielle Rechner Grundlage: von Neumann-Modell Vorteil : Entkopplung von Hard- und Softwareentwicklung Parallele Rechner
E N D
Bulk Synchronous Parallel Computing Seminar Parallele Programmierung Michael Poldner
Motivation Sequentielle Rechner • Grundlage: von Neumann-Modell • Vorteil: Entkopplung von Hard- und Softwareentwicklung Parallele Rechner • bis Ende 80er Jahre hardwareorientiertProblem: viele Architekturen; Software speziell für diese entwickelt, kaum übertragbar, schnell veraltet und teuer • Ende 80er Jahre softwareorientierte Ansätze • Ende 80er/Anfang 90er Jahre modellorientiertZiel: Skalierbarkeit, Portabilität, Vorhersagbarkeit
Gliederung • Berechnungsmodelle • PRAM-Modell • BSP-Modell • Fazit
1. Berechnungsmodelle • dienen zur Analyse von Algorithmen • Bewertung unabhängig von Programmiersprache undbestimmten Rechner anhand eines Bewertungskriteriums • Basis: einheitliches Rechnermodell- abstrahiert von konkreten Rechnerdetails- Angabe von wichtigen Merkmalen einer Klasse von Rechnern an, welche signifikanten Einfluss auf die Laufzeit von Algorithmen haben:z.B. Basisoperationen, Zeitpunkt der damit zusammen- hängenden Aktionen, Datenzugriff, Datenspeicherung
Random Access Machine • Berechnungsmodell für sequentielle Rechner • Im wesentlichen Random Access Memory von unbeschränkter Kapazität • Speicherzelle speichert Wort beliebiger Größe • Schreib-/Lesezugriffe in konstanter Zeit • Recheneinheit führt arithmetische Operationen(+, -, *, /) in konstanter Zeit und unabhängig von Operandengröße aus
2. Parallel Random Access Machine • Zur Analyse von parallelen Algorithmen • Rechnermodell:- unbeschränkte Anzahl von Prozessoren- synchrone Ausführung des gleichen Programms- Prozessoren haben eigenen lokalen Speicher- Synchronisation über gemeinsamen globalen Speicher unbeschränkter Größe- lokaler/globaler Speicherzugriff in konstanter Zeit
Abbildung PRAM Gemeinsamer Speicher P1 P2 Pn ... L1 L2 Ln Pi: Prozessoren Li: lokale Speicher
Speicherzugriffskonflikte • Problem: mehrere Prozessoren greifen auf gleiche Speicherzelle zu! • Unterscheidung von PRAM-Varianten nach Art der Konfliktbehandlung:- Exclusive Read/Exclusive Write- PRAM- Concurrent Read/Exclusive Write- PRAM- Exclusive Read/Concurrent Write- PRAM- Concurrent Read/Concurrent Write- PRAM • CR/EW-PRAMkommt Realität am nächsten
Speicherzugriffskonflikte • Problem: gleichzeitige Schreibzugriffe (CW) • unterschiedliche Varianten denkbar:- Common-CW: simultanes Schreiben erlaubt, wenn alle Prozessoren gleichen Wert schreiben- Arbitrary-CW: Schreiben darf zufällig ausgewählter Prozessor- Priority-CW: Prozessor mit höchster (niedrigster) Priorität darf schreiben
Bewertung von Algorithmen • Kosten werden mit der Anzahl der benötigten PRAM-Schritte angegeben • Jeder PRAM-Schritt besteht aus drei Teilschritten:- Lesen von Daten aus dem globalen Speicher- Ausführung einer einfachen binären Operation- Zurückschreiben eines Wertes in globalen Speicher • Nach jedem Schritt: Synchronisation der Prozessoren (verursacht keine Kosten)
PRAM-Algorithmen • Bestehen aus zwei Phasen: • 1. Phase: Aktivieren der benötigten Prozessorenspawn (P1, P2, ... , Pn) • 2. Phase: Ausführen der parallelen Berechnungenfor all (Pi1, Pi2, ... , Piq){// parallele Berechnungen } • Identifikation der Prozessoren durch Nummer bzw. Index, der lokal zur Verfügung steht
3 5 1 4 8 5 13 Beispiel: Summenberechnung • Aufgabe: Addition aller Werte in einem Array • Ansatz: baumartige Verknüpfung
Ansatz ermöglicht Berechnung in (log n) Zeit! global int A[n]; global int j; spawn (P0, P1, … , Pn/2-1); for all (Pi where 0 i n/2-1 ) { for (j = 0; j < log n; j++) { if (i % 2j == 0 && 2i + 2j < n) { A[2i] = A[2i] + A[2i + 2j] } } }
Realisierbarkeit des PRAM-Modells • beliebig viele simultane Zugriffe in konstanter Zeit durch aktuelle Speicherelemente nicht unterstützt • Problem: vorgestelltes Modell nicht realisierbar! • Lösung: globalen Speicher in mehrere Speichermodule aufteilen und über Verbindungsnetzwerk mit Prozessoren verbinden
Abb.: PRAM mit Verbindungsnetzwerk S1 S2 ... Sn Verbindungsnetzwerk P1 P2 Pn ... L1 L2 Ln Pi: Prozessoren Li: lokale Speicher Si: globale Speichermodule
Diskussion des PRAM-Modells • Unrealistische Modellannahmen • Zeitliche Verzögerungen bei Zugriff auf entfernte Speichermodule • Zugriff auf lokalen Speicher schneller als aufglobalen Speicher • Kollisionen bei Speicherzugriff unberücksichtigt • Speicherhierarchien unberücksichtigt • Lokalität von Algorithmen unberücksichtigt • Betrachtung der Synchronisation und deren Kommunikationskosten unberücksichtigt
Fazit • Stark vereinfachende Annahmen • Maschinenparameter eines realen PRAM-Rechners unberücksichtigt • Pro- einfaches Programmiermodell - einfache Laufzeitanalysen möglich • Contra- für realistische Abschätzung der Laufzeit von Algorithmen ungeeignet
3. Bulk Synchronous Parallel Modell • Abstrakter Rechner mit verteiltem Speicher • Jeder Prozessor verfügt über lokalen Speicher • Prozessoren über Verbindungsnetzwerk untereinander verbunden • Kommunikation im Punkt-zu-Punkt-Transfer • Mechanismus zur Barrieresynchronisation
Verbindungsnetzwerk P1 P2 Pn ... L1 L2 Ln Abb.: BSP-Computer Pi: Prozessoren Li: lokale Speicher
BSP-Parameter • Spezifikation der Performance eines BSP-Rechners • p: Anzahl der (virtuellen) Prozessoren • s: Prozessorgeschwindigkeit (#Berechnungsschritte pro Sekunde) • l: Synchronisationslatenz (die Anzahl der Schritte, die eine Barrieresynchronisation benötigt) • g: (Die Summe der lokalen Operationen, welche durch alle Prozessoren in einer Sekunde ausgeführt werden) / (Die Summe der Wörter, welche in einer Sekunde über das Netzwerk verschickt werden)
BSP-Parameter Parameter l • beeinflusst von:- Netzwerklatenz- Durchmesser des Verbindungsnetzwerks • Untergrenze durch Hardware festgelegt • Zeitspanne zwischen zwei Synchronisationsoperationen kann dynamisch zur Laufzeit variieren
BSP-Parameter Parameter g • Bezieht sich auf die Häufigkeit mit welcher nicht lokale Speicherzugriffe realisiert werden können • Stellt Bandbreite des Netzwerks dar, die angibt, wie viele Operationen in der Zeit ausgeführt werden können, die das Verschicken eines Worts benötigt • Abhängig von:- Bisektionsbandbreite des Netzwerks- Kommunikationsprotokoll- Kommunikationsbibliothek
Superschritte • Berechnung erfolgt in Folge von Superschritten • Ein Superschritt besteht aus drei Phasen:- Berechnungsphase- Kommunikationsphase- Synchronisationsphase
Abb.: Superschritt (virtuelle) Prozessoren P1 P2 P3 Pn-1 Pn Berechnungsphase Kommunikationsphase Barrieresynchronisation Synchronisationsphase Zeit
Berechnungsphase • Ausführung von Operationen nur in dieser Phase erlaubt • Operationen arbeiten auf lokal gehaltene Daten, welche zu Beginn des Superschritts verfügbar waren • Mehrere Berechnungsschritte durchführbar • Kommunikation in dieser Phase nicht erlaubt • DauerL der Berechnungsphase: Ausführungszeit des Prozessors mit längster lokaler Berechnung
Kommunikationsphase • Nicht lokale Schreib-/Leseanfragen über Senden/Empfangen von Nachrichten realisiert • Kommunikation durch h-Relation beschreibbar (Prozessor darf max. h Nachrichten senden und max. h Nachrichten empfangen) • Annahme: Nachricht besteht aus m Wörtern • Kosten der Kommunikation: m * g * hSchritte • Zwei Kommunikationsmodi:Direct Remote Memory Access (DRMA)Bulk Synchronous Message Passing (BSMP)
Direct Remote Memory Access • Idee: Stelle lokale Variable/Datenstruktur für globalen Zugriff zur Verfügung • Dazu: Registrierungsmechanismus • Setzen und Aufheben der globalen Verfügbarkeit über die Operationenbsp_push_reg, bsp_pop_reg • Zugriff auf registrierte Datenstrukturen und Variablen überbsp_get, bsp_put • Effekt erst im nächsten Superschritt wirksam!
Bulk Synchronous Message Passing • Idee: Schicke Nachrichten an Warteschlange eines Prozessors • Schreiben über bsp_send, Auslesen über bsp_move • Weitere Operationen zur Ermittlung der Anzahl und Größe der Pakete in der Warteschlange • Gewährleistung: Nachrichten erreichen ihr Ziel vor Beginn des nächsten Superschritts • Effekt erst im nächsten Superschritt wirksam!
DRMA vs. BSMP • DRMA wird benutzt, wenn jedem Prozess die Existenz der nicht lokalen Speicherbereiche bekannt ist. • BSMP eignet sich für Probleme, bei denen nur der Nachrichtenempfänger Kenntnis über genauen Speicherort ankommender Daten hat.
Synchronisationsphase • Prozess beendet Kommunikationsphase durch bsp_sync • Prozess wartet, bis alle Nachrichten ihr Ziel erreicht haben • Danach: alle Prozessoren starten gemeinsam nächsten Superschritt • Barrieresynchronisation • Parameter l gibt Dauer der Synchronisation an
Bewerten von Algorithmen • Annahme: Zugriff auf nicht lokale Speicher einheitlich effizient • Kosten eines Superschritts:TSuperschritt = L + m * g * h + l • Kosten eines BSP-Algorithmus:Summe der Ausführungszeiten seiner benötigten Superschritte
BSPlib-Programmierung • BSPlib ist weit verbreitete BSP-Bibliothek für C, C++, Fortranweitere: PUB, JBSP, ... • 20 Basisoperationen • Stellt Infrastruktur zur Verteilung der Daten und zur Kommunikation bereit • Programmierung ist plattformunabhängig • Adoptiert das Single Program Multiple Data (SPMD)-Programmiermodell
SPMD-Programme Aufgabe: Abbilden eines Problems, welches eine Datenstruktur derGröße n manipuliert, auf p Instanzeneines Programms, so dass jedes Programm n/p große Blöcke der ursprünglichen Datenstruktur bearbeitet.
Starten und Beenden vonSPMD-Code • Starten und Beenden von Prozessen über: void bsp_begin(int maxprocs); void bsp_end(void); • Nur ein bsp_begin / bsp_end-Paar pro Programm • Der durch diese Operationen eingeschlossene Code wird auf mehreren Prozessoren ausgeführt • Alternativen:- reine SPMD-Weise- Simulation dynamischer Prozesse
Starten und Beenden vonSPMD-Code • Reine SPMD-Berechnung:bsp_begin und bsp_end sind erste und letzte Anweisung im Programm void main(void) { bsp_begin(bsp_nprocs()); printf(„Hello BSP Worldwide from %dof %d\n“,bsp_pid(), bsp_nprocs()); bsp_end(); }
Simulation dynamischer Prozesse • Prozesse dynamisch zur Laufzeit erzeugen • Problem: nicht alle parallelen Maschinen unterstützen dynamische Prozesserzeugung • Simulation über bsp_init-Operation • Idee: SPMD-Teil des Programms in Methode kapseln
int nprocs; // globale Variable void spmd_part(void) { bsp_begin(nprocs); printf(„Hello BSP Worldwide from %d of %d\n“, bsp_pid(), nprocs); bsp_end(); } void main(int argc, char *argv[]) { bsp_init(spmd_part, argc, argv); nprocs = readInteger(); spmd_part(); }
Stoppen der Programmausführung • Anhalten aller Prozesse über void bsp_abort(char *format...); • Format entspricht dem desprintf-Befehls • Ausgabe einer Fehlermeldung möglich • Effekt dieser Operation tritt sofort ein:Keine Barrieresynchronisation notwendig
Lokale Abfragefunktionen • Abfragefunktionen erfordern keine Kommunikation zwischen den Prozessen • Liefern Informationen über:- Anzahl beteiligter paralleler Prozesse,- ProzessID eines Prozesses- vergangeneZeit in Sekunden seit bsp_begin • Abfragefunktionen in BSPlib: int bsp_nprocs(void); int bsp_pid(void); double bsp_time(void);
Bsp.: DRMA-Kommunikation • Syntax der benötigten Operationen: void bsp_push_reg(constvoid *ident, int size); void bsp_pop_reg(const void *ident); void bsp_put(int pid, const void *src, void *dst,int offset, int nbytes);
DRMA-Kommunikation int reverse(int x) { // registriere x für DRMA-Zugriff bsp_push_reg(&x, sizeof(int)); bsp_sync(); // transferiere x bsp_put(bsp_nprocs()-bsp_pid()-1, &x, &x, 0, sizeof(int)); bsp_sync(); // hebe DRMA-Registrierung auf bsp_pop_reg(&x); return x; }
Diskussion des BSP-Modells • KritikpunktOft großer Overhead durch Versenden kleiner Nachrichten - Zusammenstellen von Nachrichten- Header (vgl. TCP/IP-Protokollstack) • Lösung: BSP*-Modell • im BSP*-Modell: zusätzlicher Parameter B • B gibt minimale Nachrichtengröße an, mit welcher Kommunikation effizient abläuft
Kritikpunkte- kein paralleles Ausführen von verschiedenen Algorithmen- Lokalität im Modell unberücksichtigt • Lösung: D-BSP-Modell • Erlaubt Partitionierung des BSP-Computers in autonome Teilcomputer • Problematisch: Laufzeit von BSP-Algorithmen abhängig von BSP-Parametern und Hardware • Algorithmus sorgfältig auswählen
Vorteile • BSP-Bibliotheken bieten:- Plattformunabhängigkeit- hohe Portabilität und Skalierbarkeit • Im Vergleich zur PRAM:- wenig Kommunikation- seltene Synchronisation • Keine Deadlocks möglich, da Berechnung und Kommunikation entkoppelt
BSP in der Praxis • Auswertung von reinfunktionalen SprachenReinfunktionale Sprachen sind nebeneffektfrei haben keine Zustandsvariablen • parallele Auswertung von Teilausdrücken möglichz.B. BSMLlib: BSP-Bibliothek zur Auswertung von CAML-Programmen (u.a. von Frédéric Loulergue) • Wissenschaftliche Berechnungenz.B. in der Luft- und Raumfahrt: Simulation von Luftströmen
4. Fazit • PRAM-Modell:- einfaches Programmiermodell- Schwächen bei Laufzeitanalyse von parallelen Algorithmen- Performanceeinbußen durch hohen Kommunikations- und Synchronisationsbedarf • BSP-Modell:- einfaches Programmiermodell- geringer Kommunikations- und Synchronisationsbedarf- hohe Skalierbarkeit, Portabilität und Vorhersagbarkeit