Funktionsübersicht . . Senderoutinen . . Nicht-blockierende Kommunikation

Hilfesystem für den Message Passing Interface Standard MPI


MPI_Bsend_init

Liefert ein handle für eine gepufferte Sendeoperation

Syntax:

Input Parameter:

Output Parameter Wichtig: Der Aufruf von MPI_Rsend_init löst keinerlei Kommunikation aus.

Anmerkung:

Sinn und Zweck dieser Funktion besteht darin, bei wiederkehrenden Sendeoperationen mit gleicher Parameterliste Overhead einzusparen. Das eigentliche Senden wird mit MPI_Start gestartet. Erst nach Beendigung der Sendeoperation dürfen die Daten im Sendepuffer modifiziert werden.

Aufruf:


#include "mpi.h"

    int           count, dest, tag, n, i, dummysize;
    void          *buf, *dummy;
    MPI_Datatype  datatype;
    MPI_Comm      comm;
    MPI_Request   request;
    MPI_Status    status;

    ...
    /* Pufferspeicher anfordern */
    MPI_Pack_size(count, datatype, comm, &dummysize);
    dummysize=dummysize + MPI_BSEND_OVERHEAD;
    dummy=(void *)malloc(dummysize*sizeof(void));
    MPI_Buffer_attach(dummy, dummysize);

    MPI_Bsend_init(buf, count, datatype, dest, tag, comm, &request);
    for (i=0; i<n; i++) {
	... Puffer aktualisieren ...
	MPI_Start(&request);
        ...
	MPI_Wait(&request, &status);
        ...
    }
    MPI_Request_free(&request);
    MPI_Buffer_detach(&dummy, &dummysize);
    ...