GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Allgemeine Datentypen Oswald Haan

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

der Universität Oldenburg
Java: Dynamische Datentypen
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
2.2 Definition eines Datenbankschemas (SQL-DDL)
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
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI – Oswald Haan
Einführung in die Programmiersprache C 4
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Dynamische Datentypen
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Kollektive Operationen Oswald Haan
Programmieren in C Grundlagen C 2
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
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
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Punkt-zu-Punkt-Kommunikation Oswald Haan
Vordefinierte Datentypen (1)
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
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
? Stichwortverzeichnis … zum Suchen
Einführung in Web- und Data-Science Grundlagen der Stochastik
8 Zündung/Motormanagement
MasterBAV© Die neue Generation BAV
Rehwild die richtige Altersbestimmung
Wissensmanagement im Zeitalter von Digitaler Transformation
«Wir bereiten uns auf die Deutschlandreise vor»
Liebe BetrachterInnen,
175 Jahre UZH Krisenkommunikation
Frauen- Männerriegen KONFERENZ
Einführung in die Benutzung des Einkaufportals der Eckelmann AG
Wer wir sind! Ihr S-Campus-Team direkt im Campus Center. Sven Deussing
Amand Fäßler 3. Januar 2017; RC Bregenz
VO Aktuelle Forschung in der Biomechanik Ziel:
„Status cw-linac“ Motivation Timeline and status Testing of components
Vorlesung Wasserwirtschaft & Hydrologie I
Algorithmen und Datenstrukturen
Vorlesungseinheit 6 – Prüfung von Zusammenschlüssen auf ihre Vereinbarkeit mit dem Gemeinsamen Markt (Art. 2 FKVO)
Metrik Sondermaschinenbau e. K.
WOOD VETIA.
Jahresablauf und Wetter
Web Scale Discovery Service
Gebäude-Systemtechnik von ABB IP-Gateway
Vorlesung Wasserwirtschaft & Hydrologie I
Vorlesung Eigenspannungen in Bauteilen und Werkstoffen
Industrie 4.0 für Auszubildende
Definition/Allgemeines:
ɣ brain to write Erklärung des Rauschens Experimente
Projekt 01: LCR-Meter Jonas Krieger und Armin Zörkler SS 2017
Micro Vertex Detector of PANDA Strip Detector
Evaluation & Forschungsstrategien
Preprocessing Ein wenig Theorie der astronomischen Bildvorverarbeitung. „Es gibt nichts Praktischeres als eine gute Theorie.“ (D.Hilbert, I.Kant, K. Lewin)
Algorithmen und Datenstrukturen
Studien zu Baryonen-Resonanzen in Charmonia-Zerfällen
Non-Standard-Datenbanken
Das Standardmodell der Teilchenphysik im Schulunterricht
Bekannte Formeln aus der Mathematik
Evidenz Dunkler Materie
 Präsentation transkript:

GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Allgemeine Datentypen Oswald Haan

