Compartilhar via


função MPI_Comm_split

Particiona o grupo associado ao comunicador especificado em um número especificado de subgrupos não contíguos.

Sintaxe

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

Parâmetros

  • comm
    O comunicador a ser dividido.

  • color
    O novo comunicador ao qual o processo de chamada deve ser atribuído. O valor da cor deve ser não negativo.

    Se um processo especificar o valor de corMPI_UNDEFINED, a função retornará MPI_COMM_NULL no parâmetro newcomm para o processo de chamada.

  • chave
    A classificação relativa do processo de chamada no grupo do novo comunicador. Para obter detalhes sobre como usar os parâmetros de chave e cor , consulte Comentários.

  • 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_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

Comentários

Essa é uma função coletiva, mas cada processo pode especificar valores diferentes para os parâmetros de cor e chave .

Esse é um mecanismo extremamente poderoso para dividir um único grupo de processos de comunicação em um número arbitrário de subgrupos. O número de subgrupos é determinado pelo número de cores especificadas em todos os processos. Os comunicadores resultantes não se sobrepõem. A subdividição de um comunicador dessa maneira é útil para definir uma hierarquia de cálculos, como para álgebra linear ou multigrid.

Cada subgrupo contém todos os processos que especificaram o mesmo valor para o parâmetro de cor . Dentro de cada subgrupo, os processos são classificados na ordem definida pelo valor do parâmetro key , com vínculos desfeitos de acordo com sua classificação no grupo antigo.

Com um comunicador intracomunicador, uma chamada para MPI_COMM_CREATE(comm, group, new-comm) é equivalente a uma chamada para MPI_COMM_SPLIT(comm, color, key, newcomm), em que os processos que são membros do grupo especificam o número do grupo, com base em uma numeração exclusiva de todos os grupos não contíguos, para o parâmetro de cor e sua classificação no grupo para o parâmetro de chave . Todos os processos que não são membros do grupo especificam MPI_UNDEFINED para o parâmetro de cor .

Para qualquer cor, os valores de chave não precisam ser exclusivos. A função MPI_Comm_split classifica os processos em ordem de acordo com o valor do parâmetro de chave e classifica os vínculos por sua classificação relativa no grupo de origem. Se o mesmo valor for especificado para todos os parâmetros de chave , todos os processos em uma determinada cor terão a mesma ordem de classificação relativa que tinham em seu grupo pai.

Para intracommunicadores, as funções MPI_Comm_split e MPI_Comm_create fornecem capacidade semelhante para dividir um grupo de comunicação em subgrupos não contíguos.

A função MPI_Comm_split é usada quando alguns processos não têm informações completas dos outros membros em seu grupo, mas todos os processos têm a cor do grupo ao qual pertencem. Nesse caso, a implementação do MPI descobre os outros membros do grupo por meio da comunicação.

A função MPI_Comm_create é usada quando todos os processos têm informações completas dos membros de seu grupo. Nesse caso, a implementação do MPI pode evitar a comunicação extra necessária para descobrir a associação ao grupo.

Os comunicadores criados por MPI_Comm_split não podem se sobrepor. Você pode chamar a função MPI_Comm_split várias vezes para superar essa limitação. Você pode criar várias estruturas de comunicação sobrepostas dessa maneira. O uso criativo dos parâmetros de cor e chave nessas operações de divisão é incentivado.

O resultado da função MPI_Comm_split em um intercomunicador é que esses processos à esquerda com a mesma cor que os processos à direita combinam para criar um novo intercomunicador. O parâmetro de chave define a classificação relativa dos processos em cada lado do intercomunicador. Um novo comunicador com um identificador de MPI_COMM_NULL é retornado a esses processos que especificam MPI_UNDEFINED como sua cor ou especificam uma cor especificada apenas em um lado do intercomunicador.

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

Confira também

Funções do Communicator do MPI

MPI_Comm_create