GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan

Slides:



Advertisements
Ähnliche Präsentationen
E-Solutions mySchoeller.com for Felix Schoeller Imaging
Advertisements

Message Passing Interface (MPI)
DNS-Resolver-Mechanismus
PL/SQL - Kurze Einführung -.
PPTmaster_BRC_ pot Rexroth Inline compact I/O technology in your control cabinet SERCOS III Components Abteilung; Vor- und Nachname.
R. Zankl – Ch. Oelschlegel – M. Schüler – M. Karg – H. Obermayer R. Gottanka – F. Rösch – P. Keidler – A. Spangler th Expert Meeting Business.
General Cost Center Planning SAP Best Practices Baseline Package
Herzlich Willkommen zum Informations-Forum: SAP Interoperabilität
The difference between kein and nicht.
Multi electron atoms Atoms with Z>1 contain >1 electron. This changes the atomic structure considerably because in addition to the electron-nucleus interaction,
Intro T-Systems Nova GmbH Broadband Wireless Local Area Networks Frank ChristahlAndreas Huber.
Informatik 12, TU Dortmund
Fakultät für informatik informatik 12 technische universität dortmund Universität Dortmund Middleware Peter Marwedel TU Dortmund, Informatik 12 Germany.
Aufgabenbesprechung Programming Contest. Order 7 Bo Pat Jean Kevin Claude William Marybeth 6 Jim Ben Zoe Joey Frederick Annabelle 0 SET 1 Bo Jean Claude.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Telling Time in German Deutsch 1 Part 1 Time in German There are two ways to tell time in German. There are two ways to tell time in German. Standard.
Wenn…… the conditional. Using the conditional tense The conditional tense is used to talk about something that happens only after something else happened.
DHBW Stuttgart, Technische Informatik, SW-Engineering, OOD April 2009 Seite 1 Christoph Riewerts Modeling in Colors – Objective: To learn and apply four.
Welcome DTD. Document Type Definition Graphic Services/Everything you already know about presentations Was ist eine DTD? DTD ist eine Schemasprache.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Signaturen im zweidimensionalen Merkmalsraum
Link Layer. Physical Layer Link Layer Host Controller Interface L2CAP Attribute Protocol Attribute Profile PUIDRemote ControlProximityBatteryThermostatHeart.
Thomas Herrmann Software - Ergonomie bei interaktiven Medien Step 6: Ein/ Ausgabe Instrumente (Device-based controls) Trackball. Joystick.
Modulare Programmierung
CCNA Exploration Network Fundamentals
Methods Fuzzy- Logic enables the modeling of rule based knowledge by the use of fuzzy criteria instead of exact measurement values or threshold values.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
Laurie Clarcq The purpose of language, used in communication, is to create a picture in the mind and/or the heart of another.
Machen Sie sich schlau am Beispiel Schizophrenie.
Was kann HTML? EINLEITUNG EINLEITUNG Bsp Main Title First Subtitle.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Es gibt keine Zustandsänderung, deren einziges Ergebnis die Übertragung von Wärme von einem Körper niederer auf einen Körper höherer Temperatur ist. There.
Institut AIFB, Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Towards Automatic Composition of Processes based on Semantic.
T.Ruf, N.Brook, R.Kumar, M.Meissner, S.Miglioranzi, U.Uwer D.Voong Charge Particle Multiplicity Disclaimer: Work has started only recently! I am not an.
Sanjay Patil Standards Architect – SAP AG April 2008
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
Einführung in die Politikfeldanalyse 3.Vorlesung Prof. Herbert Gottweis Sommersemester 2006 Studienassistent: Homepage:
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
You need to use your mouse to see this presentation © Heidi Behrens.
INTAKT- Interkulturelle Berufsfelderkundungen als ausbildungsbezogene Lerneinheiten in berufsqualifizierenden Auslandspraktika DE/10/LLP-LdV/TOI/
JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1
Travelling Salesman Problem (TSP)
8D-Report - completion by supplier: Excel /
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Nouns. What is a noun O A noun is the name of a person, O place, O animal O or thing.
Cross-Polarization Modulation in DWDM Systems
© Boardworks Ltd of 8 Time Manner Place © Boardworks Ltd of 8 This icon indicates that the slide contains activities created in Flash. These.
Negation is when you dont have or dont do something.
Dative Prepositions. The dative case always follows these prepositions: – aus – out of, from, (from – place of origin) – außer – besides, except – bei.
AVL-Trees (according to Adelson-Velskii & Landis, 1962) In normal search trees, the complexity of find, insert and delete operations in search.
Schreiben Work on Script – 10 min. Mini-Jeopardy 5 Was bedeutet.....? 5 Wie sagt man....?
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
1 Stevens Direct Scaling Methods and the Uniqueness Problem: Empirical Evaluation of an Axiom fundamental to Interval Scale Level.
How to use and facilitate an OptionFinder Audience Response System.
Instrumente und Unterhaltung End of Unit Assessment.
Data Mining Spectral Clustering Junli Zhu SS 2005.
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
ekek w ik aiai v ij METHOD FOR AUTOMATED CHOICE OF TECHNICAL PRODUCTS The proposed method is based on automatically classification.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
You need to use your mouse to see this presentation © Heidi Behrens.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis 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 Punkt-zu-Punkt-Kommunikation Oswald Haan
CSL211 Computer Architecture
 Präsentation transkript:

GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan

Kollektive Operationen - Überblick Kollektive Operationen werden von allen Tasks eines Kommunikators (z.B. MPI_COMM_WORLD) aufgerufen Intra-Kommunikator: alle Tasks gehören zu einer Gruppe Inter-Kommunikator: die Tasks bilden zwei getrennte Gruppen MPI_COMM_WORLD ist ein Intra-Kommunikator Kollektive Operationen können blockierend sein (z.B. MPI_BARRIER) oder je nach Implementierung blockierend oder nichtblockierend Parallelrechner-Programmierung mit MPI207. –

Klassifizierung der Kollektive Operationen Parallelrechner-Programmierung mit MPI307. –

Kollektive Operationen: Datenfluss Parallelrechner-Programmierung mit MPI407. –

Kollektive Operationen: Datenfluss Parallelrechner-Programmierung mit MPI507. – alltoall

MPI_BARRIER: Synchronisation Parallelrechner-Programmierung mit MPI607. – MPI_BARRIER( comm ) IN comm communicator (handle) MPI_BARRIER muss von allen Tasks des Kommunikators comm aufgerufen werden. Der Aufruf von MPI_BARRIER endet erst, wenn alle Tasks den Aufruf abgesetzt haben.

MPI_BCAST: Broadcast Parallelrechner-Programmierung mit MPI707. – MPI_BCAST( buffer, count, datatype, root, comm ) INOUT buffer starting address of buffer (choice) IN count number of entries in buffer (non-negative integer) IN datatype data type of buffer (handle) IN root rank of broadcast root (integer) IN comm communicator (handle) Alle Tasks müssen die gleichen Werte für root und comm angeben, die durch count und datatype festgelegte Datenmenge muss bei allen Tasks übereinstimmen

MPI_GATHER: Sammeln auf root Parallelrechner-Programmierung mit MPI807. – MPI_GATHER( sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) IN sendbuf starting address of send buffer (choice) IN sendcount number of elements in send buffer (non-negative integer) IN sendtype data type of send buffer elements (handle) OUT recvbuf address of receive buffer (choice, significant only at root) IN recvcount number of elements for any single receive (non-negative integer, significant only at root) IN recvtype data type of recv buffer elements (handle,significant only at root) IN root rank of receiving process (integer) INcomm communicator (handle)

MPI_GATHER: Sammeln auf root Parallelrechner-Programmierung mit MPI907. – Alle Tasks müssen die gleichen Werte für root und comm angeben die durch sendcount und sendype festgelegte Datenmenge muss bei allen Tasks mit der auf dem root- Task durch recvcount und recvtype festgelegten Datenmenge übereinstimmen Der recv-Buffer wird auf allen nicht-root Tasks ignoriert Task 0 Task 1 (root) Task 2 sendbuf recvbufbuf sendbuf recvbufbuf Vor MPI_GATHERNach MPI_GATHER

MPI_GATHER: mit MPI_IN_PLACE auf root Parallelrechner-Programmierung mit MPI1007. – nicht-root-Task MPI_GATHER( sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) root-Task MPI_GATHER(MPI_IN_PLACE, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) Task 0 Task 1 (root) Task 2 sendbuf recvbufbuf Vor MPI_GATHERNach MPI_GATHER sendbuf recvbufbuf

