C. Boehme, O. Haan, U. Schwardmann GWDG Übungen II Programmierung von Parallelrechnern.

Slides:



Advertisements
Ähnliche Präsentationen
Programme in C++.
Advertisements

Matrixmultiplikation
Partitionierungstechniken in Datenbanksystemen
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Numerische Lösung der 2D Laplace/Poisson-Gleichung
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Beleg zum Grundlagenversuch am CRS-Roboter
Strukturlösung mit Hilfe der Patterson-Funktion
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Seite 1 BA Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Aug 2008 Das zeitliche Verhalten periodisch auszuführender Aktionen.
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2007 Dietmar Schumacher Die Wertetabelle.
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2007 Dietmar Schumacher Zeichnerische.
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Schleifen-beobachtung
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Geometrisches Divide and Conquer
PATR II Interpreter Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Problemstellung Berechne die Summe der Quadrate aller natürlichen Zahlen bis zu einer vorgegebenen Zahl (bspw. 100)! Oder mathematisch: Berechne.
Vorlesung 9.2: Specification Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
TEILCHENPHYSIK FÜR FORTGESCHRITTENE Peter Schleper Thomas Schörner-Sadenius Universität Hamburg, IExpPh Wintersemester 2005/06.
TEILCHENPHYSIK FÜR FORTGESCHRITTENE
TEILCHENPHYSIK FÜR FORTGESCHRITTENE Vorlesung am 4. April 2006 Thomas Schörner-Sadenius Universität Hamburg, IExpPh Sommersemester 2006.
Der Formfaktor.
Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar.
TEILCHENPHYSIK FÜR FORTGESCHRITTENE Vorlesung am 18. April 2006 Robert Klanner Universität Hamburg, IExpPh Sommersemester 2006.
TEILCHENPHYSIK FÜR FORTGESCHRITTENE
Die Simulation von Planetenbewegungen
Erstellen eines Zufallsgenerators
Diskrete Mathe 9 Vorlesung 9 SS 2001
Prof. Dr. F. Mücklich, Dipl.-Ing. C. Gachot Organisatorisches: 15 min
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Die t-Verteilung und die Prüfstatistik
1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Allgemeine Datentypen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI – Oswald Haan
Konfidenzintervall und Testen für den Mittelwert und Anteile
Analyse der Modellstruktur
Berechnung der Kreisfläche
C. Boehme, O. Haan, U. Schwardmann GWDG Übungen II Programmierung von Parallelrechnern.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Stetige Verteilungen Das Uhrenbeispiel Dichtefunktion
Abtragen von Strecken P Q O H t 1-t und Daraus folgt:
Pendulum.c Thomas Baumgartner, Mat.nr Alexander Gross, Mat.nr
Fachdidaktik Informatik I BEGRIFFE (Buch I / II)
Parallelisierung für Multiprozessor-Maschinen
SFZ FN Sj. 13/14 Python Grundlagen InfK12 Sj 13/14 GZG FN W.Seyboldt.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Stetige Kleinste-Quadrate-Approximation
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
Mikrocomputertechnik Port-Quickie Prof. J. Walter Stand Januar Mikrocomputertechnik Jürgen Walter „Port-Quickie“ 8051-Port Eingabe - Ausgabe.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
Diskrete Mathe II Übung
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Punkt-zu-Punkt-Kommunikation Oswald Haan
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
 Präsentation transkript:

C. Boehme, O. Haan, U. Schwardmann GWDG Übungen II Programmierung von Parallelrechnern

Programmierung von Parallelrechnern: Übungen II2 Beispiele Berechnung von  durch numerische Integration Raleigh - Ritz - Methode –Spaltenblock -Verteilung –Reihenblock - Verteilung 2-dim Wärmeleitungsgleichung

Programmierung von Parallelrechnern: Übungen II3 Berechnung von  Inhalt des Kreissegmentes =  / 4

Programmierung von Parallelrechnern: Übungen II4 Numerische Integration Das Programm numint in pi.f ( pi.py ) berechnet diese Summe pi.f pi.py

Programmierung von Parallelrechnern: Übungen II5 Aufgabe 1 Verteile die Berechnung der Summe auf nproc Tasks p0 p1 p2 p3 pi_mpi.fpi_mpi.f pi_mpi.pypi_mpi.py

