45
Sabine Rathmayer, 18 May 2022 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer [email protected]

Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer [email protected]

Embed Size (px)

Citation preview

Page 1: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 11 April 2023

1

WWR-PraktikumParallele Programmierung

Sabine Rathmayer

[email protected]

Page 2: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 2

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 MPIVioleta 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/ MPIThomas Kloppe, Steffen Bergmann, Andreas Klinger, Sebastian Hans

Page 3: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 3

Kurzfristige Änderungen

Termin Projektmanagement 23.4.2003 statt 30.4.2003

Betreuung Gruppen 1, 2 und 5

Page 4: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 4

GRUPPE 1

Page 5: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 5

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.

Page 6: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 6

Konfigurationen

Prozessor Prozessor

Verbindungsnetz

gemeinsamer Speicher

Globaler Speicher Physikalisch verteilter Speicher

Ver

teilt

er A

dre

ßra

umG

emei

nsam

er A

dre

ßra

um

Leer

Prozessor Prozessor

Verbindungsnetz

lokalerSpeicher

lokalerSpeicher

SMP Symmetrischer Multiprozessor DSM Distributed-shared-memory-Multiprozessor

Prozessor Prozessor

Verbindungsnetz

lokalerSpeicher

lokalerSpeicher

send receive

Nachrichtengekoppelter (Shared-nothing-)Multiprozessor

Page 7: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 7

Anwendungen

Simulationen Strömungssimulationen Wettervorhersage Klimaforschung Erdbebenvorhersage Hochspannungstechnik

Datenbanken Webserver

Page 8: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 8

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“.

Page 9: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 9

Ausführungszeit

Ausführungszeit T eines parallelen Programms auf einem dezidiert zugeordneten Parallelrechner setzt sich zusammen aus:

Berechnungszeit Tcomp (Computation Time) eines Algorithmus: die Zeit, die für Rechenoperationen verwendet wird,

Kommunikationszeit Tcomm (Communication Time) eines Algorithmus: die Zeit, die für Sende- und Empfangsoperationen verwendet wird,

Untätigkeitszeit Tidle (Idle Time):die Zeit, die mit Warten (auf zu empfangende Nachrichten oder auf das Versenden) verbraucht wird.

Es gilt: T = Tcomp + Tcomm + Tidle

Page 10: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 10

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

S n T 1 T n

E n S n n

Page 11: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 11

Amdahls Gesetz

T n T 1 1 an

T 1 a

S n T 1 T n

T 1 T 1 1 a

n T 1 a

11 an

a n

1 a na

S n 1

a

a Summe der Ausführungszeit des nur sequentiell ausführbaren Programmteils

Page 12: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 12

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

Page 13: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 13

Beispiel

Paralleler Code

Sequent. Code (Programmschluss)

Sequent. Code (Initialisierung)

Sequent. Code

Paralleler Code

Page 14: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 14

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

Page 15: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 15

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

Page 16: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 16

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

Page 17: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 17

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

Page 18: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 18

Literatur

Folien Prof. Gerndt: Parallel Programming Parallelrechner: Architekturen, Systeme, Werkzeuge

(Klaus Waldschmidt Hrsg.) Parallel Computing: Paradigms and Applications (Albert

Zomaya ed.) Internet-Recherche

Bsp: http://www.rz.rwth-aachen.de/hpc/compiler/parallel.html

Page 19: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 19

GRUPPE 2

Page 20: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 20

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.

Page 21: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 21

Parallele Programmierparadigmen

Datenparallele Programmierung: High Performance Fortran Shared Memory Ansätze

Direktiven Threads

Nachrichtenaustausch

Page 22: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 22

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

Page 23: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 23

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

Page 24: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 24

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

Page 25: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 25

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.

Page 26: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 26

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.

Page 27: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 27

Synchrone (blockierende) send-/receive-Befehle

csend(type, buf, len, node, pid)long type; Nachrichtennummerchar *buf; Zeiger auf Nachrichtenpufferlong len, node, pid;Nachrichtenlänge, Nummer des

Empfängerknotensund 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

beliebigeNachricht

char *buf; Zeiger auf Nachrichtenpufferlong len; Länge des Puffers

blockiert, bis die Nachricht vollständig im Empfangspuffer steht

Page 28: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 28

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 Informationsbefehlelong mynode() Knotennummer

long mypid() Prozeßnummer

long numnodes() Anzahl Knoten des Subcubes

long nodedim() Dimension des Subcubes

unsigned long mclock() Zeit in Millisekunden

Page 29: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 29

Literatur

Folien Prof. Gerndt: Parallel Programming !!! Designing and Building Parallel Programs (Ian Foster,

1995) Internet-Recherche

Bsp: http://www.rz.rwth-aachen.de/hpc/compiler/parallel.html

Page 30: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 30

GRUPPE 3

Page 31: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 31

Einführung in MPI

Wichtigste Konstrukte Weiterführende Themen wie asynchrone Kommunikation Kollektive Operationen Beispiele

Page 32: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 32

Historie

bis 1993 viele verschiedene Message Passing Bibliotheken (PVM, NX,PARMACS, P4,…)

Jan. 1993 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

Page 33: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 33

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

Page 34: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 34

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

Page 35: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 35

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: http://www.rz.rwth-aachen.de/hpc/compiler/parallel.html

Page 36: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 36

GRUPPE 4

Page 37: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 37

OpenMP

Ausführungsmodell Gemeinsame und private Daten Parallele Konstrukte Work-Sharing Konstrukte Synchronisierung OpenMP-Umgebung

Page 38: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 38

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

Page 39: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 39

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] }

Page 40: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 40

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

Page 41: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 41

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

Page 42: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 42

Literatur

Folien Prof. Gerndt: Parallel Programming !!! Parallel Programming in OpenMP (R. Chandra, L. Dagum,

…) Morgan Kaufmann Publishers 2001 Internet-Recherche

Bsp: http://www.rz.rwth-aachen.de/hpc/compiler/parallel.html

Page 43: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 43

GRUPPE 5

Page 44: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 44

Literatur

Praktikum: Cluster-Programmierung mit Java http://wwwbode.in.tum.de/~gerndt/home/Teaching/SS2002/

Praktikum/index.html

Page 45: Sabine Rathmayer, 16 August 201416 August 2014 1 WWR-Praktikum Parallele Programmierung Sabine Rathmayer sabine.rathmayer@in.tum.de

Sabine Rathmayer, 16. April 2003 45

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