Pergunta

Eu li as definições desses termos e minha interpretação é que existe uma relação de um a um entre um grupo e um comunicador. Um grupo é um conjunto de processos que desejam se comunicar e um comunicador é uma implementação para um grupo.

Isso está correto? Por que ter dois termos diferentes, se é assim?

Foi útil?

Solução

UMA grupo é um Conjunto ordenado de identificadores de processo (MPI 2.2 Spec, Seção 6.2.1). A ordem é dada associando -se a cada identificador de processo um único classificação de 0 para o grupo.Size - 1.

UMA comunicador Encapsula toda a comunicação entre um conjunto de processos. Um intra-comunicador está associado a um grupo e também a contextos de comunicação para comunicação ponto a ponto e coletivo e possivelmente outras informações de contexto, como topologias virtuais (SPEC, 6.1.2). Um inter-comunicador está associado a dois grupos não sobrepostos.

Eu (provavelmente muito vagamente) penso no grupo de um comunicador como sua tabela de símbolos.

Um grupo pode conter identificadores de processo de vários comunicadores.

Finalmente, a construção e as operações em grupos são locais para o processo e não envolvem comunicação interprocessante. Isso não é, em geral, verdade para os comunicadores (por sua própria natureza).

Outras dicas

Existem muitas diferenças entre comunicadores e grupos, como descobri depois de ler a especificação do MPI.

EDIT: Grupos são objetos que representam grupos de processos.

O comunicador é um conjunto de processos que podem se comunicar e podem consistir em processos de um único grupo ou de vários grupos.

Assim, são entidades completamente diferentes. Eles não devem ser confundidos um com o outro.

Um comunicador contém grupos (s) enquanto um grupo é apenas uma coleção de processos.

Se um comunicador contiver apenas um grupo, é chamado de intracomunicador (o comunicador, MPI_COMM_WORLD é aquele que se refere a um grupo que inclui todas as classificações).

Se ele contiver dois grupos, é chamado no intercomunicador (não há nenhum criado por padrão para você).

Dar uma olhada em https://computing.llnl.gov/tutorials/mpi_advanced/davidcronkslides.pdf onde ele dá uma explicação pictórica muito boa de como um comunicador é um recipiente para um ou dois grupos.

Um grupo no MPI corresponde ao conceito matemático "Conjunto", que é introduzido no MPI para facilitar os processos de organização e a criação de novas comunicações. Por exemplo, você pode usar as operações sindicais e de interseção nos conjuntos para criar novos conjuntos, para que você possa usá -los para criar novos comunicadores.

Um grupo não tem nada a ver com comunicações, embora um grupo possa ser usado para criar um comunicador (um comunicador é um grupo mais um contexto).

Um grupo também pode ser usado como um ID na distribuição de tarefas/dados entre diferentes processos. Por exemplo, podemos testar se um processo está em um grupo para determinar se deve fazer algo.

UMA comunicador é um objeto que descreve um grupo de processos. Em muitos aplicativos, todos os processos trabalham juntos em conjunto, e o único comunicador que você precisa é MPI_COMM_WORLD.

grupo descrevendo todos os processos com os quais seu trabalho começa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top