MPI_Comm_split función
Divide el grupo asociado al comunicador especificado en un número especificado de subgrupos separados.
Sintaxis
int MPIAPI MPI_Comm_split(
MPI_Comm comm,
int color,
int key,
_Out_ MPI_Comm *newcomm
);
Parámetros
comm
El comunicador que se va a dividir.color
Nuevo comunicador al que se asignará el proceso de llamada. El valor del color debe ser no negativo.Si un proceso especifica el valor de colorMPI_UNDEFINED, la función devuelve MPI_COMM_NULL en el nuevo parámetrocomm al proceso de llamada.
key
Rango relativo del proceso de llamada en el grupo del nuevo comunicador. Para obtener más información sobre el uso de los parámetros de clave y color , vea Comentarios.newcomm [out]
A cambio, contiene un identificador para un nuevo comunicador.
Valor devuelto
Devuelve MPI_SUCCESS si se realiza correctamente. De lo contrario, el valor devuelto es un código de error.
En Fortran, el valor devuelto se almacena en el parámetro IERROR .
Fortran
MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
Comentarios
Se trata de una función colectiva, pero cada proceso puede especificar valores diferentes para los parámetros de color y clave .
Se trata de un mecanismo extremadamente eficaz para dividir un único grupo de procesos de comunicación en un número arbitrario de subgrupos. El número de subgrupos viene determinado por el número de colores especificados en todos los procesos. Los comunicadores resultantes no se superponen. La subdividir un comunicador de esta manera es útil para definir una jerarquía de cálculos, como para el álgebra lineal o multigrid.
Cada subgrupo contiene todos los procesos que especificaron el mismo valor para el parámetro de color . Dentro de cada subgrupo, los procesos se clasifican en el orden definido por el valor del parámetro clave , con vínculos rotos según su clasificación en el grupo anterior.
Con un comunicador intracomunicador, una llamada a equivale a MPI_COMM_CREATE(comm, group, new-comm)
una llamada a MPI_COMM_SPLIT(comm, color, key, newcomm)
, donde los procesos que son miembros del grupo especifican el número del grupo, basándose en una numeración única de todos los grupos separados, para el parámetro de color y su clasificación en el grupo para el parámetro de clave . Todos los procesos que no son miembros del grupo especifican MPI_UNDEFINED para el parámetro de color .
Para cualquier color, los valores de clave no tienen que ser únicos. La función MPI_Comm_split ordena los procesos según el valor del parámetro de clave y ordena los vínculos por su clasificación relativa en el grupo de origen. Si se especifica el mismo valor para todos los parámetros de clave , todos los procesos de un color determinado tienen el mismo orden de clasificación relativo que tenían en su grupo primario.
En el caso de los intracomunicadores, las funciones MPI_Comm_split y MPI_Comm_create proporcionan una funcionalidad similar para dividir un grupo de comunicación en subgrupos separados.
La función MPI_Comm_split se usa cuando algunos procesos no tienen información completa de los demás miembros de su grupo, pero todos los procesos tienen el color del grupo al que pertenecen. En este caso, la implementación de MPI detecta los demás miembros del grupo a través de la comunicación.
La función MPI_Comm_create se usa cuando todos los procesos tienen información completa de los miembros de su grupo. En este caso, la implementación de MPI puede evitar la comunicación adicional necesaria para detectar la pertenencia a grupos.
Los comunicadores creados por MPI_Comm_split no se pueden superponer. Puede llamar a la función MPI_Comm_split varias veces para superar esta limitación. Puede crear varias estructuras de comunicación superpuestas de esta manera. Se recomienda el uso creativo de los parámetros de color y clave en estas operaciones de división.
El resultado de la función MPI_Comm_split en un intercomunicador es que esos procesos a la izquierda con el mismo color que los procesos de la derecha combinan para crear un nuevo intercomunicador. El parámetro key define la clasificación relativa de los procesos en cada lado del intercomunicador. Se devuelve un nuevo comunicador con un identificador de MPI_COMM_NULL a los procesos que especifican MPI_UNDEFINED como su color o especifican un color que solo se especifica en un lado del intercomunicador.
Requisitos
Producto |
Paquete redistribuible DE HPC Pack 2012 MS-MPI, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package o HPC Pack 2008 Client Utilities |
Encabezado |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
Archivo DLL |
Msmpi.dll |