Laboratório de Programação Paralela 2018.2

Laboratório 2 - Testando o MPI

Neste laboratório, voce irá utilizar o padrão MPI (Message Passing Interface).
Este padrão possui várias implementações e usaremos a implementação Open MPI .
Os programas deverão ser codificados na linguagem C.

Dicas de uso

Rotinas para gerenciar o ambiente

Estas rotinas são usadas para verificar e configurar o ambiente de execução MPI. Algumas das mais utilizadas são:

Exercício 1

Neste exercício voce irá comparar o desempenho quando a comunicação se realiza entre nós do mesmo processador e nós de processadores diferentes.
  1. Compile o programa mpi_bandwidth .c .
  2. Execute o código com 2 tarefas no mesmo processador e verifique a largura de banda (bandwidths)
  3. Execute o código com 2 tarefas em processadores diferentes e verifique a largura de banda (bandwidths)
  4. Escreva suas observações sobre os comportamentos

Exercício 2

Neste exercício voce irá comparar envio e recebimento bloqueante e não bloqueante
  1. Copie o programa mpi_bandwidth .c para um arquivo chamado mpi_bandwidthNB.c
  2. Modifique este novo arquivo de modo que sejam executadas funçãoes não bloqueantes de envio e recebimento ao invés de bloqueantes.Você irá fazer isso trocando o trecho de código abaixo:
          MPI_Send(&msgbuf, n, MPI_CHAR, dest, tag, MPI_COMM_WORLD);
          MPI_Recv(&msgbuf, n, MPI_CHAR, src, tag, MPI_COMM_WORLD, &status);
    
    por
          MPI_Isend(&msgbuf, n, MPI_CHAR, dest, tag, MPI_COMM_WORLD, &reqs[0]);
          MPI_Irecv(&msgbuf, n, MPI_CHAR, src, tag, MPI_COMM_WORLD, &reqs[1]);
          MPI_Waitall(2, reqs, stats);
    
  3. Execute os dois programas (bloqueante e não bloqueante) executando 2 tarefas em 2 nós diferentes.
  4. Compare os resultados. Explique qual possui melhor desempenho.

Exercício 3

Neste exercíco você tentará descobrir erros que podem ocorrer em programas MPI. Compile e execute cada um e execute utilizando 4 tarefas.
  1. mpi_bug1.c : Fica parado
  2. mpi_bug2.c : Resultados errados ou terminação anormal
  3. mpi_bug3.c : Mensagem de erro e/ou terminação anormal
  4. mpi_bug4.c : Fornece resultado errrado para "Final sum"
  5. mpi_bug5.c : Programa é terminado anormalmente ou trava
  6. mpi_bug6.c : Termina ou é ignorado
  7. mpi_bug7.c : Trava