Computação Paralela - Atividade 12

Leia com atenção as instruções abaixo.

Valor: 2,0 pontos na 3ª Nota.

Data da Entrega Limite: 16/07/2022

Formato de Entrega:

  1. Um arquivo chamado atv12_reducao_broadcast.c ou atv12_reducao_broadcast.c.
A entrega deve ser feita via chat privado no Slack.

A atividade é individual.

Questão 01 - 2,0 Pontos

Considere apenas as chamadas ponto a ponto, send e recv, nas suas versões bloqueantes ou não bloqueantes. Você deve desenvolver um programa MPI que realize as seguintes etapas:

  1. Cada processo deve gerar um número aleatório entre 0 e 1000.
  2. Cada processo deve imprimir uma mensagem indicando o número do processo e o número gerado.
  3. Todos os números gerados pelos processos devem ser somados. Isso seria equivalente a uma redução.
  4. O valor resultante da soma deve ser transmitido para todos os processos. Isso seria equivalente a um broadcast.
  5. Cada processo deve imprimir uma mensagem indicando o número do processo e a soma resultante.

Operação coletiva all_reduce realizaria as etapas acima, mas nem ela e nem a reduce e a broadcast podem ser utilizadas. Teste com vários processos para garantir que não há deadlock. Como é pouca computação, você pode tentar até com mais do que 16 processos sem sobrecarregar a máquina.