Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel.

Ähnliche Präsentationen


Präsentation zum Thema: "High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel."—  Präsentation transkript:

1 High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel

2 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)2 / 46 !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 Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

3 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)3 / 46 !HPF$ - Einführung Erweiterung von Fortran 90 –Direktiven –Spracherweiterungen –Neue Funktionen Datenparallele Sprache Einsatz vor allem im wissenschaftlich-, technischen Bereich Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

4 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)4 / 46 !HPF$ - Einführung The IBM Mathematical FORmula TRANslation System, FORTRAN Viele Dialekte viele Standards 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 Historie Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

5 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)5 / 46 !HPF$ - Modell Datenparallelität –Mehrere Prozessoren führen dasselbe Programm aus –Die einzelnen Prozessoren arbeiten nur auf einem Teil der Daten Welcher Prozessor auf welchen Daten arbeitet wird mit sog. Direktiven festgelegt Datenparallelität Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

6 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)6 / 46 !HPF$ - Modell SPMD (single program multiple data) –Das Programm folgt einem Kontrollfluss –Globaler Adressraum –Kommunikation tritt auf, greift ein Prozessor auf Daten zu, die nicht in seinem lokalen Speicher liegen Organisationsprinzip Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

7 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)7 / 46 !HPF$ - Modell Der HPF-Compiler erzeugt zielarchitekturspezifischen, ausführbaren Code Codegenerierung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

8 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)8 / 46 !HPF$ - Modell Programmaufbau Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

9 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)9 / 46 !HPF$ - Modell Verteilung der Daten: 2-Schichten-Mapping 2-Schichten-Mapping Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

10 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)10 / 46 !HPF$ - Datenverteilung Definition einer abstrakten Anordnung von Prozessoren Nicht notwendigerweise Bezug zu den tatsächlich vorhandenen physikalischen Prozessoren Spezifiziert werden –Name –Rang (Anzahl der Dimensionen) –Größe der Dimensionen Alle Prozessoranordnungen in einem Programm haben die gleiche Anzahl von abstrakten Prozessoren Direktiven zur Datenverteilung - PROCESSORS Konzeptionelle Prozessoranordnung Abgleich der Verteilung von Datenobjekten Verteilung der Daten auf Prozessoren Abbildung abstrakter auf Physikalische Prozessoren Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

11 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)11 / 46 !HPF$ - Datenverteilung Allgemein: !HPF$ PROCESSORS anordnungName(anordnungDefinition) Beispiele: !HPF PROCESSORS Anordnung1(4) !HPF PROCESSORS Anordnung2(2,2) !HPF PROCESSORS Anordnung3(2,1,2) !HPF PROCESSORS Anordnung4(NUMBER_OF_PROCESSORS()) !HPF$ PROCESSORS Anordnung5(8,NUMBER_OF_PROCESSORS()/8) Direktiven zur Datenverteilung - PROCESSORS 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

12 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)12 / 46 !HPF$ - Datenverteilung Ausrichtung eines Objektes auf ein anderes Objekt Die Datenobjekte werden im Speicher desselben Prozessors abgelegt 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(:) Direktiven zur Datenverteilung - ALIGN 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

13 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)13 / 46 !HPF$ - Datenverteilung 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 REAL X(16,16), Y(14,14) !HPF$ ALIGN Y(I,J) WITH X(I+1,J+1) Direktiven zur Datenverteilung - ALIGN 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

14 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)14 / 46 !HPF$ - Datenverteilung Felder, die als DYNAMIC deklariert werden, können mit REALIGN neu verteilt werden 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) Direktiven zur Datenverteilung - REALIGN 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

15 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)15 / 46 !HPF$ - Datenverteilung Definition von Vorlagen zur Datenverteilung Es muss kein einzelnes Feld deklariert werden, um den gesamten benötigten Bereich aufzuspannen 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 ) !HPF$ ALIGN SE(I,J) WITH EARTH(I+1,J+1) Direktiven zur Datenverteilung - TEMPLATE 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

16 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)16 / 46 Verteilung der Daten auf eine Prozessoranordnung BLOCK-Distribution –Aufteilung des Feldes in gleichgroße Blöcke –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 CYCLIC- Distribution können mit einem Parameter für die Blockgröße aufgerufen werden !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE 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

17 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)17 / 46 !HPF$ - Datenverteilung Beispiel: REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) !HPF$ DISTRIBUTE Kartenspiel(CYCLIC)ONTO A Direktiven zur Datenverteilung - DISTRIBUTE 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

