"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como enviar e receber matrizes 2D com eficácia em MPI?

Como enviar e receber matrizes 2D com eficácia em MPI?

Publicado em 2024-12-22
Navegar:219

How to Effectively Send and Receive 2D Arrays in MPI?

Enviando e recebendo matrizes 2D usando MPI

Problema:

Você tem uma matriz 2D grande que requer processamento em vários nós usando MPI. A única comunicação entre nós envolve o compartilhamento de valores de borda após cada intervalo de tempo.

Abordagem:

Sua abordagem proposta, descrita na pergunta, é adequada para este problema. Os seguintes segmentos de código ilustram a implementação sugerida:

// (assume A is a 2D array)
if (myrank == 0) {
  for (i = 0; i 

Funções MPI adicionais:

  • MPI_Allgather: Reúne dados de todos os processadores em um buffer acessível a todos os processadores. Útil para coletar uma matriz distribuída em um único processador.
  • MPI_Alltoall: fornece uma troca completa de dados entre todos os processadores.
  • MPI_Sendrecv: A função conveniente que combina uma operação de envio e recebimento em um único call.
  • MPI_Buffer_attach: anexa um buffer a um processo, sem a necessidade de alocar memória explicitamente para ele.

Considerações:

  • A alocação de memória contígua é recomendada para matrizes 2D para simplificar o MPI comunicação.
  • MPI_Barrier garante a sincronização entre processos, mas pode ser substituído por alternativas sem bloqueio, como MPI_Wait ou MPI_Test.
  • Envios e recebimentos de bloqueio são usados ​​aqui, mas opções sem bloqueio estão disponíveis para maior eficiência.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3