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 Report

Transcript 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