GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
(Alle Dateien im Verzeichnis Uebungen_f/MPI-coll ) Wie hängt die Dauer der Synchronisation von der Zahl der zu synchronisierenden Prozesse ab? (mit synch.f ) synch.f Programmieren Sie eine Barriere mit Punkt-zu-Punkt-Kom- munikation und bestimmen Sie deren Dauer: ( synch_s.f) : synch_s.f) p0 P1 p2 Aufgabe 1: Synchronisation Parallelrechner-Programmierung mit MPI223. –
Aufgabe 2: Daten einsammeln Parallelrechner-Programmierung mit MPI323. – Zusammenführen eines verteilten Vektors zu einem Gesamtvektor mit gather_vec.f gather_vec.f MPI_GATHER( sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) Task 0 Task 1 (root) Task 2 sendbuf recvbufbuf sendbuf recvbufbuf
Untersuchen Sie das Programm errexit.f. errexit.f Ersetzen Sie die Abfolge MPI_REDUCE + MPI_BCAST durch MPI_ALLREDUCE Syntax: MPI_ALLREDUCE( sendbuf, recvbuf, count, datatype, op, comm) Aufgabe 3: Reduktion: MPI_MIN Parallelrechner-Programmierung mit MPI423. – 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
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 MPI523. –
Erstellen Sie ein Programm zur Summierung der ganzen Zahlen von 1 bis NMAX. Verwenden Sie dabei MPI_REDUCE mit der Operation MPI_SUM intsum.f Aufgabe4: Reduktion: MPI_SUM Parallelrechner-Programmierung mit MPI623. –