Skip to content

Latest commit

 

History

History
72 lines (58 loc) · 1.55 KB

README.org

File metadata and controls

72 lines (58 loc) · 1.55 KB

CATP #19 (Integração Numérica com Paralelismo)

Paralelize a seguinte versão do cálculo de PI por integração numérica utilizando a especificação OpenMP. Na sua solução, forneça um programa completo passível de compilação com o seguinte comando.

gcc fonte.c -o binario -fopenmp
#include <stdio.h>
#include <sys/time.h>
#include <stdio.h>

double calcula_pi (long num_steps)
{
    int i; 
    double x, pi, sum = 0.0;
    double step = 1.0/(double) num_steps ;
    for (i = 0; i < num_steps; i++){
      x = (i+0.5)*step;
      sum = sum + 4.0/(1.0+x*x);
    }
    pi = step * sum;
    return pi;
}

double gettime (void)
{
  struct timeval tr;
  gettimeofday(&tr, NULL);
  return (double)tr.tv_sec+(double)tr.tv_usec/1000000;
}

int main (int argc, char **argv)
{
  long num_steps = 2000000000;
  double t0 = gettime();
  double pi = calcula_pi(num_steps);
  double t1 = gettime();
  printf("%.20f em %f segundos\n", pi, t1-t0);
}

A versão sequencial leva

gcc fonte.c -o binario
./binario

A versão paralela (com dois+dois cores) leva

gcc fonte.c -o binario -fopenmp
./binario

Aprenda mais em: