-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalc.c
30 lines (23 loc) · 917 Bytes
/
calc.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/** O programa “calculo.c” realiza uma série de cálculos, armazenando
os resultados em um arranjo de tamanho SIZE. Para compilá-lo adicione a
flag de compilação -lm. Paralelize esse programa com OpenMP. Verifique o
tempo de execução da versão sequencial e paralela com diferentes números
de threads com o uso da ferramenta time do Linux. Dica: remova todos
os printf() para medir o tempo de execução corretamente.
*/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <omp.h>
#define SIZE 500000
int main(int argc, char *argv[]) {
double *c = (double *) malloc (sizeof(double) * SIZE);
#pragma omp parallel for schedule(static) shared(c)
for (int i = 0; i < SIZE; i++) {
c[i] = sqrt(i* 32) + sqrt(i * 16 +i * 8) + sqrt(i * 4 + i * 2 + i);
c[i] -= sqrt(i * 32 * i * 16 + i * 4 + i * 2 + i);
c[i] += pow(i * 32, 8) + pow(i * 16, 12);
}
free(c);
return 0;
}