Funktionsübersicht
. .
Nicht-blockierende Kommunikation
Hilfesystem für den Message Passing Interface Standard MPI
MPI_Issend
Startet eine nicht-blockierende synchrone Sendeoperation
Syntax:
MPI_Issend(buf, count, datatype, dest, tag, comm, request)
Input Parameter:
buf - Anfangsadresse des Sendepuffers
count - Anzahl der Elemente des Sendepuffers (integer,
nichtnegativ)
datatype - Typ der Elemente des Sendepuffers (handle)
dest - Rang des Empfängerprozesses in comm (integer)
tag - message tag zur Unterscheidung verschiedener Nachrichten
(integer);
Ein Kommunikationsvorgang wird durch ein Tripel (Sender, Empfänger, tag)
eindeutig beschrieben.
comm - Kommunikator (handle)
Output Parameter
request - Request-Objekt; wird benötigt, um die Sendeoperation zu
beenden (handle)
Anmerkung:
Das Ende der Sendeoperation kann mit MPI_Wait abgewartet
oder mit MPI_Test getestet werden. Erst nach dem
Beenden dürfen die Daten im Sendepuffer modifiziert werden. Dann ist ausserdem
garantiert, dass mit dem Kopieren von Daten in den Empfangspuffer zumindest
begonnen wurde.
Aufruf:
#include "mpi.h"
int count;
void *buf;
MPI_Datatype datatype;
MPI_Comm comm;
MPI_Request request;
MPI_Status status;
...
MPI_Issend(buf, count, datatype, 1, 0, comm, &request);
... Berechnung ...
MPI_Wait(&request, &status);
...