1. Indice de pagina
  2. 1. Descripción breve
  3. 2. Sintaxis
  4. 2.1. En C
  5. 2.2. En C++
  6. 3. Parámetros
  7. 3.1. De entrada
  8. 3.2. De salida
  9. 4. Descripción
  10. 5. Errores
  11. 6. Véase también

MPI_Wait

Descripción breve

Bloquea al proceso hasta que termine la operación de envío o de recibo especificada.

Sintaxis

En C

#include "mpi.h"
int MPI_Wait (
        MPI_Request *request,
        MPI_Status  *status)

En C++

#include <mpi.h>
       void Request::Wait(Status& status)
       void Request::Wait())

Parámetros

De entrada

request Dato de tipo MPI_Request, en el se guarda una etiqueta que identifica una operación no bloqueante. (Véase por ejemplo MPI_Isend).

De salida

status Objeto de tipo MPI_Status, contiene datos relevantes sobre el mensaje (como son el origen (MPI_SOURCE), la etiqueta (MPI_TAG) y el tamaño (size)).

Descripción

Este método bloquea el proceso que lo invoca hasta que la operación indicada en request se complete. Una vez se completa, se rellena la variable en el parámetro de salida status con los datos propios del objeto de tipo MPI_Status.

Un código sencillo de uso puede ser:

int main(int argc, char *argv[])
{
    int rank, size;
    int *mensaje;
    MPI_Request request;
    MPI_Status status;
 
    MPI_Init(&argc, &argv); // Inicializamos las hebras
    MPI_Comm_size(MPI_COMM_WORLD, &size); // Obtenemos el numero total de hebras
    MPI_Comm_rank(MPI_COMM_WORLD, &rank); // Obtenemos el valor de nuestro identificador
 
    mensaje = new int[50000];
 
    ...
    // Rellenamos el mensaje
    ...
 
    MPI_Isend (mensaje, // Buffer de envio
               50000,  // Numero de elementos a enviar en el buffer
               MPI_INT, // Tipo de cada elemento
               1, // Rank del proceso destino
               1, // Etiqueta
               MPI_COMM_WORLD, // Comunicador utilizado
               &request); // Datos de la operacion
    ...
    // Calculos y operaciones del programa
    ...
    MPI_Wait(&request, &status);
    // Si sale de Wait, el mensaje ha sido enviado
 
    MPI_Finalize();
    return 0;
}

Errores

MPI_SUCCESS No ha habido error, la función MPI se ha realizado satisfactoriamente.
MPI_ERR_REQUEST Objeto no válido de MPI_Request. Generalmente sucede porque tiene valor nulo.
MPI_ERR_ARG Ha recibido un argumento incorrecto no especificado por un error específico de clase (como MPI_ERR_RANK).

Véase también

MPI_Isend
MPI_Irecv
MPI_Test
MPI_Waitall

Creado por: Daniel Guerrero Martínez y Sergio Rodríguez Lumley 2010

Valid HTML 4.01 Transitional