Programmierung von Parallelrechnern: Übungen II6 Numerische Integration mit vorgegebener Genauigkeit Das Programm numintprec in pi_p.f ( pi_p.py ) berechnet die Summe mit vorgegebener Genauigkeit pi_p.f pi_p.py

Programmierung von Parallelrechnern: Übungen II7 Numerische Integration mit vorgegebener Genauigkeit Unterteilung des Integrationsgebietes in nin Intervalle, jedes Intervall mit eigenem  zur Erzielung der vorgegebenen Genauigkeit a b

Programmierung von Parallelrechnern: Übungen II8 Verarbeitungsmodell Farmer-Worker Farmer: me = 0 tres = 0 Schleife über nin Intervalle i Empfange res von anytask tres = tres + res ipw = status(mpi_source) Sende i nach ipw Schleife über np-1 Worker ipw Sende -1 nach ipw Worker: me > 0 res = 0 Sende res nach 0 Schleife über nin Iterationen Empfange i von 0 Wenn i <0 fertig res = work(i) sende res nach 0 Verteile die Berechnung der nin Integrale auf nproc Tasks pi_p_mpi.fpi_p_mpi.f pi_p_mpi.pypi_p_mpi.py

Programmierung von Parallelrechnern: Übungen II9 Aufgabe 2 Modifiziere das Verarbeitungsmodell!

Worker: me > 0 Schleife über nin+np Empfange i von 0 Wenn i <0 fertig res = work(i) sende res nach 0 Farmer: me = 0 tres = 0 Schleife über np-1 Worker iw: Sende iw nach iw Schleife über nin Intervalle i Empfange res von anytask tres = tres + res iw = status(mpi_source) Wenn i<nin-np+1: Sende i + np-1 nach iw Sonst: Sende -1 nach iw Programmierung von Parallelrechnern: Übungen II10 Modifiziertes Verarbeitungsmodell Verteile die Berechnung der nin Integrale auf nproc Tasks

Programmierung von Parallelrechnern: Übungen II11 Raleigh - Ritz - Methode Eigenwertproblem : Sei

Programmierung von Parallelrechnern: Übungen II12 Algorithmus Raleigh - Ritz Sequentielles Fortran Programm Sequentielles python Programm

Programmierung von Parallelrechnern: Übungen II13 Parallele Matrix-Vektor Multiplikation Verteilung in Spaltenblöcken

Programmierung von Parallelrechnern: Übungen II14 Parallele Matrix-Vektor Multiplikation Spaltenblock-Verteilung Lokale Teilergebnisse Globale Summierung

Programmierung von Parallelrechnern: Übungen II15 Programm ritz_dist_col Paralleler Raley-Ritz Algorithmus mit Spaltenblock-Verteilung Ser Eingabe: Matrixdimension n Ser Initialisierung von A Par Verteilung von A nach Al Par Startwert von xl Schleife Par yt = Al * xl Par globale Summe yl Ser  = yl(1) Par verteile Par xl = 1/  * yl ritz_dist_col dist_index dist_matrix_colblock (fortran python)fortranpython DGEMV collect_vector (fortran python)fortranpython MPI_BCAST

Programmierung von Parallelrechnern: Übungen II16 Globale Summierung I : MPI_REDUCE Programm in reduce_vector.f reduce_vector.f reduce_vector.py

Programmierung von Parallelrechnern: Übungen II17 Aufgabe 1: MPI_REDUCE_SCATTER Modifikation von collect-vector mit MPI_REDUCE_SCATTER Syntax : MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, datatype, operation, comm) n=firstind(nproc) Elemente in sendbuf werden mit MPI_SUM über alle Prozesse summiert. recvcounts(ip) Elemente werden nach Prozess ip gescattert

Programmierung von Parallelrechnern: Übungen II18 Globale Summierung II : Sammeln Programm in collect_vector.fcollect_vector.f

Programmierung von Parallelrechnern: Übungen II19 Aufgabe 2: Modifikation von collect-vector: Sammeln (Dateien in Uebungen/Ritz )

Programmierung von Parallelrechnern: Übungen II20 Send-Receive Bei blockierendem Senden Deadlockgefahr! SENDRECV vermeidet Deadlock