18 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)18 / 46 !HPF$ - Datenverteilung Beispiel (fortgesetzt): REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) !HPF$ DISTRIBUTE Kartenspiel(CYCLIC(5))ONTO A Direktiven zur Datenverteilung - DISTRIBUTE 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

19 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)19 / 46 !HPF$ - Datenverteilung Beispiel (fortgesetzt): REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) !HPF$ DISTRIBUTE Kartenspiel(BLOCK) Direktiven zur Datenverteilung - DISTRIBUTE 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

20 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)20 / 46 !HPF$ - Datenverteilung 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 Direktiven zur Datenverteilung - REDISTRIBUTE 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

21 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)21 / 46 !HPF$ - Datenverteilung Nicht notwendigerweise direkter Zusammenhang zwischen abstrakter Anordnung und tatsächlich physikalisch vorhandenen Prozessoren Elemente die auf einem abstrakten Prozessor liegen, liegen auch auf einem physikalischen Prozessor Abbildung compilerabhängig 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

22 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)22 / 46 !HPF$ - Spracherweiterungen Keine automatische Erzeugung von Parallelität Alte Anweisungen (Fortran 90) weiterhin sequentiell Explizite Programmierung paralleler Ausführung Owner-computes-rule je nach Compiler zur Optimierung umgangen Korrektheit durch Programmierer zu gewährleisten Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

23 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)23 / 46 !HPF$ - Spracherweiterungen Startwert : Endwert : Schrittgröße Standardnotation zur Definition von Indexbereichen Funktionen erlaubt z.B. UBound() Triplet-Notation Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

24 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)24 / 46 !HPF$ - Spracherweiterungen Anweisung zur parallelen Feldzuweisung Indexbereich pro Dimension mit Triplet-Definition 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 Anweisungen zur parallelen Ausführung - FORALL Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

25 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)25 / 46 !HPF$ - Spracherweiterungen Zusicherung von Unabhängigkeit der in einer Schleife genutzten Variablen Erlaubt Parallelisierung von DO-Schleifen 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 Anweisungen zur parallelen Ausführung - INDEPENDENT Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

26 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)26 / 46 !HPF$ - Spracherweiterungen 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 Verwendung in FORALL Anweisungen Nutzung für komplexere Berechnungen, bedingten Anweisung, Iterationen, lokale Variablen Anweisungen zur parallelen Ausführung - PURE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

27 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)27 / 46 !HPF$ - Spracherweiterungen Funktionen zur Systemabfrage –NUMBER_OF_PROCESSORS() Liefert Anzahl physikalischer Prozessoren –PROCESSOR_SHAPE() Physikalische Anordnung der Prozessoren 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 Intrinsics Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

28 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)28 / 46 !HPF$ - Spracherweiterungen Abfrage der Datenverteilung Bitinformationen über Integer-Daten Datenverdichtung Präfix- und Suffix-Berechnung Bitbasierte Operation mit Zuweisung Sortierung Library Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

29 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)29 / 46 !HPF$ - Spracherweiterungen Einbindung externer Programme Ausführung auf jedem Prozessor isoliert mit allen dort zur Verfügung stehenden Daten Maschinennahe Berechnungen Explizites Message Passing HPF_LOCAL INTERFACE EXTRINSIC (C) SUBROUTINE prozedure1(par1, par2) REAL :: par1 INTEGER :: par2 END SUBROUTINE END INTERFACE EXTRINSICS Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

30 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)30 / 46 !HPF$ - Datenverteilung und Performance Einfaches Modell zur Bestimmung der Gesamtperformance: Ein einfaches Modell T total = T par / T active + T serial + T comm T total = gesamte Ausführungszeit T par = Anteil der Arbeit, die parallel ausgeführt werden kann T active = Anzahl aktiver, paralleler Prozessoren T serial = Anteil der Arbeit, der sequenziell ausgeführt werden muss T comm = Zeit, die durch Kommunikation in Anspruch genommen wird Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

31 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)31 / 46 !HPF$ - Datenverteilung und Performance Ein einfaches Beispielprogramm: Ein Beispielprogramm REAL, DIMENSION(8,8) :: A, B FORALL (J=2:7, K=2:7) A (J,K) = (B(J,K)+B(J-1,K)) END FORALL Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

32 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)32 / 46 !HPF$ - Datenverteilung und Performance Ansatz 1: Aufteilung von B in Spalten gleicher Größe Ein Beispielprogramm PROCESSORS, DIMENSION(4) :: P DISTRIBUTE B(BLOCK,*) ONTO P Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

