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.

  1. 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:

    1. 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.

    2. 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.

  2. 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.

  3. Descreva seus resultados em um relatório, procurando interpretar os resultados obtidos.