Partilhar via


função MPI_Comm_create

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

Ver também

Funções do Communicator do MPI

MPI_Comm_split