Programmierung von Parallelrechnern: Übungen II21 Parallele Matrix-Vektor Multiplikation Verteilung in Zeilenblöcken

Programmierung von Parallelrechnern: Übungen II22 Parallele Matrix-Vektor Multiplikation Zeilenblock-Verteilung Bereitstellung des globalen Vektors Lokale Ergebnisse

Programmierung von Parallelrechnern: Übungen II23 Programm ritz_dist_row Paralleler Raley-Ritz Algorithmus mit Zeilenblock-Verteilung Ser Eingabe: Matrixdimension n Ser Initialisierung von A Par Verteilung von A nach Al Par Startwert von xl Schleife Par globaler Vektor xt Par yl = Al * xt Ser  = yl(1) Par verteile Par xl = 1/ * yl ritz_dist_row dist_index dist_matrix_rowblock (fortran python)fortranpython global_vector (fortran python)fortranpython DGEMV MPI_BCAST

Programmierung von Parallelrechnern: Übungen II24 Abgeleitete Datentypen für die Verteilung der globalen Matrix a MPI_Type_vector(count, blocklen, stride, oldtype, newtype) z.B. ml x n Zeilenblock einer m x n Matrix: m n ml count = n blocklen = ml stride = m

Programmierung von Parallelrechnern: Übungen II25 Aufgabe: Benutze Type_vector zur Verteilung von a Modifiziere dist_matrix_rowblock dist_matrix_rowblock 1.Definition eines neuen Typs rowblock mit MPI_TYPE_VECTOR 2.Aktivieren des Typs mit MPI_TYPE_COMMIT(rowblock,ierrr) 3.Senden mit MPI_SEND(a[ia],1,rowblock,ip,0, MPI_COMM_WORLD,ierr) 4.Deaktivieren des Typs mit MPI_TYPE_FREE(rowblock,ierr)

Programmierung von Parallelrechnern: Übungen II26 Aufgabe 2: global_vector Modifikation von global_vector mit MPI_ALLGATHER Syntax: MPI_ALLGATHERV(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, ierr) do ip = 0, nproc -1 recvcounts(ip) = firstind(ip+1) – firstind(ip) displs(ip) = firstind(ip) – 1 end do (Dateien in Uebungen/Ritz )

Programmierung von Parallelrechnern: Übungen II27 Aufgabe 2a: global_vector Modifikation von global_vector mit MPI_SENDRECV

Programmierung von Parallelrechnern: Übungen II28 Wärmeleitungsgleichung

Programmierung von Parallelrechnern: Übungen II29 Finite-Differenzen Gitter

Programmierung von Parallelrechnern: Übungen II30 Algorithmus Wärmeleitung Zeitschritt (fortran python)fortranpython initialisierung norm kopie Waermeleitung (fortran python)fortranpython

Programmierung von Parallelrechnern: Übungen II31 Partitionierung mit Randaustausch

Programmierung von Parallelrechnern: Übungen II32 Algorithmus Wärmeleitung - parallel zeitschritt Initialisierung_mpi norm kopie Waermeleitung_mpi (fortran python)fortranpython Randaustausch (fortran python)fortranpython

Programmierung von Parallelrechnern: Übungen II33 Randaustausch Mit MPI_SENDRECV: Jeder Prozessor sendet 1. Spalte nach links, empfängt Werte für 0. Spalte von links, Jeder Prozessor sendet n2l. Spalte nach rechts, empfängt Werte für n2l+1. Spalte von rechts. Randspalten werden mit Prozessor MPI_PROC_NULL ausgetauscht! subroutine randaustausch (fortran python)fortranpython

Programmierung von Parallelrechnern: Übungen II34 Skalierungsanalyse

Programmierung von Parallelrechnern: Übungen II35 2-dimensionale Verteilung

Programmierung von Parallelrechnern: Übungen II36 Aufgabe 3: Wärmeleitungsgleichung mit 2-dim. Verteilung Modifikation gegenüber 1-dim Verteilung: Eingabe von nq1,nq2 Überprüfen, ob nq1*nq2 gleich nproc Generieren der Blockgrößen n1l,n2l Abbildung myid->(myid1,myid2) Initialisierung der lokalen Blöcke Randaustausch bei 2-dim Verteilung (Dateien in Uebungen/Waermeleitung )