Exercício 2: Quadratura Adaptativa
Data de entrega: 21/10
Descrição
Neste trabalho, vamos utilizar o MPI para implementar o método dos
trapézios, onde aproximamos a área abaixo da curva desenhada por uma função
em determinado intervalo pela soma de trapézios formados por pontos xi, f(xi),
xi+1, f(xi+1).
O método é descrito em muitos lugares, entre eles na seção 8.2
desse artigo de Greg Andrews, cujas
idéias vamos usar no trabalho.
A função deve ser razoavelmente complexa para pensarmos em paralelizarmos
o cálculo da área.
Seu programa deve aceitar facilmente a mudança
para outras funções e intervalos.
-
Usando o mpich, instalado no
labpos ou disponível para download para execução em outros ambientes,
escreva um programa MPI para cálculo aproximado da área abaixo
da curva de uma fç f em um intervalo (a,b).
O programa deve ser escrito em duas variantes:
-
O processo mestre divide o intervalo total em p intervalos,
onde p é o número de processos executados.
Cada processo recebe um intervalo fixo e calcula a área
nesse intervalo até o fim, usando a técnica de quadratura
adaptativa.
Ao terminarem o cálculo, os processos executam uma operação
de redução para obter a soma dos resultados obtidos por cada um.
Procure encontrar funções que causem desbalanceamento entre os
processos, com números bem diferentes de iterações necessários para
a convergência nos diferentes intervalos distribuídos inicialmente.
Sem essa característica, a segunda variante ficará sempre muito
pior do que esta.
-
O processo principal inicialmente cria uma lista de tarefas, contendo
os extremos de intervalos, por exemplo com 100 tarefas.
Cada thread executa uma tarefa até o final e pede uma nova tarefa
ao processo principal, enviando nesse pedido o resultado da tarefa
anterior,
até que não existam mais tarefas.
O processo principal espera todos entregarem seus resultados
finais.
-
Execute as 2 para diferentes números de processos (2, 4 e 8),
com algumas medidas dos tempos obtidos para cada combinação.
Varie também o número de tarefas inicialmente colocadas na fila.
-
Descreva seus resultados em um relatório, procurando interpretar os
resultados obtidos.