exkurs: paralleles rechnen - uni-muenster.de · 2013. 12. 10. · exkurs: paralleles rechnen 11/27...

42
Exkurs: Paralleles Rechnen Christian Engwer December 2, 2013 wissen leben WWU M¨ unster Westf¨ alische Wilhelms-Universit¨ at unster

Upload: others

Post on 27-Mar-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

Exkurs: Paralleles Rechnen

Christian Engwer December 2, 2013wissen lebenWWU Munster

WestfalischeWilhelms-UniversitatMunster

Page 2: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 2 /27

Warum parallel Rechnen ?

,,

Christian Engwer

Page 3: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 2 /27

Warum parallel Rechnen ?

JUQUEEN, FZ Julich, Platz 8 weltweit

,,

Christian Engwer

Page 4: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 2 /27

Warum parallel Rechnen ?

nur etwas fur spezial Anwendungen!

JUQUEEN, FZ Julich, Platz 8 weltweit

,,

Christian Engwer

Page 5: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 2 /27

Warum parallel Rechnen ?

wirklich?!

JUQUEEN, FZ Julich, Platz 8 weltweit

,,

Christian Engwer

Page 6: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 2 /27

Warum parallel Rechnen ?

Parallelrechner gibt es uberall!

,,

Christian Engwer

Page 7: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 3 /27

Wie hilft paralleles Rechnen ?I Nebenlaufigkeit

I Abarbeitung mehrerer Prozesse auf einem ProzessorI Multi-Tasking Betriebssysteme seit den 60er JahrenI Bedienung mehrerer Gerate und BenutzerI Ziel: Steigerung der AuslastungI “Hyperthreading”: Nutze Wartezeiten des ProzessorsI “Multi-Core” / “Multi-Processor”I Mehrere Dinge gleichzeitig: Web-Browser, DesktopI Koordinationsproblematik tritt bereits hier auf

I Verteilte AnwendungenI Datenbasis ist inharent verteilt: betriebswirtschaftliche

Software, Warenfluß in großen UnternehmenI Hier wichtig: plattformubergreifende Kommunikation,

Client-Server ArchitekturenI Auch wichtig: Sicherheit, VPN, etc. (behandeln wir nicht)

,,

Christian Engwer

Page 8: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 4 /27

Nicht mehr schneller, sondern mehr!

Kathy Yelick: Ten Ways to Waste a Parallel Computer

Keynote ISCA 2009. The 36th International Symposium on Computer Architecture (mit Daten von Kunle Olukotun, Lance

Hammond, Herb Sutter, Burton Smith, Chris Batten und Krste Asanovic)

,,

Christian Engwer

Page 9: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 5 /27

Zahl der Cores pro System wachst sehr schnell

,,

Christian Engwer

Page 10: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 6 /27

Es gibt sehr verschiedene Parallelrechner

I IBM BlueGene QI z.B. JUQUEEN im FZ Julich (Platz 8 weltweit)I einige unter den TOP 500

,,

Christian Engwer

Page 11: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 6 /27

Es gibt sehr verschiedene Parallelrechner

I 4× 12 Core AMD-OpteronI kann sich auch die Mathematik leisten ;-)

,,

Christian Engwer

Page 12: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 6 /27

Es gibt sehr verschiedene Parallelrechner

I Nvidia Geforce GTX 680I 1536 StreamprozessorenI 22. Marz 2012

,,

Christian Engwer

Page 13: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 6 /27

Es gibt sehr verschiedene Parallelrechner

I MobiltelefoneI Multi-Core ProzessorenI z.B. links: Android-Handy mit 1,5 GHz Dual-Core-CPU (∼ 300e)I rechts: Quad-Core Smartphone

,,

Christian Engwer

Page 14: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 7 /27

Paralleles Rechnen zur Wettersimulation

I Erste Idee eines Parallelrechners zur Wettervorhersagestammt von Lewis Fry Richardson

I Buch: Weather Prediction by Arithmetical Finite Differences(1916)

I An einzelnen Messpunkten werden Wetterdaten in versch.Hohen erhoben