Motivation Bisher: Austausch von Nachrichten, bestehend aus n aufeinanderfolgenden Elementen des gleichen vordefinierten Basis-Datentyps: MPI_SEND(sbuf, n, MPI_INTEGER, …) Allgemeiner: Austausch von Nachrichten, bestehend aus beliebig liegende Elemente mit unterschiedlichen Datentypen MPI_xxx(sbuf, n, MPI_yyy, … Parallelrechner-Programmierung mit MPI223. –

Datenobjekt aus m Daten, definiert durch Sequenz von Datentypen : typ0, typ1, … Sequenz von Adressabständen in Byte der Daten von der Basisadresse buf : disp0, disp1, … Adresse des i-ten Datums:buf + dispi Typ des i-ten Datums: typi Die Abstände können positiv, null oder negativ sein, Überlappung und Wiederholung sind möglich Die Konstruktion kann rekursiv eingesetzt werden Parallelrechner-Programmierung mit MPI323. – Abgeleiteter Datentyp

MPI_TYPE_CREATE_STRUCT(count, array_of_blocklengths, array_of_displacements, array_of_types, newtype) IN count number of blocks (non-negative integer) IN array_of_blocklength number of elements in each block (array of non-negative integer) IN array_of_displacements byte displacement of each block (array of integer) IN array_of_types type of elements in each block (array of handles to datatype objects) OUT newtype new datatype (handle) Parallelrechner-Programmierung mit MPI423. – Abgeleiteter Datentyp Newtype :

Beispiel MPI_R8_I4 Datentyp bestehend aus REAL*8 und INTEGER*4 Parallelrechner-Programmierung mit MPI523. – Abgeleiteter Datentyp R8 Größe: 16 Byte, wegen Alignement bl(0) = 1; bl(1) = 1; dp(0) = 0; dp(1) = 8; ty(0) = MPI_DOUBLE_PRECISION, ty(1) = MPI_INTEGER call MPI_TYPE_CREATE_STRUCT( 2, bl, dp, ty, MPI_R8_I4, ierr) Erzeugt abgeleiteten Datentyp MPI_R8_I4 I4

MPI_TYPE_CONTIGUOUS(count, oldtype, newtype) IN count replication count (non-negative integer) IN oldtype old datatype (handle) OUTnewtype new datatype (handle) Parallelrechner-Programmierung mit MPI623. – Datentyp CONTIGUOUS Newtype :

Beispiel MPI_CONTIGUOUS4, Datentyp bestehend aus aufeinanderfolgenden 4 REAL*8 Zahlen Parallelrechner-Programmierung mit MPI723. – Datentyp CONTIGUOUS R8 Größe: 32 Byte call MPI_TYPE_CONTIGUOUS( 4, MPI_DOUBLE_PRECISION, MPI_CONTIGUOUS4, ierr) Erzeugt abgeleiteten Datentyp MPI_CONTIGUOUS4 R8

Abgeleitete Datantypen können in allen Kommunikationsroutinen anstelle der vordefinierten Basis-Typen verwendet werden. Sie müssen vorher durch MPI_TYPE_COMMIT angemeldet und hinterher durch MPI_MPI_TYPE_FREE wieder abgemeldet werden MPI_TYPE_xxx(…, MPI_NEWTYPE,… ) MPI_TYPE_COMMIT( MPI_NEWTYPE ) … Aufrufe von Kommunikationsroutinen mit Datentyp MPI_NEWTYPE … MPI_TYPE_FREE(MPI_NEWTYPE ) Parallelrechner-Programmierung mit MPI 823. – Verwendung Abgeleiteter Datentypen

Ersetze in allen Tasks die Elemente v(100),..,v(103) durch die auf tasks id 0 gespeicherten Werte Double precision vec(100) Call MPI_TYPE_CONTIGUOUS( 4, MPI_DOUBLE_PRECISION, MPI_CONTIGUOUS4, ierr ) call MPI_TYPE_COMMIT( MPI_DPVECTOR4, ierr) call MPI_BCST( vec(100), 1, MPI_CONTIGUOUS4, 0, MPI_COMM_WORLD, ierr ) MPI_TYPE_FREE(MPI_CONTIGUOUS4 ) Parallelrechner-Programmierung mit MPI 923. – Verwendung von MPI_CONTIGUOUS4

Versende aus einer Matrix mat der Größe 100 x 100 die beim Element (20,30) liegende Submatrix der Größe 4 x 10 double precision mat(100,100) integer MPI_SUBMAT4x10 Call MPI_TYPE_VECTOR( 10, 4, 100,MPI_DOUBLE_PRECISION, MPI_SUBMAT4x10, ierr ) call MPI_TYPE_COMMIT( MPI_SUBMAT4x10, ierr) call MPI_BCST( mat(20,30), 1, MPI_SUBMAT4x10, 0, MPI_COMM_WORLD, ierr ) MPI_TYPE_FREE(MPI_SUBMAT4x10 ) Parallelrechner-Programmierung mit MPI – Verwendung von TYPE_VECTOR (20,30)

MPI_TYPE_VECTOR( count, blocklength, stride, oldtype, newtype) IN count number of blocks (non-negative integer) IN blocklength number of elements in each block (non-negative integer) IN stride number of elements between start of each block (integer) IN oldtype old datatype (handle) OUT newtype new datatype (handle) Parallelrechner-Programmierung mit MPI1123. – Datentyp VECTOR Newtype :