diff --git a/documents/Programmierparadigmen/Parallelitaet.tex b/documents/Programmierparadigmen/Parallelitaet.tex index 88fa249..9e2a8b2 100644 --- a/documents/Programmierparadigmen/Parallelitaet.tex +++ b/documents/Programmierparadigmen/Parallelitaet.tex @@ -184,4 +184,23 @@ Interessante Stichwörder sind noch: \item Interface Callable \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|)} \ No newline at end of file diff --git a/documents/Programmierparadigmen/Programmierparadigmen.pdf b/documents/Programmierparadigmen/Programmierparadigmen.pdf index 8cc5ec7..7d49965 100644 Binary files a/documents/Programmierparadigmen/Programmierparadigmen.pdf and b/documents/Programmierparadigmen/Programmierparadigmen.pdf differ diff --git a/documents/Programmierparadigmen/scripts/mpi/comm-rank-example.c b/documents/Programmierparadigmen/scripts/mpi/comm-rank-example.c index ec82925..0f5863b 100644 --- a/documents/Programmierparadigmen/scripts/mpi/comm-rank-example.c +++ b/documents/Programmierparadigmen/scripts/mpi/comm-rank-example.c @@ -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 ... - } \ No newline at end of file +... +MPI_Comm_rank(comm, &rank); +if (rank==0) { + ... Code fur Prozess 0 ... +} +else { + ... Code fur die anderen Prozesse ... +} \ No newline at end of file diff --git a/documents/Programmierparadigmen/scripts/mpi/comm-size-example.c b/documents/Programmierparadigmen/scripts/mpi/comm-size-example.c index bae79de..956c904 100644 --- a/documents/Programmierparadigmen/scripts/mpi/comm-size-example.c +++ b/documents/Programmierparadigmen/scripts/mpi/comm-size-example.c @@ -1,7 +1,7 @@ #include "mpi.h" - int size; - MPI_Comm comm; - ... - MPI_Comm_size(comm, &size); - ... \ No newline at end of file +int size; +MPI_Comm comm; +... +MPI_Comm_size(comm, &size); +... \ No newline at end of file diff --git a/documents/Programmierparadigmen/scripts/mpi/mpi-reduce-example.c b/documents/Programmierparadigmen/scripts/mpi/mpi-reduce-example.c index 5e3ad3e..7060d91 100644 --- a/documents/Programmierparadigmen/scripts/mpi/mpi-reduce-example.c +++ b/documents/Programmierparadigmen/scripts/mpi/mpi-reduce-example.c @@ -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); - ... \ No newline at end of file +... +/* Minimum bilden */ +MPI_Reduce(sendbuf, recvbuf, DATA_SIZE, MPI_INT, MPI_MIN, + 0, MPI_COMM_WORLD); +... \ No newline at end of file