MPI_GATHERV: Sammeln auf root Parallelrechner-Programmierung mit MPI1107. – MPI_GATHERV( sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root,comm) IN sendbuf starting address of send buffer (choice) IN sendcount number of elements in send buffer (non-negative integer) IN sendtype data type of send buffer elements (handle) OUT recvbuf address of receive buffer (choice, significant only at root) IN recvcounts non-negative integer array (of length group size) containing the number of elements that are received from each process (significant only at root) IN displs integer array (of length group size). Entry i specifies the displacement relative to recvbuf at which to place the incoming data from process i (significant only at root) IN recvtype data type of recv buffer elements (handle,significant only at root) IN root rank of receiving process (integer) IN comm communicator (handle)

MPI_GATHERV : Sammeln auf root Parallelrechner-Programmierung mit MPI1207. – die durch sendcount und sendype festgelegte Datenmenge auf Task i muss mit der auf dem root-Task durch recvcounts(i) und recvtype festgelegten Datenmenge übereinstimmen Die Daten von Task i werden mit dem Abstand displs(i) Elemente vom Typ recvtype von der Adresse recvbuf gespeichert Der recv-Buffer wird auf allen nicht-root Tasks ignoriert Task 0 Task 1 (root) Task 2 sendbuf recvbufbuf sendbuf recvbufbuf Vor MPI_GATHERVNach MPI_GATHERV

MPI_SCATTER: Verteilen von root Parallelrechner-Programmierung mit MPI1307. – MPI_SCATTER( sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm) IN sendbuf address of send buffer (choice, significant only at root) IN sendcount number of elements sent to each process (non-negative integer, significant only at root) IN sendtype data type of send buffer elements (handle, significant only at root) OUT recvbuf address of receive buffer (choice) IN recvcount number of elements in receive buffer (non-negative integer) IN recvtype data type of receive buffer elements (handle) IN rootrank of sending process (integer) IN comm communicator (handle)

MPI_SCATTER: Verteilen von root Parallelrechner-Programmierung mit MPI1407. – Alle Tasks müssen die gleichen Werte für root und comm angeben die durch recvcount und recvtype festgelegte Datenmenge muss bei allen Tasks mit der auf dem root- Task durch sendcount und sendtype festgelegten Datenmenge übereinstimmen Der send-Buffer wird auf allen nicht-root Tasks ignoriert Task 0 Task 1 (root) Task 2 sendbufrecvbufbufsendbufrecvbufbuf Vor MPI_SCATTERNach MPI_SCATTER

MPI_ALLGATHER: Sammeln auf alle Tasks Parallelrechner-Programmierung mit MPI1507. – MPI_ALLGATHER( sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm) IN sendbuf starting address of send buffer (choice) IN sendcount number of elements in send buffer (non-negative integer) IN sendtype data type of send buffer elements (handle) OUT recvbuf address of receive buffer (choice) IN recvcount number of elements received from any process (nonnegative integer) IN recvtype data type of receive buffer elements (handle) IN comm communicator (handle)

MPI_ALLGATHER: Sammeln auf root Parallelrechner-Programmierung mit MPI1607. – Alle Tasks müssen die gleichen Werte für comm angeben die durch sendcount und sendype festgelegte Datenmenge muss bei allen Tasks mit der durch recvcount und recvtype festgelegten Datenmenge übereinstimmen Task 0 Task 1 Task 2 sendbuf recvbufbuf sendbuf recvbufbuf Vor MPI_ALLGATHERNach MPI_ALLGATHER

MPI_ALLGATHER mit MPI_IN_PLACE Parallelrechner-Programmierung mit MPI1707. – MPI_ALLGATHER(MPI_IN_PLACE, sendcount, sendtype, recvbuf, recvcount,recvtype, comm) Task 0 Task 1 Task 2 sendbuf recvbufbuf sendbuf recvbufbuf Vor MPI_ALLGATHERNach MPI_ALLGATHER

MPI_ALLGATHERV: Sammeln auf alle Tasks Parallelrechner-Programmierung mit MPI1807. – MPI_ALLGATHERV( sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs,recvtype, comm) IN sendbuf starting address of send buffer (choice) IN sendcount number of elements in send buffer (non-negative integer) IN sendtype data type of send buffer elements (handle) OUT recvbuf address of receive buffer (choice) IN recvcounts non-negative integer array (of length group size) containing the number of elements that are received from each process (significant only at root) IN displsinteger array (of length group size). Entry i specifies the displacement relative to recvbuf at which to place the incoming data from process i IN recvtype data type of receive buffer elements (handle) IN comm communicator (handle)

