Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer

Ähnliche Präsentationen


Präsentation zum Thema: "Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer"—  Präsentation transkript:

1 Sabine Rathmayer, 16 August August WWR-Praktikum Parallele Programmierung Sabine Rathmayer

2 Sabine Rathmayer, 16. April Gruppeneinteilung Beispiele für par. Anwendungen, theor. Grundlagen, Par. Pgmstrukt., Datenabhängigkeiten Neslihan Kalay, Sebastian Pohle, Oezlem Maras, Mariam Saadat Modellhafte Ansätze, Einf. in par. Programmierparadigmen Matthias Braun, Andreas Fedrizzi, Michael Marolachakis, Peter Bartmann Einführung in MPI Violeta Monova, Ioana Kalaydjieva, Mathias Busch, Benjamin Stetter Einführung in OpenMP, Par. E/A, Performanceanalyse, Optimierung ???, Tao Zhuang, Daniel Reiss, Steffi Lämmle Praktikum zu OpenMP/ MPI Thomas Kloppe, Steffen Bergmann, Andreas Klinger, Sebastian Hans

3 Sabine Rathmayer, 16. April Kurzfristige Änderungen  Termin Projektmanagement  statt  Betreuung Gruppen 1, 2 und 5

4 Sabine Rathmayer, 16. April GRUPPE 1

5 Sabine Rathmayer, 16. April Einführung  Ein Parallelrechner besteht aus einer Menge von Verarbeitungselementen, die in einer koordinierten Weise teilweise zeitgleich zusammenarbeiten, um eine Aufgabe zu lösen.  Die Verarbeitungselemente können sein:  spezialisierte Einheiten, wie z.B. die Pipelinestufen einer Vektor- Pipeline oder die Vektor-Pipelines der Vektoreinheit eines Vektorrechners,  gleichartige Rechenwerke, wie z.B. die Verarbeitungselemente eines Feldrechners,  Prozessorknoten eines Multiprozessors (die Parallelrechner in einem engeren Sprachgebrauch),  vollständige Rechner, wie z.B. Workstations oder Personalcomputer eines Workstation- oder PC-Clusters, die per Software zeitweilig zu einem virtuellen Parallelrechner zusammengeschlossen werden,  selbst wieder ganze Parallelrechner oder Workstation-Cluster, welche über Fernverbindungen gekoppelt sind und als Metacomputer oder Hypercomputer betrieben werden.

6 Sabine Rathmayer, 16. April Konfigurationen Prozessor Verbindungsnetz gemeinsamer Speicher Globaler Speicher Physikalisch verteilter Speicher Verteilter Adreßraum Gemeinsamer Adreßraum Leer Prozessor Verbindungsnetz lokaler Speicher lokaler Speicher SMP Symmetrischer Multiprozessor DSM Distributed-shared-memory-Multiprozessor Prozessor Verbindungsnetz lokaler Speicher lokaler Speicher sendreceive Nachrichtengekoppelter (Shared-nothing-) Multiprozessor

7 Sabine Rathmayer, 16. April Anwendungen  Simulationen  Strömungssimulationen  Wettervorhersage  Klimaforschung  Erdbebenvorhersage  Hochspannungstechnik  Datenbanken  Webserver

8 Sabine Rathmayer, 16. April Kennzahlen  Die (Gesamt-)Ausführungszeit T (Execution Time) eines parallelen Programms ist die Zeit zwischen dem Starten der Programmausführung auf einem der Prozessoren bis zu dem Zeitpunkt, an dem der letzte Prozessor die Arbeit an dem Programm beendet hat.  Während der Programmausführung sind alle Prozessoren in einem der drei Zustände „rechnend“, „kommunizierend“ oder „untätig“.

9 Sabine Rathmayer, 16. April Ausführungszeit  Ausführungszeit T eines parallelen Programms auf einem dezidiert zugeordneten Parallelrechner setzt sich zusammen aus:  Berechnungszeit T comp (Computation Time) eines Algorithmus: die Zeit, die für Rechenoperationen verwendet wird,  Kommunikationszeit T comm (Communication Time) eines Algorithmus: die Zeit, die für Sende- und Empfangsoperationen verwendet wird,  Untätigkeitszeit T idle (Idle Time): die Zeit, die mit Warten (auf zu empfangende Nachrichten oder auf das Versenden) verbraucht wird.  Es gilt: T = T comp + T comm + T idle

10 Sabine Rathmayer, 16. April Beschleunigung und Effizienz Beschleunigung (Leistungssteigerung, Speed-up) Effizienz T(1) Ausführungszeit auf einem Einprozessorsystem in Schritten (oderTakten). T(n) Ausführungszeit auf einem Multiprozessorsystem mit n Prozessoren in Schritten (oder Takten).