I 64000 Messpunkte uber die Erde verteiltI Auflosung ca. 100 kmI Jeder Messpunkt sollte von einem Computer ausgewertet

werdenI Vorhersage fur den Folgetag

I Wurde nie umgesetzt, und hatte so auch nicht funktioniert

,,

Christian Engwer

Page 15: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 7 /27

Paralleles Rechnen zur Wettersimulation

I Erste Idee eines Parallelrechners zur Wettervorhersagestammt von Lewis Fry Richardson

I Buch: Weather Prediction by Arithmetical Finite Differences(1916)

I An einzelnen Messpunkten werden Wetterdaten in versch.Hohen erhoben

I 64000 Messpunkte uber die Erde verteiltI Auflosung ca. 100 kmI Jeder Messpunkt sollte von einem Computer ausgewertet

werdenI Vorhersage fur den FolgetagI Wurde nie umgesetzt, und hatte so auch nicht funktioniert

,,

Christian Engwer

Page 16: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 7 /27

Paralleles Rechnen zur Wettersimulation

Heute:I Deutscher Wetterdienst

I NEC SX-9 Vectorrechner (seit2009)

I ca. 11 TFlopsI Auflosung von 2,8 km

I EarthsimulatorI Japanischer SupercomputerI Klimasimulationen der gesamten

ErdeI Fuhrte von 2002 bis 2004 die

TOP 500 anI Upgrade 2009

,,

Christian Engwer

Page 17: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 7 /27

Paralleles Rechnen zur Wettersimulation

Heute:I Deutscher Wetterdienst

I NEC SX-9 Vectorrechner (seit2009)

I ca. 11 TFlopsI Auflosung von 2,8 km

I EarthsimulatorI Japanischer SupercomputerI Klimasimulationen der gesamten

ErdeI Fuhrte von 2002 bis 2004 die

TOP 500 anI Upgrade 2009

,,

Christian Engwer

Page 18: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI
Page 19: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 8 /27

Konzepte fur Parallelrechner

P

C

Verbindungsnetzwerk

Speicher M

P

C

P

C

I Gemeinsamer SpeicherI Verteilter Speicher

,,

Christian Engwer

Page 20: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 8 /27

Konzepte fur Parallelrechner

Verbindungsnetzwerk

P C M P C M

I Gemeinsamer SpeicherI Verteilter Speicher

,,

Christian Engwer

Page 21: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI
Page 22: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 9 /27

MPI: Message Passing Interface

I Portable Bibliothek zum NachrichtenaustauschI Wurde 1993-94 durch ein intern. Gremium entwickeltI 1997 wurde der Standard uberarbeitet (MPI2)I Open-Source Implementieren gibt beispielweise von:MPICH1 und OpenMPI2

I Eigenschaften von MPI:I Direkte Anbindung an C, C++ und FortranI verschiedene Arten von Punkt-zu-Punkt KommunikationI globale KommunikationI Daten Umwandlung in heterogenen SystemenI Virtuelle Netze & Topologien moglich

1http://www-unix.mcs.anl.gov/mpi/mpich

2http://www.open-mpi.org/

,,

Christian Engwer

Page 23: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 10 /27

Hello World

1 #include <mpi.h>

#include <iostream >

3

int main(int argc , char **argv)

5 {

int *buf , i, rank , nints , len;

7 char hostname [256];

9 MPI_Init (&argc ,&argv);

MPI_Comm_rank(MPI_COMM_WORLD , &rank);

11 gethostname(hostname ,255);

std::cout << "Hello world! I am process number: " << rank

13 << " on host " << hostname << std::endl;

MPI_Finalize ();

15 return 0;

}

,,

Christian Engwer

Page 24: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 11 /27

Kompilieren eines Programms

I Das Beispiel ist im SPMD-Stil geschrieben; der MPI Standardlegt dies nicht fest und man kann auch andere Paradigmenverwenden.

I Kompilieren eines MPI C-Programmes und starten mit 8Prozessen:

mpicc -o hello hello.c

mpirun -machinefile machines -np 8 hello

Die Liste der Computer steht in der Datei machines.

Fur C++ Programme heisst der Compiler

mpicxx -o hello hello.cc

,,

