mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-24 22:08:04 +02:00
MPI
This commit is contained in:
parent
b0bddad82f
commit
420b6b31fd
5 changed files with 41 additions and 22 deletions
|
@ -184,4 +184,23 @@ Interessante Stichwörder sind noch:
|
|||
\item Interface Callable<V>
|
||||
\end{itemize}
|
||||
|
||||
\section{Message Passing Modell}
|
||||
Das Message Passing Modell ist eine Art, wie man parallel laufende Programme
|
||||
schreiben kann. Dabei tauschen die Prozesse Nachrichten aus um die Arbeit zu
|
||||
verteilen.
|
||||
|
||||
Ein wichtiges Konzept ist hierbei der \textit{Kommunikator}\xindex{Kommunikator}.
|
||||
Ein Kommunikator definiert eine Gruppe von Prozessen, die mit einander kommunizieren
|
||||
können. In dieser Gruppe von Prozessen hat jeder Prozesse einen eindeutigen
|
||||
\textit{Rang}\xindex{Rang}, den sie zur Kommunikation nutzen.
|
||||
|
||||
Die Grundlage der Kommunikation bilden \textit{send} und \textit{receive} Operationen.
|
||||
Prozesse schicken Nachrichten an andere Prozesse, indem sie den eindeutigen Rang
|
||||
und einen \textit{tag} angeben, der die Nachricht identifiziert.
|
||||
|
||||
Wenn ein Prozess mit einem einzigen weiteren Prozess kommuniziert, wird dies
|
||||
\textit{Punkt-zu-Punkt-Kommunikation}\xindex{Punkt-zu-Punkt-Kommunikation} genannt.
|
||||
|
||||
Wenn ein Prozess allen anderen eine Nachricht schickt, nennt man das \textit{Broadcast}\xindex{Broadcast}.
|
||||
|
||||
\index{Parallelität|)}
|
Binary file not shown.
|
@ -1,13 +1,13 @@
|
|||
#include "mpi.h"
|
||||
|
||||
int rank;
|
||||
MPI_Comm comm;
|
||||
int rank;
|
||||
MPI_Comm comm;
|
||||
|
||||
...
|
||||
MPI_Comm_rank(comm, &rank);
|
||||
if (rank==0) {
|
||||
... Code fur Prozess 0 ...
|
||||
}
|
||||
else {
|
||||
... Code fur die anderen Prozesse ...
|
||||
}
|
||||
...
|
||||
MPI_Comm_rank(comm, &rank);
|
||||
if (rank==0) {
|
||||
... Code fur Prozess 0 ...
|
||||
}
|
||||
else {
|
||||
... Code fur die anderen Prozesse ...
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
#include "mpi.h"
|
||||
|
||||
int size;
|
||||
MPI_Comm comm;
|
||||
...
|
||||
MPI_Comm_size(comm, &size);
|
||||
...
|
||||
int size;
|
||||
MPI_Comm comm;
|
||||
...
|
||||
MPI_Comm_size(comm, &size);
|
||||
...
|
|
@ -1,10 +1,10 @@
|
|||
#include "mpi.h"
|
||||
|
||||
int myid;
|
||||
int recvbuf[DATASIZE], sendbuf[DATA_SIZE];
|
||||
int myid;
|
||||
int recvbuf[DATASIZE], sendbuf[DATA_SIZE];
|
||||
|
||||
...
|
||||
/* Minimum bilden */
|
||||
MPI_Reduce(sendbuf, recvbuf, DATA_SIZE, MPI_INT, MPI_MIN,
|
||||
0, MPI_COMM_WORLD);
|
||||
...
|
||||
...
|
||||
/* Minimum bilden */
|
||||
MPI_Reduce(sendbuf, recvbuf, DATA_SIZE, MPI_INT, MPI_MIN,
|
||||
0, MPI_COMM_WORLD);
|
||||
...
|
Loading…
Add table
Add a link
Reference in a new issue