11 Sabine Rathmayer, 16. April Amdahls Gesetz a Summe der Ausführungszeit des nur sequentiell ausführbaren Programmteils

12 Sabine Rathmayer, 16. April Parallele Programmstrukturen  Beobachtungen:  Programme sind in den wenigsten Fällen perfekt parallel  typisch ist vielmehr eine Folge von sequentiellen und parallelen Abschnitten  für die Verwaltung gibt es i.W. drei Modelle  SPMD  Fork-Join  Workerpool (Reusable thread pool) Modell

13 Sabine Rathmayer, 16. April Beispiel … … Paralleler Code Sequent. Code (Programmschluss) Sequent. Code (Initialisierung) Sequent. Code Paralleler Code

14 Sabine Rathmayer, 16. April Parallele Programmstrukturen - SPMD  Bei Programmstart werden die benötigte Anzahl paralleler Kontrollfäden erzeugt  gemeinsame Terminierung am Programmende  sequentielle Programmteile werden mehrfach (teilweise redundant) ausgeführt  parallele Programmteile werden von je einem Prozess ausgeführt … … Paralleler Code Sequent. Code (Programmschluss) Sequent. Code (Initialisierung) Sequent. Code Paralleler Code

15 Sabine Rathmayer, 16. April Parallele Programmstrukturen – Fork-Join-Modell  exakte Wiedergabe der Programmstruktur:  erster Prozess startet Programmausführung  er realisiert am Anfang jeder parallelen Ausführung passend viele fork- Operationen  Sohn-Prozesse arbeiten parallel weiter  Join-Operation am Ende (Synchronisation mit Vater- Prozess) … … Paralleler Code Sequent. Code (Programmschluss) Sequent. Code (Initialisierung) Sequent. Code Paralleler Code

16 Sabine Rathmayer, 16. April Parallele Programmstrukturen – Threadpool  Kombination von SPMD und Fork-Join  Vermeidung des hohen Aufwands für Erzeugung und Terminierung der Kontrollfäden  Unterbindung des Mehrfachablaufs der sequentiellen Teile  Kontrollfäden werden erzeugt, wenn sie erstmalig gebraucht werden, Terminierung am Ende  Idle-Zustand in sequentiellen Programmteilen Paralleler Code Sequent. Code (Programmschluss) Sequent. Code (Initialisierung) Sequent. Code Paralleler Code

17 Sabine Rathmayer, 16. April Datenabhängigkeiten  Abhängigkeiten, z.B. weil Task i Daten von Task j für weitere Berechnungen benötigt  Synchronisation notwendig  Berstein Bedingung (1966)  Datenabhängigkeitsgraph  Abhängigkeiten in Schleifen entdecken

18 Sabine Rathmayer, 16. April Literatur  Folien Prof. Gerndt: Parallel Programming  Parallelrechner: Architekturen, Systeme, Werkzeuge (Klaus Waldschmidt Hrsg.)  Parallel Computing: Paradigms and Applications (Albert Zomaya ed.)  Internet-Recherche  Bsp:

19 Sabine Rathmayer, 16. April GRUPPE 2

20 Sabine Rathmayer, 16. April Entwurf paralleler Programme: Modell von Foster  Partitionierung: Die Berechnungsschritte und die Daten, auf denen die Berechnungen ausgeführt werden, werden in kleine Aufgaben aufgeteilt. Hauptziel: möglichst viel Parallelität zu entfalten.  Kommunikation: Kommunikationsanforderungen festlegen, d.h. die zur Aufgabenkoordination notwendige Kommunikation wird festgestellt und es werden geeignete Kommunikationsstrukturen und Algorithmen definiert.  Aggregierung (agglomeration): Aufgaben und Kommunikationsstrukturen bezüglich der Leistungsanforderungen und bezüglich ihrer Implementierungskosten evaluieren. Falls notwendig, Aufgaben zu umfassenderen Aufgabenbereichen zusammenfassen, um die Leistung zu erhöhen oder Entwicklungskosten zu sparen.  Abbildung: Die Aufgaben den Prozessoren zuordnen. Ziele: maximale Prozessorauslastung und minimale Kommunikationskosten. Prozessorzuteilung kann statisch vom Compiler oder dynamisch zur Laufzeit durch Anwendung von Lastbalancierungealgorithmen geschehen.

21 Sabine Rathmayer, 16. April Parallele Programmierparadigmen  Datenparallele Programmierung: High Performance Fortran  Shared Memory Ansätze  Direktiven  Threads  Nachrichtenaustausch

22 Sabine Rathmayer, 16. April High Performance Fortran  Spracherweiterung zu Fortran90  Datenparallele Programmierung  Compiler Direktiven (Datenverteilung: DISTRIBUTE)  neue Sprachkonstrukte (parallele Anweisungen: FORALL)  owner computes rule  intrinsische Funktionen (Abfragefunktionen zum Test der Datenverteilung, SUM,…)

