MPI tiene algunos tipos de dato definidos para cumplir algunos propósitos específicos.
A continuación citaremos los más importantes entre ellos:
Se utiliza para guardar información sobre operaciones de recepción de mensajes (como por ejemplo MPI_Recv). Este tipo de dato guarda una estructura interna con los siguientes campos:
MPI_SOURCE | Indica el rango del proceso origen en el comunicador en el que se realizó la transmisión (int). |
MPI_TAG | Valor de la etiqueta que tenía el mensaje (int). |
size | Número de elementos del tipo de dato especificado en el mensaje. |
count | Tamaño del mensaje en bytes (para obtener el número de elementos, por ejemplo si fuera un entero, sería "status.count/sizeof(int)"). |
Declaración:
MPI_Status status;
Este tipo de dato guarda toda la información relevante sobre un comunicador específico. Se utiliza para especificar el comunicador por el que se desea realizar las operaciónes de transmisión o recepción (como MPI_Send o MPI_Recv). Nótese que hay una constante que define al comunicador global, que es MPI_COMM_WORLD, este no se declara.
Declaración:
MPI_Comm comm;
Se utiliza para identificar operaciones no bloqueantes, guarda una etiqueta identificativa para ellas. Esto se utiliza para poder consultar, por ejemplo, si la operación ha finalizado, o poder esperar a que finalice en un momento dado (véase por ejemplo MPI_Wait).
Declaración:
MPI_Request request;