Syntax:
Input Parameter:
Das Ende der Sendeoperation kann mit MPI_Wait abgewartet
oder mit MPI_Test getestet werden. Erst nach dem erfolgreichen
Beenden dürfen die Daten im Sendepuffer modifiziert werden.
Der Puffer muß vom Programmierer mit
MPI_Buffer_attach bereitgestellt werden.
Er darf solange nicht wiederverwendet werden, bis die Nachricht wirklich
empfangen wurde. Wenn man den Puffer mit
MPI_Buffer_detach freigibt, testet MPI,
ob eine Nachricht vorhanden ist, und liefert diese gegebenenfalls aus.
Der minimal benötigte Speicherplatz läßt sich mit
MPI_Pack_size ermitteln. Für jede beabsichtigte gepufferte Sendeoperation
ist noch mindestens MPI_BSEND_OVERHEAD hinzuzuaddieren.
Aufruf:
#include "mpi.h"
int count, buffersize, size;
void *buf, *buffer;
MPI_Datatype datatype;
MPI_Comm comm;
MPI_Request request;
MPI_Status status;
...
MPI_Pack_size(count, datatype, comm, &size);
bufsize = size + MPI_BSEND_OVERHEAD;
buffer=(void *)malloc(bufsize*sizeof(void));
MPI_Buffer_attach(buffer, buffersize);
MPI_Ibsend(buf, count, datatype, 1, 0, comm, &request);
... Berechnung ...
MPI_Wait(&request, &status);
...