Christian Engwer

Page 25: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 12 /27

Initialisierung und Beenden

Bevor irgend ein MPI Befehl aufgerufen werden darf, muss MPI mitMPI_Init initialisiert werden, damit MPI das parallele Programmstarten kann.

int MPI_Init(int *argc , char *** argv)

Nach dem letzten MPI Aufruf wird MPI_Finalize ausgefuhrt, umalles Prozesse ordentlich zu beenden.

int MPI_Finalize(void)

,,

Christian Engwer

Page 26: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 13 /27

Kommunikator

MPI erlaubt es Kommunikation auf einem Subset der gestartenProzesse durchzufuhren, indem virtuelle Netzwerke, sogenannteKommunikatoren, angelegt werden.

I MPI Comm beschreibt einen Kommunikator, eine Menge von Prozessen{0, . . . , P − 1}.

I Des vordefinierte Netzwerk MPI COMM WORLD enthalt alle gestartenProzesse.

I Virtuelle Topologien: Ein Kommunikator kann zusatzlich eine spezielleStruktur erhalten, z.B. ein mehrdimensionales Feld, oder ein allgemeinerGraph.

I Kontext: Jeder Kommunikator definiert seinen eigenenKommunikationskontext.

,,

Christian Engwer

Page 27: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 14 /27

Rank und Size

Die Anzahl der Prozesse in einem Kommunikator wird mit MPI_Comm_sizebestimmt:

int MPI_Comm_size(MPI_Comm comm , int *size)

Innerhalb eines Kommunikators hat jeder Prozess eine eindeutige Nummer,diese wird mit MPI_Comm_rank bestimmt:

int MPI_Comm_rank(MPI_Comm comm , int *rank)

,,

Christian Engwer

Page 28: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 15 /27

Beispiel (I)

1 #include <stdio.h>

#include <string.h>

3 #include <mpi.h> // provides MPI macros and functions

5 int main (int argc , char *argv [])

{

7 int my_rank;

int P;

9 int dest;

int source;

11 int tag =50;

char hostname [256];

13 MPI_Status status;

15 MPI_Init (&argc ,&argv); // begin of every MPI program

MPI_Comm_size(MPI_COMM_WORLD ,&P); // number of processes

17 MPI_Comm_rank(MPI_COMM_WORLD ,& my_rank ); // my process number

gethostname(hostname ,255);

,,

Christian Engwer

Page 29: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 16 /27

Beispiel (II)

20 // number of current process always between 0 and P-1

if (my_rank !=0) {

22 dest = 0;

MPI_Send(hostname ,strlen(hostname )+1,MPI_CHAR , // Send data

24 dest ,tag ,MPI_COMM_WORLD ); // (blocking)

}

26 else {

for (source =1; source <P; source ++)

28 {

MPI_Recv(hostname ,256, MPI_CHAR ,source ,tag , // Receive data

30 MPI_COMM_WORLD ,& status ); // (blocking)

std::cout << "Reveived a message from process " << source

32 << " on machine " << hostname << std::endl;

}

34 }

36 MPI_Finalize (); // end of every MPI program

return 0;

38 },,

Christian Engwer

Page 30: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 17 /27

Ausgabe des Beispielprogramms (mit P=8)

> mpirun -machinefile machines -np 8 ./mpi-name

Reveived a message from process 1 on machine SCHAF03

Reveived a message from process 2 on machine SCHAF05

Reveived a message from process 3 on machine SCHAF07

Reveived a message from process 4 on machine SCHAF11

Reveived a message from process 5 on machine SCHAF13

Reveived a message from process 6 on machine SCHAF14

Reveived a message from process 7 on machine SCHAF15

,,

Christian Engwer

Page 31: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 18 /27

Blockierende KommunikationDie Entsprechung zu send und recv bieten

int MPI_Send(void *message , int count , MPI_Datatype dt ,

2 int dest , int tag , MPI_Comm comm);

int MPI_Recv(void *message , int count , MPI_Datatype dt ,

4 int src , int tag , MPI_Comm comm ,

MPI_Status *status );

