Académique Documents
Professionnel Documents
Culture Documents
Lien discord :
https://discord.com/channels/780725466868875274/780725649412718602
Nom :
Notations
Une matrice carrée ou rectangulaire est dénotée par une lettre latine majuscule (A, B, C, etc.)
Un vecteur est dénoté par une lettre latine minuscule (a, b, c, etc.)
Un scalaire est dénoté par une lettre grecque minuscule (α, β, etc.)
void main(){
int i, n ;
n=4096 ;
double res=0;
double * a, *b, *z, *w ;
//allocation mémoire des variables
7. Dans les exemples ci-dessous, donnez les sorties possibles du programme OpenMP. Justifiez
vos reponses
Void foo(){
int i=10;
#pragma omp parallel private(i){
i=i+5
printf(“i=%d\n”, i);
}
}
export OMP_NUM_THREADS = 4
Sortie :
Justification :
int main() {
int my_tid=0;
#pragma omp parallel
printf(“my_tid=%d\n”, my_tid);
my_tid = omp_get_num_threads();
printf(“my_tid=%d\n”, my_tid);
export OMP_NUM_THREADS = 4
Sortie :
Justification :
int main() {
int nb_taches;
#pragma omp parallel
{ nb_taches = omp_get_num_threads(); }
#pragma omp 2
for(int i=0; i<n; i++) {
b [i] = rand();
}
// Solution initiale
#pragma omp 3
for(int i=0; i<n; i++) {
x[i] = 1.0;
}
pragma omp
#pragma omp 1
For (int k=0 ; k<n ; k++){
#pragma omp 2
for(int i=0; i<n; i++) {
x_courant[i] = 0;
for(j=0; j<i; j++) {
x_courant[i] += a[j][i]*x[j];
}
for(j=i+1; j<n; j++) {
x_courant[i] += a[j][i]*x[j];
}
x_courant[i] = (b[i] - x_courant[i])/a[i][i];
}
}
pragma 1
pragma 2
#pragma omp 1
For (int k=0 ; k<n ; k++){
for(int i=0; i<n; i++) {
x_courant[i] = 0;
#pragma omp 2
for(j=0; j<i; j++) {
x_courant[i] += a[j][i]*x[j];
}
#pragma omp 3
for(j=i+1; j<n; j++) {
x_courant[i] += a[j][i]*x[j];
}
x_courant[i] = (b[i] - x_courant[i])/a[i][i];
}
}
pragma 1
pragma 2
Pragma 3
Dans cet exercice, nous considérons la fonction foo(int i). La fonction effectue les opérations
suivantes :
int main() {
int i=1;
double *x,*y ;
x = malloc(2048) ;
y = malloc(2048) ;
2.1 On suppose qu’on a 2 threads. Quel thread sera le plus long en terme de temps d’exécution?
Pourquoi ?
2.2 Si on utilise schedule(dynamic,1), quel comportement pourrez-vous observer ?
2.3 Quel mode de schedule serait le plus adéquat ? static, guided ou dynamic ?
Justifiez votre proposition.