Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Extrai um subconjunto de um grupo de processos para fins de cálculo de Múltiplos Dados de Instrução Múltipla (MIMD) separado num comunicador separado.
Sintaxe
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parâmetros
vírgula
O comunicador de origem.grupo
O grupo que define o subconjunto pedido dos processos no comunicador de origem.newcomm [out]
Na devolução, contém um identificador para um novo comunicador.
Valor devolvido
Devolve MPI_SUCCESS com êxito. Caso contrário, o valor devolvido é um código de erro.
Em Fortran, o valor devolvido é armazenado no parâmetro IERROR .
Fortran
MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Observações
O comunicador que esta função cria pode ser subdividido em subdividições paralelas com a função MPI_Comm_create ou outros construtores do communicator. A função MPI_Comm_split é uma função mais geral para criar objetos de MPI_Comm .
Se o parâmetro de comunicação fizer referência a um intracomunicador, esta função devolverá um novo comunicador com um grupo de comunicação, conforme definido pelo parâmetro de grupo . Nenhuma informação em cache é propagada do comunicador de origem para o novo comunicador. Cada processo tem de chamar com um parâmetro de grupo que seja um subgrupo do grupo que está associado ao comunicador de origem. É MPI_GROUP_EMPTY um valor possível. Os processos podem especificar valores diferentes para o parâmetro de grupo . Se um processo chamar com um grupo não vazio, todos os processos nesse grupo têm de chamar a função com os mesmos valores para o parâmetro de grupo , ou seja, os mesmos membros na mesma ordem. Caso contrário, a função devolve um erro. Este resultado implica que o conjunto de grupos especificados nos processos tem de ser desarticulada. Se o processo de chamada for um membro do grupo especificado no parâmetro de grupo , o parâmetro newcomm representa um comunicador com o grupo especificado como o grupo associado. Se um processo especificar um grupo ao qual não pertence, por exemplo, MPI_GROUP_EMPTY, o parâmetro newcomm devolve MPI_COMM_NULL.
A interface suporta o mecanismo original do MPI-1.1, que exigia o mesmo grupo em todos os processos de comunicação. Foi alargado no MPI-2.2 para permitir a utilização de subgrupos não contíguos para permitir implementações para eliminar comunicações desnecessárias que a função MPI_Comm_split incorreria quando o utilizador já conhece a associação dos subgrupos não contíguos.
A função MPI_Comm_create é coletiva e tem de ser chamada por todos os processos no grupo do comunicador de origem. O requisito de que todo o grupo participa na chamada provém dos seguintes problemas:
- Permite que a implementação coloque a função MPI_Comm_create em camadas sobre comunicações coletivas regulares.
- Proporciona segurança adicional, nomeadamente no caso de serem utilizados grupos parcialmente sobrepostos para criar novos comunicadores.
- Permite implementações para evitar alguma da comunicação relacionada com a criação de contexto.
Se o parâmetro de comm fizer referência a um intercomunicador, o comunicador criado também é um intercomunicador em que o grupo local consiste apenas nos processos especificados no parâmetro de grupo . Especifique apenas esses processos no grupo local do intercomunicador de entrada que devem fazer parte do novo comunicador no parâmetro de grupo . Todos os processos no mesmo grupo local do comunicador têm de especificar o mesmo valor para o parâmetro de grupo , ou seja, os mesmos membros na mesma ordem. Se 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, é devolvido um erro.
Requisitos
Produto |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package ou HPC Pack 2008 Client Utilities |
Cabeçalho |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
DLL |
Msmpi.dll |