Die ersten drei Parameter message, count und dt beschreiben die eigentlichenDaten. message ist ein Zeiger auf ein Feld mit count Elementen des Typs dt. DieAngabe des Datentyps erlaubt die automatische Umwandlung durch MPI. DieParameter dest, tag und comm beschreiben das Ziel bzw. die Quelle derNachricht.

MPI bietet verschiedene Varianten von MPI Send (MPI BSend, MPI SSend,MPI RSend), die wir aber jetzt nicht weiter diskutieren wollen.MPI ANY SOURCE und MPI ANY TAG konnen verwendet werden, um belibigeNachrichten zu empfangen. Damit enthalt MPI Recv die Funktionalitat vonrecv any.

,,

Christian Engwer

Page 32: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 18 /27

Blockierende KommunikationDie Entsprechung zu send und recv bieten

1 int MPI_Send(void *message , int count , MPI_Datatype dt ,

int dest , int tag , MPI_Comm comm);

3 int MPI_Recv(void *message , int count , MPI_Datatype dt ,

int src , int tag , MPI_Comm comm ,

5 MPI_Status *status );

Die ersten drei Parameter message, count und dt beschreiben die eigentlichenDaten. message ist ein Zeiger auf ein Feld mit count Elementen des Typs dt. DieAngabe des Datentyps erlaubt die automatische Umwandlung durch MPI. DieParameter dest, tag und comm beschreiben das Ziel bzw. die Quelle derNachricht.MPI bietet verschiedene Varianten von MPI Send (MPI BSend, MPI SSend,MPI RSend), die wir aber jetzt nicht weiter diskutieren wollen.

MPI ANY SOURCE und MPI ANY TAG konnen verwendet werden, um belibigeNachrichten zu empfangen. Damit enthalt MPI Recv die Funktionalitat vonrecv any.

,,

Christian Engwer

Page 33: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 18 /27

Blockierende KommunikationDie Entsprechung zu send und recv bieten

1 int MPI_Send(void *message , int count , MPI_Datatype dt ,

int dest , int tag , MPI_Comm comm);

3 int MPI_Recv(void *message , int count , MPI_Datatype dt ,

int src , int tag , MPI_Comm comm ,

5 MPI_Status *status );

Die ersten drei Parameter message, count und dt beschreiben die eigentlichenDaten. message ist ein Zeiger auf ein Feld mit count Elementen des Typs dt. DieAngabe des Datentyps erlaubt die automatische Umwandlung durch MPI. DieParameter dest, tag und comm beschreiben das Ziel bzw. die Quelle derNachricht.MPI bietet verschiedene Varianten von MPI Send (MPI BSend, MPI SSend,MPI RSend), die wir aber jetzt nicht weiter diskutieren wollen.MPI ANY SOURCE und MPI ANY TAG konnen verwendet werden, um belibigeNachrichten zu empfangen. Damit enthalt MPI Recv die Funktionalitat vonrecv any.

,,

Christian Engwer

Page 34: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 19 /27

Datenumwandlung

MPI erlaubt die Verwendung in heterogenen Netzen. Hierbei ist esnotig manche Daten an die Darstellung auf der fremdenArchitektur anzupassen.

MPI definiert die architektur-unabhangigen Datentypen:

MPI CHAR, MPI UNSIGNED CHAR, MPI BYTEMPI SHORT, MPI INT, MPI LONG, MPI LONG LONG INT,MPI UNSIGNED, MPI UNSIGNED SHORT, MPI UNSIGNED LONG,MPI FLOAT, MPI DOUBLE and MPI LONG DOUBLE.

Der MPI Datentyp MPI BYTE wird nie konvertiert.

,,

Christian Engwer

Page 35: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 20 /27

Status

1 typedef struct {

int count;

3 int MPI_SOURCE;

int MPI_TAG;

5 int MPI_ERROR;

} MPI_Status;

MPI_Status ist ein zusammengesetzter Datentyp, derInformationen uber die Anzahl der empfangenen Objekte, denQuellprozess, das Tag und den Fehlerstatus enhalt.

,,

Christian Engwer

Page 36: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 21 /27

Guard Funktion

Die Guard Funktion rprobe liefert

