Correction-TD2-openMP-Ex1-Q1-2
Correction-TD2-openMP-Ex1-Q1-2
Exercice 1
Q1.
#include<stdio.h>
#define SIZE 256
int main()
{
double sum , a[SIZE], b[SIZE];
// Initialisation
sum = 0.;
// Calcul
for (int i = 0; i < SIZE ; i ++) {
sum = sum + a[i ]* b[i ];
}
printf ("sum = %f\n", sum);
return 0;
}
Pour size=16
Q2.
#include<stdio.h>
#include<pthread.h>
#define SIZE 256
#define NUM_THREADS 4
#define intervalle SIZE/NUM_THREADS //256/4=64
struct threadargs{
1
2ISEOC Institut Supérieur d’Informatique
double aa[SIZE];
double bb[SIZE];
int debut;
int fin;
double *sum;
pthread_mutex_t *mutex;
};
int main()
{
pthread_t th[NUM_THREADS];
pthread_mutex_t mux;
struct threadargs
args[NUM_THREADS];
pthread_mutex_init(&mux,NULL);
double a[SIZE];
double b[SIZE];
// Initialisation
double somme = 0.;
for (int i = 0; i<SIZE ; i++)
{ a[i] = i * 0.5;
b[i] = i * 2.0; }
2
2ISEOC Institut Supérieur d’Informatique
return 0;
}