Esta atividade deve ser colocada no repositório, nas pasta atividades/atividade03 sob o nome parallel_sum_a.c e parallel_sum_b.c.
Valor: 2,5 Pontos.
Data de Entrega: 04/08/2020.
Considere o código a seguir:
#include <stdio.h>
#include <omp.h>
#include <stdlib.h>
int main (int argc , char *argv[]) {
int max;
sscanf (argv[1], "%d", &max);
int ts = omp_get_max_threads ();
if (max % ts != 0) return 1;
int *sums = (int *) malloc(ts * sizeof(int));
#pragma omp parallel
{
int t = omp_get_thread_num ();
int lo = (max / ts) * (t + 0) + 1;
int hi = (max / ts) * (t + 1) + 0;
sums[t] = 0;
for (int i = lo; i <= hi; i++)
sums[t] = sums[t] + i;
}
int sum = 0;
for (int t = 0; t < ts; t++) sum = sum + sums[t];
printf ("%d\n", sum);
free(sums)
return 0;
}
Realize as seguintes alterações no código: