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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Imperative Programmierung
Fast Fourier Transformation
Matrixmultiplikation
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2012.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
der Universität Oldenburg
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Lösung linearer Gleichungssysteme
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
OpenMP Präsentation im Rahmen des Seminars
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Astronomisch, Physikalische und Mathematische Geodäsie II
AC Analyse.
Schieferdeckarten Dach.ppt
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Duo- und Quad Prozessor-Architektur
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Programmierung paralleler Algorithmen mit MPI
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Matrix Multiplication
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PROCAM Score Alter (Jahre)
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Großer Altersunterschied bei Paaren fällt nicht auf!
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Programmieren in C Grundlagen C 2
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
1 Mathematical Programming Nichtlineare Programmierung.
JOMP
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Das IT - Informationssystem
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
8. HPF – High Performance FORTRAN datenparallele Erweiterung von FORTRAN 90 SPMD-Ansatz daten-parallele Array-Operationen verteilte Datenstrukturen Schleifenparallelität.
 Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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,:)

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

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

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

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

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

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

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

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

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