MPI_Comm_create función
Extrae un subconjunto de un grupo de procesos con el fin de separar el cálculo de varios datos de instrucción múltiples (MIMD) en un comunicador independiente.
Sintaxis
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parámetros
comm
Comunicador de origen.group
Grupo que define el subconjunto solicitado de los procesos en el comunicador de origen.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_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Comentarios
El comunicador que crea esta función se puede subdividir aún más en subcomputaciones paralelas mediante la función MPI_Comm_create u otros constructores de comunicador. La función MPI_Comm_split es una función más general para crear objetos MPI_Comm .
Si el parámetro comm hace referencia a un intracomunicador, esta función devuelve un nuevo comunicador con un grupo de comunicación definido por el parámetro group . Ninguna información almacenada en caché se propaga del comunicador de origen al nuevo comunicador. Cada proceso debe llamar a con un parámetro de grupo que sea un subgrupo del grupo asociado al comunicador de origen. Se MPI_GROUP_EMPTY un valor posible. Los procesos pueden especificar valores diferentes para el parámetro group . Si un proceso llama a con un grupo no vacío, todos los procesos de ese grupo deben llamar a la función con los mismos valores para el parámetro group , es decir, los mismos miembros en el mismo orden. De lo contrario, la función devuelve un error. Este resultado implica que el conjunto de grupos especificados en los procesos debe estar separado. Si el proceso de llamada es miembro del grupo especificado en el parámetro group , el nuevo parámetrocomm representa un comunicador con el grupo especificado como su grupo asociado. Si un proceso especifica un grupo al que no pertenece, por ejemplo, MPI_GROUP_EMPTY, el nuevo parámetrocomm devuelve MPI_COMM_NULL.
La interfaz admite el mecanismo original de MPI-1.1, que requería el mismo grupo en todos los procesos de comm. Se extendió en MPI-2.2 para permitir el uso de subgrupos separados para permitir que las implementaciones eliminen la comunicación innecesaria que la función MPI_Comm_split incurriría cuando el usuario ya conoce la pertenencia de los subgrupos separados.
La función MPI_Comm_create es colectiva y todos los procesos del grupo del comunicador de origen deben llamar a ellos. El requisito de que todo el grupo participe en la llamada procede de los siguientes problemas:
- Permite que la implementación supere la función MPI_Comm_create sobre las comunicaciones colectivas normales.
- Proporciona seguridad adicional, en particular en el caso de que se usen grupos parcialmente superpuestos para crear nuevos comunicadores.
- Permite que las implementaciones eviten alguna de las comunicaciones relacionadas con la creación del contexto.
Si el parámetro comm hace referencia a un intercomunicador, el comunicador creado también es un intercomunicador donde el grupo local consta solo de los procesos especificados en el parámetro group . Especifique solo los procesos del grupo local del intercomunicador de entrada que van a formar parte del nuevo comunicador en el parámetro group . Todos los procesos del mismo grupo local del comunicador deben especificar el mismo valor para el parámetro group , es decir, los mismos miembros en el mismo orden. Si alguno de los grupos no especifica al menos un proceso en el grupo local del intercomunicador, o si el proceso de llamada no está incluido en el grupo, se devuelve un error.
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 |