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

Slides:



Advertisements
Ähnliche Präsentationen
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Advertisements

Numerische Lösung der 2D Laplace/Poisson-Gleichung
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Einführung Blue J.
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
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!
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 - 2. Übung Entwicklungsumgebung Struktur von Programmen
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.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Vorlesung 9.2: Specification Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Sicher durchs Internet
Uebung 03 Perceptron Training INPUTINPUT b OUTPUTOUTPUT w1w1 w2w2.
zur Vorlesung Neuronale Netzwerke
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 Vorlesung am 4. April 2006 Thomas Schörner-Sadenius Universität Hamburg, IExpPh Sommersemester 2006.
Der Formfaktor.
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
AG zum Grundkurs im Öffentlichen Recht II
Prof. Dr. F. Mücklich, Dipl.-Ing. C. Gachot Organisatorisches: 15 min
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
Powerpoints bestellen-Mail an Mit diesem Programm können Sie die Anzahl der Tage Ihres Resturlaubs berechnen. Hier klicken!
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
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
Firma wählen. Neue Mitteilung eingeben Daten eingeben Leeres Formular.
Berechnung der Kreisfläche
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:
Analyseprodukte numerischer Modelle
Analyseprodukte numerischer Modelle Langzeitkennwerte der Atmosphäre.
Wenn Transistoren kalt wird…
BMEVIEEA100 Grundlagen der Programmierung
Pendulum.c Thomas Baumgartner, Mat.nr Alexander Gross, Mat.nr
Fachdidaktik Informatik I BEGRIFFE (Buch I / II)
Parallelisierung für Multiprozessor-Maschinen
Transaktionen Dr. Heidrun Bethge Datenbanken II.
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
C. Boehme, O. Haan, U. Schwardmann GWDG Übungen II Programmierung von Parallelrechnern.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Punkt-zu-Punkt-Kommunikation Oswald Haan
Mikrocomputertechnik 1 Einführung Prof. J. Walter Stand Januar Mikrocomputertechnik Jürgen Walter „Configuration-Quickie“ Hardware konfigurieren.
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Programmieren mit Variablen
Robotik Warteblock mit Sensoren einsetzen. Tastsensor: Klingel (1) 1. Beschreibe den Programmablauf. 2. Entferne die beiden letzten Blöcke aus der Schleife.
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
 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 berechnet diese Summe pi.f

Programmierung von Parallelrechnern: Übungen II5 Aufgabe 1 Verteile die Berechnung der Summe auf nproc Tasks p0 p1 p2 p3

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

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 Aufgabe 2 Verteile die Berechnung der nin Integrale auf nproc Tasks, mit Berücksichtigung der Lastverteilung (nin >> nproc). Hinweis: Benutze das Verarbeitungsmodell Farmer-Worker. p 0 ist der Farmer, der die Aufgaben zuteilt, p 1,…p nproc-1 sind die Worker, die nach Arbeit rufen, sobald sie frei sind.

Programmierung von Parallelrechnern: Übungen II9 Aufgabe 2 Farmer: me = 0 tres = 0 Schleife über nintv Intervalle i Empfange res von anytask tres = tres + res iw = status(mpi_source) Sende i nach iw Schleife über np-1 Worker iw Sende -1 nach iw Worker: me > 0 res = 0 Sende res nach 0 Schleife über nintv Intervalle i Empfange i von 0 Wenn i <0 fertig res = work(i) sende res nach 0

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

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

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

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

Programmierung von Parallelrechnern: Übungen II14 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 DGEMV collect_vector MPI_BCAST

Programmierung von Parallelrechnern: Übungen II15 Globale Summierung I : Sammeln Programm in collect_vector.fcollect_vector.f

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

Programmierung von Parallelrechnern: Übungen II17 Globale Summierung II : MPI_REDUCE Programm in reduce_vector.f reduce_vector.f

Programmierung von Parallelrechnern: Übungen II18 Aufgabe 1: MPI_REDUCE Modifikation von collect-vector mit MPI_REDUCE Syntax : MPI_Reduce(sendbuf, recvbuf, count, datatype, operation, root, comm) (Dateien in Uebungen/Ritz )

Programmierung von Parallelrechnern: Übungen II19 Aufgabe 1a: MPI_REDUCE_SCATTER Modifikation von collect-vector mit MPI_REDUCE_SCATTER Syntax : MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, datatype, operation, comm)

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

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

Programmierung von Parallelrechnern: Übungen II22 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 global_vector DGEMV MPI_BCAST

Programmierung von Parallelrechnern: Übungen II23 Abgeleitete Datentypen für die Verteilung der globalen Matrix a MPI_Type_vector(int count,int blocklen,int stride, MPI_Datatype oldtype,MPI_Datatype *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 II24 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 II25 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 II26 Aufgabe 2a: global_vector Modifikation von global_vector mit MPI_SENDRECV

Programmierung von Parallelrechnern: Übungen II27 Wärmeleitungsgleichung

Programmierung von Parallelrechnern: Übungen II28 Finite-Differenzen Gitter

Programmierung von Parallelrechnern: Übungen II29 Algorithmus Wärmeleitung zeitschritt initialisierung norm kopie waermeleitung

Programmierung von Parallelrechnern: Übungen II30 Partitionierung mit Randaustausch

Programmierung von Parallelrechnern: Übungen II31 Algorithmus Wärmeleitung - parallel zeitschritt Initialisierung_mpi norm kopie Waermeleitung_mpi randaustausch

Programmierung von Parallelrechnern: Übungen II32 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

Programmierung von Parallelrechnern: Übungen II33 Skalierungsanalyse

Programmierung von Parallelrechnern: Übungen II34 2-dimensionale Verteilung

Programmierung von Parallelrechnern: Übungen II35 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 )