23 Sabine Rathmayer, 16. April Shared Memory Ansätze: Threads  Gemeinsame und private Variablen bestimmen  p-1 zusätzliche Threads generieren  Alle Threads durchlaufen bestimmte Unterprogramme  Unterprogramm muss so geschrieben werden, dass es nur auf einem Teildatensatz ausgeführt wird  (Felddurchläufe werden aus eigener id herausgerechnet)  Lokale Terminierungsinformation wird berechnet  Globale Terminierungsinformation wird aus lokaler errechnet  create, g_malloc, lock, unlock, barrier,wait-for-end, wait, set

24 Sabine Rathmayer, 16. April Shared Memory Ansätze: Direktiven  Programmiermodell auf höherem Level als Threads  Standard OpenMP  Omp parallel clause: block wird redundant berechnet  Omp parallel for clause: Schleife wird parallel berechnet, Synchronisation vor und nach der Schleife  Omp barrier  Omp atomic

25 Sabine Rathmayer, 16. April Nachrichtenaustausch Bei den nachrichtengekoppelten Systemen gibt es keine gemeinsamen Speicher- oder Adreßbereiche.  Die Kommunikation geschieht durch Austauschen von Nachrichten über ein Verbindungsnetz.  Alle Prozessoren besitzen nur lokale Speicher.  Prozessorknoten sind üblicherweise durch serielle Punkt-zu-Punkt- Verbindungen gekoppelt.  Typische Kommunikationsgeschwindigkeiten liegen bei 20–320 MBit (oder höher!!) pro Sekunde.  Die Skalierbarkeit ist bei nachrichtengekoppelten Multiprozessoren im Prinzip unbegrenzt.  Parallelität läßt sich in effizienter Weise auf Programm- oder Taskebene nutzen. Block- oder Anweisungsebenenparallelität sind nach heutiger Übertragungstechnologie nicht effizient nutzbar.

26 Sabine Rathmayer, 16. April  Auf allen MIMD-Rechnern und auf heterogenen Workstation-Clustern verwendbar.  Konzept des Nachrichtenaustauschs verlangt zur Zeit noch sehr viel „Handarbeit“.  Ein nachrichtengesteuertes Programm besteht aus P sequentiellen Programmen, wobei jedes zu einem eigenen Prozeß gehört.  Jedes sequentielle Programm nutzt die Kommunikationsbefehle zum Datenaustausch und zur Synchronisation.  Kommunikationsbefehle durch Bibliotheken eingebunden und so dem Programmierer zugänglich gemacht.  Eine nachrichtengekoppelte Programmierumgebung setzt sich aus einer sequentiellen Programmiersprache, wie z.B. C oder FORTRAN, und einer Message-passing-Bibliothek zusammen.

27 Sabine Rathmayer, 16. April Synchrone (blockierende) send-/receive-Befehle csend(type, buf, len, node, pid) long type; Nachrichtennummer char *buf; Zeiger auf Nachrichtenpuffer long len, node, pid; Nachrichtenlänge, Nummer des Empfängerknotens und des Empfängerprozesses  blockiert nur, bis der Sendepuffer wieder frei ist und nicht, bis die Nachricht empfangen wurde!! crecv(typesel, buf, len) long typesel; Nachrichtennummer, -maske oder -1 für jede beliebige Nachricht char *buf; Zeiger auf Nachrichtenpuffer long len; Länge des Puffers  blockiert, bis die Nachricht vollständig im Empfangspuffer steht

28 Sabine Rathmayer, 16. April Informationsbefehle über eine empfangene Nachricht long infocount() Länge der Nachricht (len) long infonode() Prozessornummer des Senders (node) long infopid() Prozeßnummer des Senders (pid) long infotype() Nachrichtennummer (type) allgemeine Informationsbefehle long mynode() Knotennummer long mypid() Prozeßnummer long numnodes() Anzahl Knoten des Subcubes long nodedim() Dimension des Subcubes unsigned long mclock() Zeit in Millisekunden

29 Sabine Rathmayer, 16. April Literatur  Folien Prof. Gerndt: Parallel Programming !!!  Designing and Building Parallel Programs (Ian Foster, 1995)  Internet-Recherche  Bsp:

30 Sabine Rathmayer, 16. April GRUPPE 3

31 Sabine Rathmayer, 16. April Einführung in MPI  Wichtigste Konstrukte  Weiterführende Themen wie asynchrone Kommunikation  Kollektive Operationen  Beispiele

32 Sabine Rathmayer, 16. April Historie  bis 1993 viele verschiedene Message Passing Bibliotheken (PVM, NX,PARMACS, P4,…)  Jan erstes Treffen des MPI-Forums: Hard- und Softwarehersteller, Universitäten, Forschungseinrichtungen  Mai 1994 MPI 1.0  Juni 1995 MPI 1.1  Juli 1997 MPI 1.2  MPI 2.0:  dyn. Prozesserzeugung  Parallele E/A