MPI_ALLTOALL: Sammeln und Verteilen Parallelrechner-Programmierung mit MPI1907. – MPI_ALLTOALL(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm) IN sendbuf starting address of send buffer (choice) INsendcount number of elements sent to each process (non-negative integer) IN sendtype data type of send buffer elements (handle) OUTrecvbuf address of receive buffer (choice) IN recvcount number of elements received from any process (nonnegative integer) IN recvtype data type of receive buffer elements (handle) IN comm communicator (handle)

0 MPI_ALLTOALL: Sammeln und Verteilen Parallelrechner-Programmierung mit MPI2007. – Alle Tasks müssen die gleichen Werte für comm angeben die durch sendcount und sendype festgelegte Datenmenge muss bei allen Tasks gleich sein und mit der durch recvcount und recvtype festgelegten Datenmenge übereinstimmen 0 12 Task 0 Task 1 Task 2 sendbuf 1 11 recvbufbuf Vor MPI_ALLTOALLNach MPI_ALLTOALL

Reduktions-Operationen Parallelrechner-Programmierung mit MPI2107. – Operationen, die Daten von allen Tasks zu einem einzigen Ergebnis verarbeiten, wie Summe, Minimum etc. Vordefinierte oder eigene Operationen möglich MPI_REDUCE: Ergebnis wird auf root gespeichert MPI_ALLREDUCE: Ergebnis wird auf allen Tasks gespeichert MPI_REDUCE_SCATTER, MPI_REDUCE_SCATTER_BLOCK: n Ergebnisse werden auf n Tasks verteilt MPI_SCAN, MPI_EXSCAN: Partielle Ergebnisse werden auf die Tasks verteilt

Vordefinierte Reduktions-Operationen Parallelrechner-Programmierung mit MPI2207. – Name Meaning MPI_MAX maximum MPI_MIN minimum MPI_SUM sum MPI_PROD product MPI_LAND logical and MPI_BAND bit-wise and MPI_LOR logical or MPI_BOR bit-wise or MPI_LXOR logical exclusive or (xor) MPI_BXOR bit-wise exclusive or (xor) MPI_MAXLOC max value and location MPI_MINLOC min value and location

A0 op A0 op A0 A1 op A1 op A1 Reduktions-Operationen Parallelrechner-Programmierung mit MPI2307. – MPI_REDUCE( sendbuf, recvbuf, count, datatype, op, root, comm) IN sendbuf address of send buffer (choice) OUT recvbuf address of receive buffer (choice, significant only at root) IN count number of elements in send buffer (non-negative integer) IN datatype data type of elements of send buffer (handle) IN op reduce operation (handle) IN root rank of root process (integer) IN comm communicator (handle) Task 0 Task 1 (root) Task 2 sendbuf recvbufbuf A0 A1

A0 op A0 op A0 A1 op A1 op A1 Reduktions-Operationen Parallelrechner-Programmierung mit MPI2407. – MPI_ALLREDUCE( sendbuf, recvbuf, count, datatype, op, comm) Task 0 Task 1 Task 2 sendbuf recvbufbuf A0 A1 A0 op A0 op A0 A1 op A1 op A1

Reduktions-Operationen Parallelrechner-Programmierung mit MPI2507. – MPI_REDUCE_SCATTER( sendbuf, recvbuf, recvcounts, datatype, op, comm) IN sendbuf starting address of send buffer (choice) OUT recvbuf starting address of receive buffer (choice) IN recvcounts non-negative integer array (of length group size) specifying the number of elements of the result distributed to each process. IN datatype data type of elements of send and receive buffers (handle) IN op operation (handle) IN comm communicator (handle)

A0 A1 A2 A3 A4 A5 Max(A2, A2,A2 ) Max(A3, A3,A3) Reduktions-Operationen Parallelrechner-Programmierung mit MPI2607. – MPI_REDUCE_SCATTER_BLOCK( sendbuf, recvbuf, recvcount, datatype, op, comm) z.B. recvcount = 2, op = MPI_MAX Task 0 Task 1 Task 2 sendbuf recvbufbuf Max(A0, A0,A0) Max(A1, A1,A1) Max(A4, A4,A4) Max(A5, A5,A5)A0 A1 A2 A3 A4 A5

A0 op A0 A1 op A1 Reduktions-Operationen Parallelrechner-Programmierung mit MPI2707. – MPI_SCAN( sendbuf, recvbuf, count, datatype, op, comm) Task 0 Task 1 Task 2 sendbuf recvbufbuf A0 A1 A0 op A0 op A0 A1 op A1 op A1