Baixe o app para aproveitar ainda mais
Prévia do material em texto
Curso MPI - Módulo 4 Rotinas de Comunicação Coletivas Carla Osthoff Comunicação Coletiva • Uma comunicação coletiva deve envolver todos os processos no âmbito de um comunicador. Todos os processos são, por padrão, membros do comunicador MPI_COMM_WORLD. Apostila pg.19Apostila pg.19 Comunicação Coletiva • Cabe ao programador a responsabilidade de garantir que todos os processos dentro de um comunicador participem de operações coletivas Tipos de Operações Coletivas: • Sincronização - processos de esperar até que todos os membros do grupo tenham chegado ao ponto sincronização. • Movimento de Dados - broadcast, scatter /gather, tudo para todos Apostila pg.20Apostila pg.20 Tipos de Operações Coletivas: • Computação Coletivas (reduções) - um membro do grupo executa a coleta dos dados dos outros membros e exerce uma operação (min, max, adicionar, multiplicar, etc) sobre esses dados. Considerações e Restrições sobre a Programação: • Operações Coletivas são operações bloqueantes. • As mensagens de comunicação coletivas não possuem tag. Apostila pg.20Apostila pg.20 Considerações e Restrições sobre a Programação: • Subconjunto de operações coletivas de processos são realizadas particionando subconjuntos em novos grupos e, em seguida, anexando os novos grupos a novos comunicadores. Considerações e Restrições sobre a Programação: • Podem ser utilizados apenas tipos de dados (datatypes) predefinidos pelo padrão MPI. MPI_Barrier • Cria uma barreira sincronização em um grupo. • Cada processo, quando chegar à chamada MPI_Barrier, bloqueia até que todos os processos no grupo MPI_Barrier tenham atingido o mesmo ponto Apostila pg.20Apostila pg.20 MPI_Bcast • É uma comunicação coletiva onde um único processo envia os dados para todos os processos do comunicador MPI_Scatter • Distribui mensagens distintas de um único processo para cada processo do grupo. MPI_Gather • Recolhe mensagens distintas de cada processo do grupo para um processo destino. • Essa rotina é a operação inversa da MPI_Scatter MPI_Allgather • Concatenação dos dados para todos os processos do grupo. • Cada processo do grupo, realiza uma operação de Broadcast do tipo um-para-todos dentro do grupo. MPI_Reduce • Aplica uma operação de redução em todos os processos do grupo e coloca o resultado em um processo. Exemplo Rotina de comunicação com MPI_Reduce • Fornece o valor de Pi através de uma integração numérica, dividindo-se o intervalo de integração entre os processos, e calculando cada parte de forma paralela. Apostila pg.22Apostila pg.22 Cálculo de Pi • O processador gerente, processador zero, inicializa as variáveis de entrada para o cálculo dos processadores do sistema, no final coleta e soma o resultado gerado por cada processador. Exemplo Rotina de comunicação com SCATTER • Execução de uma operação Scatter das linhas de um array Apostila pg.23Apostila pg.23 Curso MPI - Módulo 4 Comunicação Coletiva Comunicação Coletiva Tipos de Operações Coletivas: Tipos de Operações Coletivas: Considerações e Restrições sobre a Programação: Considerações e Restrições sobre a Programação: Considerações e Restrições sobre a Programação: MPI_Barrier MPI_Bcast MPI_Scatter MPI_Gather MPI_Allgather MPI_Reduce Exemplo Rotina de comunicação com MPI_Reduce Cálculo de Pi Exemplo Rotina de comunicação com SCATTER
Compartilhar