High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel !HPF$ - Inhalt • Einführung • Modell • Datenverteilung – 2-Schichten-Mapping – Direktiven zur Datenverteilung • Spracherweiterungen – Anweisungen.
Download ReportTranscript High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel !HPF$ - Inhalt • Einführung • Modell • Datenverteilung – 2-Schichten-Mapping – Direktiven zur Datenverteilung • Spracherweiterungen – Anweisungen.
High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel !HPF$ - Inhalt • Einführung • Modell • Datenverteilung – 2-Schichten-Mapping – Direktiven zur Datenverteilung • Spracherweiterungen – Anweisungen zur parallelen Ausführung – Intrinsics / Library – Extrinsics • Datenverteilung und Performance • Fallbeispiel: Gauss-Elimination • HPF im Vergleich • Fazit Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit 2 / 46 !HPF$ - Einführung • Erweiterung von Fortran 90 – Direktiven – Spracherweiterungen Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit – Neue Funktionen • Datenparallele Sprache • Einsatz vor allem im wissenschaftlich-, technischen Bereich Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 3 / 46 !HPF$ - Einführung Historie • The IBM Mathematical FORmula TRANslation System, FORTRAN • Viele Dialekte viele Standards Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Fortran 66, 77, 90, 95, 2000 • High Performance Fortran Forum (HPFF) • HPF 1.0 im Mai 1993 • HPF 1.1 im November 1994 • HPF 2.0 Ende 1996 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 4 / 46 !HPF$ - Modell Datenparallelität • Datenparallelität – Mehrere Prozessoren führen dasselbe Programm aus – Die einzelnen Prozessoren arbeiten nur auf einem Teil der Daten Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Welcher Prozessor auf welchen Daten arbeitet wird mit sog. Direktiven festgelegt Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 5 / 46 !HPF$ - Modell Organisationsprinzip • SPMD (single program multiple data) – Das Programm folgt einem Kontrollfluss – Globaler Adressraum Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit – Kommunikation tritt auf, greift ein Prozessor auf Daten zu, die nicht in seinem lokalen Speicher liegen Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 6 / 46 !HPF$ - Modell Codegenerierung • Der HPF-Compiler erzeugt zielarchitekturspezifischen, ausführbaren Code Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Fortran 90 HPF Spracherweiterungen HPF RISC- Code Vektorisierter Vektorcode Paralleler SIMD Code MIMD- Code (Naachrichtenaus tausch) Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 7 / 46 !HPF$ - Modell Programmaufbau Konzeptionelle Prozessoranordnung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Verteilung der Daten auf Prozessoren Ausführung von (parallelen) Operationen auf den Daten Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 8 / 46 !HPF$ - Modell 2-Schichten-Mapping • Verteilung der Daten: 2-Schichten-Mapping Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten 2-Schichten-Mapping Verteilung der Daten auf Prozessoren Abbildung abstrakter auf phyisikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 9 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - PROCESSORS • Definition einer abstrakten Anordnung von Prozessoren • Nicht notwendigerweise Bezug zu den tatsächlich vorhandenen physikalischen Prozessoren Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Spezifiziert werden – Name – Rang (Anzahl der Dimensionen) Konzeptionelle Prozessoranordnung – Größe der Dimensionen • Alle Prozessoranordnungen in einem Programm haben die gleiche Anzahl von abstrakten Prozessoren Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 10 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - PROCESSORS Allgemein: !HPF$ PROCESSORS anordnungName(anordnungDefinition) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Beispiele: !HPF PROCESSORS Anordnung1(4) !HPF PROCESSORS Anordnung2(2,2) !HPF PROCESSORS Anordnung3(2,1,2) !HPF PROCESSORS Anordnung4(NUMBER_OF_PROCESSORS()) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten !HPF$ PROCESSORS Anordnung5(8,NUMBER_OF_PROCESSORS()/8) Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 11 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - ALIGN • Ausrichtung eines Objektes auf ein anderes Objekt • Die Datenobjekte werden im Speicher desselben Prozessors abgelegt Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Dadurch effizienter Zugriff ohne zusätzlichen Kommunikationsaufwand möglich • Beipiel: REAL, DIMENSION(10) :: A,B,T !HPF$ ALIGN (:) WITH T(:) :: A,B • Anders ausgedrückt: !HPF ALIGN A(:) WITH T(:) !HPF ALIGN B(:) WITH T(:) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 12 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - ALIGN • Beispiel: • zwei Felder der Größe 16x16 und 14x14 • Die „inneren“ Elemente des 16x16-Feldes sollen mit den entsprechenden Elementen des 14x14-Feldes in Berechnungen verwendet werden Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit REAL X(16,16), Y(14,14) !HPF$ ALIGN Y(I,J) WITH X(I+1,J+1) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 13 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - REALIGN • Felder, die als DYNAMIC deklariert werden, können mit REALIGN neu verteilt werden Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit REAL X(16,16), Y(14,14) !HPF DYNAMIC X,Y !HPF$ ALIGN Y(I,J) WITH X(I+1,J+1) . . . !HPF$ REALIGN Y(I,J) WITH X(I+2,J+2) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 14 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - TEMPLATE • Definition von Vorlagen zur Datenverteilung • Es muss kein einzelnes Feld deklariert werden, um den gesamten benötigten Bereich aufzuspannen Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Beispiel: !HPF$ TEMPLATE, DISTRIBUTE(BLOCK, BLOCK) :: EARTH(N+1,N+1) REAL, DIMENSION(N,N) :: NW, NE, SW, SE !HPF$ ALIGN NW(I,J) WITH EARTH( I , J ) !HPF$ ALIGN NE(I,J) WITH EARTH( I ,J+1) !HPF$ ALIGN SW(I,J) WITH EARTH(I+1, J ) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten !HPF$ ALIGN SE(I,J) WITH EARTH(I+1,J+1) Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 15 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE • Verteilung der Daten auf eine Prozessoranordnung • BLOCK-Distribution – Aufteilung des Feldes in gleichgroße Blöcke Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit – Bei Verteilung von #A Elementen auf #P Prozessoren erhält jeder Prozessor maximal #A/#P Elemente • CYCLIC-Distribution – Arbeitet nach “Round Robin“-Prinzip – Bei Verteilung von #A Elementen auf #P Prozessoren erhält jeder Prozessor maximal #A/#P Elemente • Sowohl BLOCK-Distribution als auch CYCLICDistribution können mit einem Parameter für die Blockgröße aufgerufen werden Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 16 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE • Beispiel: REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit !HPF$ DISTRIBUTE Kartenspiel(CYCLIC)ONTO A P4 P2 P3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 P1 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren 17 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE • Beispiel (fortgesetzt): REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit !HPF$ DISTRIBUTE Kartenspiel(CYCLIC(5))ONTO A P1 P2 P3 P4 1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20 21 26 31 36 22 27 32 37 23 28 33 38 24 29 34 39 25 30 35 40 41 46 51 - 42 47 52 - 43 48 - - 44 49 - - 45 50 - - Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren 18 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE • Beispiel (fortgesetzt): REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit !HPF$ DISTRIBUTE Kartenspiel(BLOCK) P1 P2 P3 P4 1 14 27 40 2 15 28 41 3 16 29 41 4 17 30 43 5 18 31 44 6 19 32 45 7 20 33 46 8 21 34 47 9 22 35 48 10 23 36 49 11 24 37 50 12 25 38 51 13 26 39 52 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren 19 / 46 !HPF$ - Datenverteilung Direktiven zur Datenverteilung - REDISTRIBUTE • Felder, die als DYNAMIC deklariert werden, können mit REDISTRIBUTE neu verteilt werden • Felder, die auf das entsprechende Feld ausgerichtet sind, werden auch neu verteilt Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 20 / 46 !HPF$ - Datenverteilung • Nicht notwendigerweise direkter Zusammenhang zwischen abstrakter Anordnung und tatsächlich physikalisch vorhandenen Prozessoren Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Elemente die auf einem abstrakten Prozessor liegen, liegen auch auf einem physikalischen Prozessor • Abbildung compilerabhängig Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 21 / 46 !HPF$ - Spracherweiterungen Einführung • Keine automatische Erzeugung von Parallelität • Alte Anweisungen (Fortran 90) weiterhin sequentiell Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Explizite Programmierung paralleler Ausführung • Owner-computes-rule je nach Compiler zur Optimierung umgangen • Korrektheit durch Programmierer zu gewährleisten Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 22 / 46 !HPF$ - Spracherweiterungen Triplet-Notation Startwert : Endwert : Schrittgröße • Standardnotation zur Definition von Indexbereichen • Funktionen erlaubt z.B. UBound() Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit 23 / 46 !HPF$ - Spracherweiterungen Anweisungen zur parallelen Ausführung - FORALL • Anweisung zur parallelen Feldzuweisung • Indexbereich pro Dimension mit Triplet-Definition Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Beispiel: INTEGER, DIMENSION(4) :: A = (/-4,-1,2,4/) FORALL (i=1:4, A(i) .LT. 0) A(i) = -A(i) • Indexbereich: 1:4 • Maske A(i).LT.0 nur für A(i) kleiner („less than“) 0 Bei allen negativen Werten das Vorzeichen ändern • FORALL-Block – Nicht pro Index alle Anweisungen, sondern pro Anweisung alle Indices Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 24 / 46 !HPF$ - Spracherweiterungen Anweisungen zur parallelen Ausführung - INDEPENDENT • Zusicherung von Unabhängigkeit der in einer Schleife genutzten Variablen • Erlaubt Parallelisierung von DO-Schleifen Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • NEW-Variablen werden für jede Iteration neu initialisiert (lokal für Schleife) !HPF$ INDEPENDENT, NEW (j) DO i = 1, n !HPF$ INDEPENDENT DO j = 1, m x = A(j) y = B(j) C(i,j) = x+y END DO END DO Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 25 / 46 !HPF$ - Spracherweiterungen Anweisungen zur parallelen Ausführung - PURE PURE [typ] FUNCTION name ([parameter]) • Zusicherung isolierter Ausführung einer Funktion gegenüber dem Compiler keine Veränderung globaler Daten, nur Rückgabe eines Wertes Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Verwendung in FORALL Anweisungen • Nutzung für komplexere Berechnungen, bedingten Anweisung, Iterationen, lokale Variablen Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 26 / 46 !HPF$ - Spracherweiterungen Intrinsics • Funktionen zur Systemabfrage – NUMBER_OF_PROCESSORS() Liefert Anzahl physikalischer Prozessoren – PROCESSOR_SHAPE() Physikalische Anordnung der Prozessoren Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Funktionen zur Berechnung – ILEN benötigte Bitzahl zur Speicherung eines Integer – MAXLOC Indices des größten Wertes im angegebenen Bereich eines Arrays – MINLOC Indices des kleinsten Wertes im angegebenen Bereich eines Arrays Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 27 / 46 !HPF$ - Spracherweiterungen Library • Abfrage der Datenverteilung • Bitinformationen über Integer-Daten Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Datenverdichtung • Präfix- und Suffix-Berechnung • Bitbasierte Operation mit Zuweisung • Sortierung Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 28 / 46 !HPF$ - Spracherweiterungen EXTRINSICS • Einbindung externer Programme • Ausführung auf jedem Prozessor isoliert mit allen dort zur Verfügung stehenden Daten Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Maschinennahe Berechnungen • Explizites Message Passing • HPF_LOCAL INTERFACE EXTRINSIC (C) SUBROUTINE prozedure1(par1, par2) REAL :: par1 INTEGER :: par2 END SUBROUTINE END INTERFACE Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 29 / 46 !HPF$ - Datenverteilung und Performance Ein einfaches Modell • Einfaches Modell zur Bestimmung der Gesamtperformance: Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Ttotal= Tpar / Tactive + Tserial + Tcomm Ttotal = gesamte Ausführungszeit Tpar = Anteil der Arbeit, die parallel ausgeführt werden kann Tactive = Anzahl aktiver, paralleler Prozessoren Tserial = Anteil der Arbeit, der sequenziell ausgeführt werden muss Tcomm = Zeit, die durch Kommunikation in Anspruch genommen wird Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 30 / 46 !HPF$ - Datenverteilung und Performance Ein Beispielprogramm • Ein einfaches Beispielprogramm: REAL, DIMENSION(8,8) :: A, B Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit FORALL (J=2:7, K=2:7) A (J,K) = (B(J,K)+B(J-1,K)) END FORALL Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 31 / 46 !HPF$ - Datenverteilung und Performance Ein Beispielprogramm • Ansatz 1: Aufteilung von B in Spalten gleicher Größe PROCESSORS, DIMENSION(4) :: P Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit DISTRIBUTE B(BLOCK,*) ONTO P P1 P2 P3 P4 (1,1) (2,1) (3,1) (4,1) (5,1) (6,1) (7,1) (8,1) (1,2) (2,2) (3,2) (4,2) (5,2) (6,2) (7,2) (8,2) (1,3) (2,3) (3,3) (4,3) (5,3) (6,3) (7,3) (8,3) (1,4) (2,4) (3,4) (4,4) (5,4) (6,4) (7,4) (8,4) (1,5) (2,5) (3,5) (4,5) (5,5) (6,5) (7,5) (8,5) (1,6) (2,6) (3,6) (4,6) (5,6) (6,6) (7,6) (8,6) (1,7) (2,7) (3,7) (4,7) (5,7) (6,7) (7,7) (8,7) (1,8) (2,8) (3,8) (4,8) (5,8) (6,8) (7,8) (8,8) Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 32 / 46 !HPF$ - Datenverteilung und Performance Ein Beispielprogramm • Ansatz 1: Aufteilung von B in Spalten gleicher Größe – P1 und P4 führen je 7 Berechnungen aus – P2 und P3 führen je 14 Berechnungen aus Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit – Kommunikationsaufwand: 21 Elementaustausche Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 33 / 46 !HPF$ - Datenverteilung und Performance Ein Beispielprogramm • Ansatz 2: Aufteilung von B in vier gleichgroße Blöcke PROCESSORS, DIMENSION(2,2) :: Q Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit DISTRIBUTE B(BLOCK,BLOCK) ONTO Q (1,1) (2,1) (3,1) (4,1) (5,1) (6,1) (7,1) (8,1) (1,2) (2,2) (3,2) (4,2) (5,2) (6,2) (7,2) (8,2) (1,3) (2,3) (3,3) (4,3) (5,3) (6,3) (7,3) (8,3) (1,4) (2,4) (3,4) (4,4) (5,4) (6,4) (7,4) (8,4) P1 P2 (1,5) (2,5) (3,5) (4,5) (5,5) (6,5) (7,5) (8,5) (1,6) (2,6) (3,6) (4,6) (5,6) (6,6) (7,6) (8,6) (1,7) (2,7) (3,7) (4,7) (5,7) (6,7) (7,7) (8,7) (1,8) (2,8) (3,8) (4,8) (5,8) (6,8) (7,8) (8,8) P3 P4 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 34 / 46 !HPF$ - Datenverteilung und Performance Ein Beispielprogramm • Ansatz 2: Aufteilung von B in vier gleichgroße Blöcke – P1 und P2 führen je 12 Berechnungen aus – P3 und P4 führen je 9 Berechnungen aus Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit – Kommunikationsaufwand: 7 Elementaustausche Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 35 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Ausgangsproblem gauss(n, A, Sprachen x) • Subroutine Standardbenchmark für parallele real A(n,n+1) • Gegeben: lineares Gleichungssystem Ax = b, wobei integer A eine NxN n Matrix, real X(n), Lösungsvektor Fac(n), Row(n+1) x der gesuchte und b ein gegebener Zielvektor ist integer Indx(n), Itmp(1) Speicherung als A Nx(N+1) Matrix, integer i, N+1 j, k, max_indx wobei in Spalte b gespeichert wird Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit real maxval Indx = 0 • Lösungsverfahren: – Elimination: A in Dreiecksform bringen – Rücksubstitution zur Ermittlung der Lösung Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 36 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Elimination DO 1,nn-1 Für i i = =1 bis Itmp MAXLOC(ABS(A(:,i)), MASK=Indx.EQ.0) suche =Pivotzeile (größter Wert in Spalte i) max_indx = Itmp(1) Index der Pivotzeile broadcasten Fac = A(:,i)/A(max_indx,i) Faktoren berechnen Row = A(max_indx) Pivotzeile broadcasten FORALL (j=1:n, k=i:n+1, Restzeilen neu berechnen durchIndx(j).EQ.0) Addition des A(j,k) = A(j,k) + Fac(j) * Row(k) entsprechenden Vielfachen END DO Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit FORALL A(Indx(j),:) = A(j,:) Matrix auf(j=1:n) Dreieckform bringen Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 37 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Rücksubstitution Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit DO Zeilen j = n, 1, -1 Für (i) rückwärts X(j) Lösung= für X(i) ermitteln / A(j,j) A(j,n+1) A(i, n+1) / A(i,i) A(1:j-1,n+1) = korrigieren Werte in Spalte n+1 - A(1:j-1,j) * X(j) A(1:j-1, Subtraktion n+1) des entsprechenden Vielfachen END DO Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 38 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Kommunikation und Rechenlastverteilung Pro Iteration: • Ermitteln der Pivotzeile • Index broadcasten Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Faktoren zur Multiplikation berechnen • Faktoren broadcasten • Paralleles Ausrechnen der noch nicht fertigen Zeilen Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 39 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Ergebnis und Datenverteilung • Bei Array-basierten Berechnungen häufig standardmäßig (BLOCK,*)-Verteilung würde zu immer weniger genutzten Prozessoren führen (bei fortgeschrittenen Iterationen) Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit keinerlei Vorteil für Datenlokalität aufgrund der vorliegenden Kommunikation • Empfehlenswert (CYCLIC, *) deutlich bessere (gleichmäßigere) Auslastung der Prozessoren keine Einbußen durch Kommunikation Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 40 / 46 !HPF$ - HPF im Vergleich Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Vergleich auf IBM SP2 mit 8 Knoten – 1997 • Public-Domain-Implementationen: MPI-ch und PVM • HPF-Compiler noch nicht ausgereift - Vergleich mit PD-Compilern lässt zukünftige Besserung vermuten Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 41 / 46 !HPF$ - HPF im Vergleich • Kompakte und einfache Parallelisierung HPF Code häufig kürzer als Fortran Code • Implizite Kommunikation und Synchronisation Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Komplexität gemessen an NCSS: 0,4 – 1,8 andere Sprachen 1,2 – 16 (MPI, PVM) Schnelle und einfache Implementierung, aber schlechtere Performance NCSS – Non-Commented Source Code Statemens Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 42 / 46 !HPF$ - Fazit Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Fragen ? Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 43 / 46 !HPF$ - HPF 2 Datenverteilung Zugabe • Neue Verteilungsmuster für DISTRIBUTE – BLOCK_GEN – INDIRECT – SHADOW • Datenverteilung – PROCESSORS – Subsets Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 44 / 46 !HPF$ - HPF 2 Ausführungssteuerung Zugabe • ON HOME DO i = 1, n !HPF$ ON HOME( ix(i) ) x(i) = y(ix(i)) - y(iy(i)) END DO • RESIDENT !HPF$ ALIGN (i) WITH x(i) :: ix, y, iy !HPF$ DISTRIBUTE x(BLOCK) !HPF$ INDEPENDENT DO i = 1, n !HPF$ ON HOME( ix(i) ), RESIDENT(y(iy(i))) x(i) = y(ix(i)) - y(iy(i)) END DO • TASK_REGION !HPF$ TASK_REGION !HPF$ ON HOME(p(1:8)) CALL procedure1(x,y) !HPF$ ON HOME(p(9:16)) CALL procedure2(z) !HPF$ END TASK_REGION Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 45 / 46 !HPF$ - HPF 2 weitere Zugabe • Erweiterung für INDEPENDENT – REDUCTION • Intrinsics – ACTIVE_NUM_PROCS – ACTIVE_PROCS_SHAPE • asynchronous I/O Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel) 46 / 46