Computação Paralela - Atividade 13

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 atv13_monte_carlo.c ou atv12_monte_carlo.c.
A entrega deve ser feita via chat privado no Slack.

A atividade é individual.

Questão 01 - 2,0 Pontos

Nesta atividade, devemos calcular uma aproximação do número \( \pi \) usando métodos de monte carlo.

Considere a figura acima e a descrição do método. De forma resumida, se você inscrever uma circunferência dentro de um quadrado e gerar pontos aleatórios dentro do quadrado, o valor de \( \pi \) pode ser aproximado dividindo o número de pontos que faz parte da circunferência sobre o total de pontos gerados, vezes a área do quadrado. No link acima temos exemplos de pseucódigo e códigos para o algoritmo que realiza esse cálculo.

Você deve fazer um programa MPI que:

  1. Apenas o processo 0 lê dos parâmetros um número inteiro \( N \) que representa o total de pontos que deve ser gerados.
  2. O processo 0 distribui esse valor para todos os outros processos.
  3. Cada processo deve gerar \( N / numP \) pontos, em que \( N \) é o total de pontos e \( numP \) o número de processos, e contabilizar quantos caem dentro do círculo.
  4. A soma de todos os acertos de todos os processos deve ser feita e consolidade no processo 0.
  5. O processo 0 deve fazer as operações finais e exibir o valor aproximado de \( \pi \).

O uso de operações coletivas facilita bastante a resolução desta ativdade.