Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Reino Bodner Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.