33 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)33 / 46 !HPF$ - Datenverteilung und Performance 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 –Kommunikationsaufwand: 21 Elementaustausche Ein Beispielprogramm Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

34 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)34 / 46 !HPF$ - Datenverteilung und Performance Ansatz 2: Aufteilung von B in vier gleichgroße Blöcke Ein Beispielprogramm PROCESSORS, DIMENSION(2,2) :: Q DISTRIBUTE B(BLOCK,BLOCK) ONTO Q Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

35 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)35 / 46 !HPF$ - Datenverteilung und Performance 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 –Kommunikationsaufwand: 7 Elementaustausche Ein Beispielprogramm Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

36 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)36 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Standardbenchmark für parallele Sprachen Gegeben: lineares Gleichungssystem Ax = b, wobei A eine NxN Matrix, x der gesuchte Lösungsvektor und b ein gegebener Zielvektor ist Speicherung als A Nx(N+1) Matrix, wobei in Spalte N+1 b gespeichert wird Lösungsverfahren: –Elimination: A in Dreiecksform bringen –Rücksubstitution zur Ermittlung der Lösung Ausgangsproblem Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Subroutine gauss(n, A, x) real A(n,n+1) integer n real X(n), Fac(n), Row(n+1) integer Indx(n), Itmp(1) integer i, j, k, max_indx real maxval Indx = 0

37 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)37 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Elimination Für i = 1 bis n-1 suche Pivotzeile (größter Wert in Spalte i) Index der Pivotzeile broadcasten Faktoren berechnen Pivotzeile broadcasten Restzeilen neu berechnen durch Addition des entsprechenden Vielfachen Matrix auf Dreieckform bringen Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit DO i = 1,n Itmp = MAXLOC(ABS(A(:,i)), MASK=Indx.EQ.0) max_indx = Itmp(1) Fac = A(:,i)/A(max_indx,i) Row = A(max_indx) FORALL (j=1:n, k=i:n+1, Indx(j).EQ.0) A(j,k) = A(j,k) + Fac(j) * Row(k) END DO FORALL (j=1:n) A(Indx(j),:) = A(j,:)

38 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)38 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Für Zeilen (i) rückwärts Lösung für X(i) ermitteln A(i, n+1) / A(i,i) Werte in Spalte n+1 korrigieren Subtraktion des entsprechenden Vielfachen Rücksubstitution Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit DO j = n, 1, -1 X(j) = A(j,n+1) / A(j,j) A(1:j-1,n+1) = A(1:j-1, n+1) - A(1:j-1,j) * X(j) END DO

39 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)39 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Pro Iteration: Ermitteln der Pivotzeile Index broadcasten Faktoren zur Multiplikation berechnen Faktoren broadcasten Paralleles Ausrechnen der noch nicht fertigen Zeilen Kommunikation und Rechenlastverteilung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

40 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)40 / 46 !HPF$ - Fallbeispiel: Gauss-Elimination Bei Array-basierten Berechnungen häufig standardmäßig (BLOCK,*)-Verteilung würde zu immer weniger genutzten Prozessoren führen (bei fortgeschrittenen Iterationen) keinerlei Vorteil für Datenlokalität aufgrund der vorliegenden Kommunikation Empfehlenswert (CYCLIC, *) deutlich bessere (gleichmäßigere) Auslastung der Prozessoren keine Einbußen durch Kommunikation Ergebnis und Datenverteilung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

41 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)41 / 46 !HPF$ - HPF im Vergleich 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 Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

42 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)42 / 46 !HPF$ - HPF im Vergleich Kompakte und einfache Parallelisierung HPF Code häufig kürzer als Fortran Code Implizite Kommunikation und Synchronisation 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 Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

43 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)43 / 46 !HPF$ - Fazit Fragen ? Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit

44 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)44 / 46 !HPF$ - HPF 2 Neue Verteilungsmuster für DISTRIBUTE –BLOCK_GEN –INDIRECT –SHADOW Datenverteilung –PROCESSORS – Subsets Zugabe Datenverteilung

45 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)45 / 46 !HPF$ - HPF 2 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 Ausführungssteuerung Zugabe

46 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)46 / 46 !HPF$ - HPF 2 Erweiterung für INDEPENDENT –REDUCTION Intrinsics –ACTIVE_NUM_PROCS –ACTIVE_PROCS_SHAPE asynchronous I/O weitere Zugabe


Herunterladen ppt "High Performance Fortran Seminar Parallele Programmierung von Sebastian König und Stefan Seidel."

Ähnliche Präsentationen


Google-Anzeigen