Funktionsübersicht . . Nicht-blockierende Kommunikation

Hilfesystem für den Message Passing Interface Standard MPI


MPI_Testall

Testet, ob alle Kommunikationsvorgänge, deren Anforderungen im Request-Array übergeben wurden, beendet sind

Syntax:

Input Parameter InOut Parameter: Anmerkung:

Wird in array_of_requests ein inaktives handle übergeben, dann wird in array_of_status das entsprechende Status-Objekt so gesetzt, daß array_of_status.MPI_TAG = MPI_ANY_TAG und array_of_status.MPI_SOURCE = MPI_ANY_SOURCE ist. MPI_Get_count liefert für dieses Request-Objekt Null.

Aufruf:


#include "mpi.h"
#define  N  32

    int            count, flag=0;
    ...
    MPI_Request    array_of_requests[N];
    MPI_Status     array_of_status[N];

    ...
    for (i=0; i<N; i++) {
        MPI_Send_init(buf, count, MPI_INT, i+1, i, comm, &array_of_requests[i]);
    }
    while (again) {
        ... Sendepuffer aktualisieren ...
        MPI_Startall(N, array_of_requests);
        ...
        while (flag==0) {
            MPI_Testall(N, array_of_requests, &flag, array_of_status);
            ...
        }
        ...
    }
    ...
    for (i=0; i<N; i++) {
        MPI_Request_free(&array_of_requests[i]);
    }
    ...