Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Extrai um subconjunto de um grupo de processos para fins de computação MIMD (Vários Dados múltiplos de instrução) separados em um comunicador separado.
Sintaxe
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parâmetros
comm
O comunicador de origem.grupo
O grupo que define o subconjunto solicitado dos processos no comunicador de origem.newcomm [out]
No retorno, contém um identificador para um novo comunicador.
Retornar valor
Retorna MPI_SUCCESS em caso de êxito. Caso contrário, o valor retornado será um código de erro.
Em Fortran, o valor retornado é armazenado no parâmetro IERROR .
Fortran
MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Comentários
O comunicador que essa função cria pode ser subdividido em subcomputações paralelas usando a função MPI_Comm_create ou outros construtores de comunicador. A função MPI_Comm_split é uma função mais geral para criar objetos MPI_Comm .
Se o parâmetro comm referenciar um intracomunicador, essa função retornará um novo comunicador com um grupo de comunicação, conforme definido pelo parâmetro group . Nenhuma informação armazenada em cache se propaga do comunicador de origem para o novo comunicador. Cada processo deve chamar com um parâmetro de grupo que seja um subgrupo do grupo associado ao comunicador de origem. Um valor possível é MPI_GROUP_EMPTY. Os processos podem especificar valores diferentes para o parâmetro group . Se um processo chamar com um grupo não vazio, todos os processos nesse grupo deverão chamar a função com os mesmos valores para o parâmetro group , ou seja, os mesmos membros na mesma ordem. Caso contrário, a função retornará um erro. Esse resultado implica que o conjunto de grupos especificado nos processos deve ser desarticulado. Se o processo de chamada for um membro do grupo especificado no parâmetro group , o parâmetro newcomm representará um comunicador com o grupo especificado como seu grupo associado. Se um processo especificar um grupo ao qual ele não pertence, por exemplo, MPI_GROUP_EMPTY, o parâmetro newcomm retornará MPI_COMM_NULL.
A interface dá suporte ao mecanismo original do MPI-1.1, que exigia o mesmo grupo em todos os processos de comm. Ele foi estendido no MPI-2.2 para permitir o uso de subgrupos não contíguos para permitir que implementações eliminem a comunicação desnecessária que a função MPI_Comm_split incorreria quando o usuário já conhece a associação dos subgrupos não contíguos.
A função MPI_Comm_create é coletiva e deve ser chamada por todos os processos no grupo do comunicador de origem. O requisito de que todo o grupo participe da chamada vem dos seguintes problemas:
- Ele permite que a implementação coloque a função MPI_Comm_create em camadas sobre as comunicações coletivas regulares.
- Ele fornece segurança adicional, especialmente no caso em que grupos parcialmente sobrepostos são usados para criar novos comunicadores.
- Ele permite que implementações evitem parte da comunicação relacionada à criação de contexto.
Se o parâmetro comm fizer referência a um intercomunicador, o comunicador criado também será um intercomunicador em que o grupo local consiste apenas nos processos especificados no parâmetro group . Especifique apenas os processos no grupo local do intercomunicador de entrada que devem fazer parte do novo comunicador no parâmetro group . Todos os processos no mesmo grupo local do comunicador devem especificar o mesmo valor para o parâmetro group , ou seja, os mesmos membros na mesma ordem. Se qualquer um dos grupos não especificar pelo menos um processo no grupo local do intercomunicador ou se o processo de chamada não estiver incluído no grupo, um erro será retornado.
Requisitos
Produto |
Pacote Redistribuível do HPC Pack 2012 MS-MPI, Pacote Redistribuível HPC Pack 2008 R2 MS-MPI, Pacote Redistribuível do HPC Pack 2008 MS-MPI ou Utilitários de Cliente HPC Pack 2008 |
parâmetro |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
DLL |
Msmpi.dll |