Determina el rango (identificador) del proceso que lo llama dentro del comunicador seleccionado.
#include "mpi.h" int MPI_Comm_rank (MPI_Comm comm, int *rank)
#include <mpi.h> int Com::Get_rank () const
comm | Comunicador sobre el que se quiere conocer el identificador. |
rank | Entero que indica el rango del proceso. |
Esta función devuelve el rango del proceso que lo llama en el grupo de comunicación. Para comprender mejor el funcionamiento de este método, mostramos a continuación una imagen ilustrativa. En la imagen, vemos que cada proceso tiene un identificador diferente según el comunicador en el que se encuentre. En el global sus rangos serín 0 para P0, 1 para P1, etc. En el comunicador comm1, vemos que sus rangos son diferentes, siendo 0 para P2, 1 para P3, 2 para P6 y 3 para P7.
int main(int argc, char *argv[]) { int rank; MPI_Init(&argc, &argv); // Inicializamos las hebras MPI_Comm_rank(MPI_COMM_WORLD, &rank); // Obtenemos el valor de nuestro identificador cout << "Mi rango es " << rank; MPI_Finalize(); }
Es equivalente a acceder al grupo del comunicador con MPI_Comm_group, calcular el rango usando MPI_Group_rank y después liberando el grupo temporal con MPI_Group_free.
MPI_SUCCESS | No ha habido error, la función MPI se ha realizado satisfactoriamente. |
MPI_ERR_COMM | Significa que el comunicador especificado por parámetros es incorrecto. Un error frecuente es utilizar un comunicador nulo. |