Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Busso Heidrich Geändert vor über 8 Jahren
1
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan ohaan@gwdg.de
2
(Alle Dateien im Verzeichnis Uebungen_f/MPI-coll ) Uebungen_py/MPI-coll ) Wie hängt die Dauer der Synchronisation von der Zahl der zu synchronisierenden Prozesse ab? (mit synch.f (make synch), synch.py ) synch.fsynch.py Programmieren Sie eine Barriere mit Punkt-zu-Punkt-Kom- munikation und bestimmen Sie deren Dauer: ( synch_s.f (make synch, synch_s.py) : synch_s.fsynch_s.py p0 P1 p2 Aufgabe 1: Synchronisation Parallelrechner-Programmierung mit MPI231.03 – 01.04. 2015
3
Aufgabe 2: Daten einsammeln Parallelrechner-Programmierung mit MPI331.03 – 01.04. 2015 Zusammenführen eines verteilten Vektors zu einem Gesamtvektor mit gather_vec.f (make gather) gather_vec.f gather_vec.pygather_vec.py, gather_obj.pygather_obj.py MPI_GATHER( sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) comm.Gather(sendbuf,recvbuf,root= 1) recvbuf = comm.gather(sendbuf,root= 1) Task 0 Task 1 (root) Task 2 sendbuf recvbufbuf sendbuf recvbufbuf
4
Untersuchen Sie das Programm errexit.f, errexit.py errexit.ferrexit.py Ersetzen Sie die Abfolge MPI_REDUCE + MPI_BCAST durch MPI_ALLREDUCE Syntax: MPI_ALLREDUCE( sendbuf, recvbuf, count, datatype, op, comm) recvbuf= comm.reduce(sendobj = sendbuf, recvobj=None, op=op) Aufgabe 3: Reduktion: MPI_MIN Parallelrechner-Programmierung mit MPI431.03 – 01.04. 2015 A0 op A0 op A0 A1 op A1 op A1 Task 0 Task 1 Task 2 sendbuf recvbufbuf A0 A1 A0 op A0 op A0 A1 op A1 op A1
5
Erstellen Sie ein Programm zur Bestimmung des globalen Minimums eines verteilten Vektors ganzer Zahlen mit Angabe eines Prozesses, auf dem das Minimum angenommen wird Hinweis: Suche das Minimum des Hilfsvektors hv(i) = intv(i)*np + myid Aufgabe 3: Reduktion: MPI_MIN Parallelrechner-Programmierung mit MPI531.03 – 01.04. 2015
6
Erstellen Sie ein Programm zur Summierung der ganzen Zahlen von 1 bis N. Verwenden Sie dabei MPI_REDUCE mit der Operation MPI_SUM intsum.f, intsum.py intsum.fintsum.py Syntax von MPI_REDUCE call MPI_REDUCE(suml,sum,1,MPI_INTEGER, MPI_SUM, : 0,MPI_COMM_WORLD, ierr ) sum = comm.reduce(suml,op=MPI.SUM,root=0) Aufgabe4: Reduktion: MPI_SUM Parallelrechner-Programmierung mit MPI631.03 – 01.04. 2015
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.