33 Sabine Rathmayer, 16. April Hauptroutinen  MPI 1.2 hat 129 Funktionen  Es ist möglich ein richtiges MPI-Programm mit nur 6 Funktionen zu schreiben:  MPI_Init  MPI_Finalize  MPI_Comm_Size  MPI_Comm_rank  MPI_Send  MPI_Recv

34 Sabine Rathmayer, 16. April Beispiele  MPI_Comm_size: Anzahl der Prozesse in der Prozessgruppe  MPI_Comm_rank: Eigene Prozessnummer (wird benötigt, um ein SPMD Programm zu schreiben  MPI_Send: blockierendes Senden; Sendepuffer wird frei gegeben, wenn im Empfangspuffer des anderen Knotens!  MPI_Recv(void *buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_Status status)  MPI_Probe und MPI_Iprobe  MPI_Barrier  MPI_Bcast  MPI_Gather, MPI_Scatter  …viele andere

35 Sabine Rathmayer, 16. April Literatur  Folien Prof. Gerndt: Parallel Programming !!!  Designing and Building Parallel Programs (Ian Foster, 1995)  Parallele Programmierung mit MPI (Peter Sanders und Thomas Worsch)  Using MPI (W. Gropp, A. Skjellum)  Internet-Recherche  Bsp:

36 Sabine Rathmayer, 16. April GRUPPE 4

37 Sabine Rathmayer, 16. April OpenMP  Ausführungsmodell  Gemeinsame und private Daten  Parallele Konstrukte  Work-Sharing Konstrukte  Synchronisierung  OpenMP-Umgebung

38 Sabine Rathmayer, 16. April Ausführungsmodell  Basiert auf dem Fork-Join-Modell  Ein Thread wird gestartet (master thread)  Weitere Threads (team) werden gestartet, wenn eine parallele Region erreicht wird  Threads werden terminiert (OS), wenn die parallele Region verlassen wird  Anzahl der Threads ist fest (wird beim Start des Programms mitgegeben)  Alle Threads werden am Ende der parallelen Region synch. (Barrier)  Master fährt fort nach Verlassen der parallelen Region

39 Sabine Rathmayer, 16. April Direktiven  Fortran !$OMP directive name [parameters]  C / C++ #pragma omp directive name [parameters]  Variablen:  private, shared, default, firstprivate, lastprivate  Parallele Schleifen: Iterationen werden auf die Threads verteilt #pragma omp for [params]  Parallele Sections: jede Teilsektion wird von einem Thread abgearbeitet #pragma omp sections [params] { #pragma omp section [params] #pragma omp section [params] }

40 Sabine Rathmayer, 16. April Parallele Ein-/Asugabe  Paralleles Programm, P Prozesse pro Datei gleichzeitig  Datenbanken, Multimedia, Simulationen  Verfahren:  Aufbau von Systemen mit paralleler E/A  Verfahren zur Nutzung dieser Systeme  Implemenation  Striping  RAID  Intel PFS  MPI I/O  Anwendungen mit hohem E/A-Anteil portabel und effizient zu machen  Daten schreiben/lesen wie send/recv

41 Sabine Rathmayer, 16. April Performanceanalyse und Optimierung  Kurzer Ausblick auf Werkzeuge (wird in einem eigenen WWR-Modul behandelt  Benchmarksuiten  Programmpakete zur Messung der Leistung paralleler Systeme  NAS Parallel Benchmarks (Numerische Strömungsmechanik)  PARKBENCH (Kommunikationsverhalten,…)  SPEC…chem, …seis, …hpc  Skalierungsprobleme  Bottleneckanalyse

42 Sabine Rathmayer, 16. April Literatur  Folien Prof. Gerndt: Parallel Programming !!!  Parallel Programming in OpenMP (R. Chandra, L. Dagum,…) Morgan Kaufmann Publishers 2001  Internet-Recherche  Bsp:

43 Sabine Rathmayer, 16. April GRUPPE 5

44 Sabine Rathmayer, 16. April Literatur  Praktikum: Cluster-Programmierung mit Java  raktikum/index.html

45 Sabine Rathmayer, 16. April  Anleitung für Installation von MPI auf einem Linux Rechner  einführende MPI Aufgaben  PingPong  Ringkommunikation  Zeitmessungen  Jacobi/Gauss-Seidel Relaxation  seq. Java Programm gegeben  parallele Version erstellen  GUI + RMI Kommunikation  Billard Simulation  1 w, 1 s, x bunte Kugeln, Tisch, Queue  sequentielle + parallele Version erstellen


Herunterladen ppt "Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer"

Ähnliche Präsentationen


Google-Anzeigen