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.
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 |