int MPI_Iprobe(int source , int tag , MPI_Comm comm ,

2 int *flag , MPI_Status *status );

Es ist eine nicht-blockierende Funktion, die uberpruft, ob eineNachricht vorliegt. flag erhalt den Wert true (6= 0) wenn eineNachricht mit passendem source und tag empfangen werdenkann. Auch hier konnen MPI ANY SOURCE und MPI ANY TAG

verwendet werden.

,,

Christian Engwer

Page 37: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 22 /27

Non-blocking Communication

Die Funktionen asend und arecv bietet MPI als

int MPI_ISend(void *buf , int count , MPI_Datatype dt ,

2 int dest , int tag , MPI_Comm comm ,

MPI_Request *req);

4 int MPI_IRecv(void *buf , int count , MPI_Datatype dt ,

int src , int tag , MPI_Comm comm ,

6 MPI_Request *req);

MPI Request speichert den Status einer Kommunikation, wieunsere msgid.

,,

Christian Engwer

Page 38: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 23 /27

MPI Request-Objekte

Der Status einer Nachricht kann mit Hilfe derMPI Request-Objekte und folgender Funktion gepruft werden:

int MPI_Test(MPI_Request *req , int *flag ,

2 MPI_Status *status );

flag wird auf true (6= 0) gesetzt, wenn die Kommunikation, diereq beschreibt abgeschlossen ist. In diesem Fall enthalt statusweitere Informationen.

,,

Christian Engwer

Page 39: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 24 /27

Globale Kommunikation

MPI bietet ebenfalls Funktionen zur globalen Kommunikation,welche alle Prozesse eines Kommunikators einschließen.

int MPI_Barrier(MPI_Comm comm);

implementiert eine Barriere; alle Prozesse werden blockiert, bisder letzte Prozess die Funktion ausgefuhrt hat.

1 int MPI_Bcast(void *buf , int count , MPI_Datatype dt ,

int root , MPI_Comm comm);

verteilt eine Nachricht an alle Prozesse eine Kommunikators(Einer-an-Alle Kommunikation).

,,

Christian Engwer

Page 40: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 25 /27

Einsammeln von Daten

MPI hat eine Reihe verschiedener Funktionen um Daten vonverschiedenen Prozessen einzusammeln. Z.B:

int MPI_Reduce(void *sbuf , void *rbuf , int count ,

2 MPI_Datatype dt , MPI_Op op , int root ,

MPI_Comm comm);

kombiniert die Daten im Sende-Puffer sbuf aller Prozesse durchdie assoziative Operation op (z.B. MPI SUM, MPI MAX oderMPI MIN). Das Ergebnis erhalt der Prozesse root in seinenEmpfang-Puffer rbuf.

,,

Christian Engwer

Page 41: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 26 /27

Zeitmessung

MPI bietet direkt Funktionen zur Zeitmessung:

1 double MPI_Wtime ();

Der Ruckgabewert sind Sekunden seit einem ,,beliebigen”Zeitpunkt in der Vergangenheit. Die Zeit fur eine spezielleOperation laßt sich also mit

1 double start = MPI_Wtime ();

expensive_funktion ();

3 std::cout << "elapsed time = "

<< MPI_Wtime () - start << std::endl;

bestimmen.

,,

Christian Engwer

Page 42: Exkurs: Paralleles Rechnen - uni-muenster.de · 2013. 12. 10. · Exkurs: Paralleles Rechnen 11/27 Kompilieren eines Programms I Das Beispiel ist im SPMD-Stil geschrieben; der MPI

wis

sen

lebe

nW

WU

Mun

ster

WestfalischeWilhelms-UniversitatMunster Exkurs: Paralleles Rechnen 27 /27

Weitere Informationen

MPI: Dokumentation der verschiedenen Message-PassingInterface Standardshttp://www.mpi-forum.org/docs/

MPICH-A Portable Implementation of MPIhttp://www-unix.mcs.anl.gov/mpi/mpich

Open MPI: Open Source High Performance Computinghttp://www.open-mpi.org/

Liste von MPI Tutorialshttp://www-unix.mcs.anl.gov/mpi/tutorial/

,,

Christian Engwer