1 / 46

High Performance Fortran

High Performance Fortran. Seminar Parallele Programmierung von Sebastian König und Stefan Seidel. !HPF$ - Inhalt. Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit. Einführung Modell Datenverteilung 2-Schichten-Mapping

nate
Download Presentation

High Performance Fortran

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. !HPF$ - Inhalt Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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)

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

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

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

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

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

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

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

  10. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - PROCESSORS Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 KonzeptionelleProzessoranordnung 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)

  11. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - PROCESSORS Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit 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) KonzeptionelleProzessoranordnung 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. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - ALIGN Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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(:) KonzeptionelleProzessoranordnung 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. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - ALIGN Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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) KonzeptionelleProzessoranordnung 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. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - REALIGN Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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) KonzeptionelleProzessoranordnung 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)

  15. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - TEMPLATE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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) KonzeptionelleProzessoranordnung 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. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 KonzeptionelleProzessoranordnung 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)

  17. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Beispiel: REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) !HPF$ DISTRIBUTE Kartenspiel(CYCLIC)ONTO A KonzeptionelleProzessoranordnung 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)

  18. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Beispiel (fortgesetzt): REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) !HPF$ DISTRIBUTE Kartenspiel(CYCLIC(5))ONTO A KonzeptionelleProzessoranordnung 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)

  19. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - DISTRIBUTE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Beispiel (fortgesetzt): REAL Kartenspiel(52) !HPF$ PROCESSORS A(4) !HPF$ DISTRIBUTE Kartenspiel(BLOCK) KonzeptionelleProzessoranordnung 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. !HPF$ - Datenverteilung Direktiven zur Datenverteilung - REDISTRIBUTE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 KonzeptionelleProzessoranordnung 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. !HPF$ - Datenverteilung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 KonzeptionelleProzessoranordnung 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)

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

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

  24. !HPF$ - Spracherweiterungen Anweisungen zur parallelen Ausführung - FORALL Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  25. !HPF$ - Spracherweiterungen Anweisungen zur parallelen Ausführung - INDEPENDENT Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 END DO Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  26. !HPF$ - Spracherweiterungen Anweisungen zur parallelen Ausführung - PURE Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit 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 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  27. !HPF$ - Spracherweiterungen Intrinsics Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Funktionen zur Systemabfrage • NUMBER_OF_PROCESSORS()Liefert Anzahl physikalischer Prozessoren • PROCESSOR_SHAPE()Physikalische Anordnung der Prozessoren • Funktionen zur Berechnung • ILENbenötigte Bitzahl zur Speicherung eines Integer • MAXLOCIndices des größten Wertes im angegebenen Bereich eines Arrays • MINLOCIndices des kleinsten Wertes im angegebenen Bereich eines Arrays Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

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

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

  30. !HPF$ - Datenverteilung und Performance Ein einfaches Modell Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • Einfaches Modell zur Bestimmung der Gesamtperformance: 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)

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

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

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

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

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

  36. !HPF$ - Fallbeispiel: Gauss-Elimination 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 • Standardbenchmark für parallele Sprachen • Gegeben: lineares GleichungssystemAx = b, wobeiA eine NxN Matrix,x der gesuchte Lösungsvektor undb 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 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  37. !HPF$ - Fallbeispiel: Gauss-Elimination Elimination 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,:) 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 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  38. !HPF$ - Fallbeispiel: Gauss-Elimination Rücksubstitution Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit 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 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 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  39. !HPF$ - Fallbeispiel: Gauss-Elimination Kommunikation und Rechenlastverteilung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit Pro Iteration: • Ermitteln der Pivotzeile • Index broadcasten • 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)

  40. !HPF$ - Fallbeispiel: Gauss-Elimination Ergebnis und Datenverteilung Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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 Seminar Parallele Programmierung (SS2003) – High Performance Fortran (Sebastian König, Stefan Seidel)

  41. !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)

  42. !HPF$ - HPF im Vergleich Einführung Modell Datenverteilung Spracherweiterungen Performance Fallbeispiel HPF im Vergleich Fazit • 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,8andere 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)

  43. !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)

  44. !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)

  45. !HPF$ - HPF 2 Ausführungssteuerung Zugabe • ON HOMEDO 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$ INDEPENDENTDO 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)

  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)

More Related