Skip to topic | Skip to bottom
Home
Minfo
Minfo.ParallTDM2r1.1 - 18 Sep 2008 - 15:16 - FabriceHuettopic end

Start of topic | Skip to actions
Pour écrire un programme openMP, il faut
   inclure <omp.h>
   compiler avec l'option -fopenmp

Exercice 1 (parallélisme de boucle for)

On considère un tableau de n cases contenant chacune une valeur aléatoire.

a) Écrire un programme C qui lit la taille du tableau sur la ligne de commande, le crée et le remplit de valeurs aléatoires.

b) Ecrire une méthode carre(...) prenant le tableau en paramètre et elevant la valeur de chacune des cases au carré

c) Modifiez ce programme pour que les boucles for soient parallélisées par openMP

d) Faites afficher par votre programme le nombre de threads qui sont crées par openMP. Que remarquez vous ?

e) Modifiez votre programme pour fixer le nombre de threads de la boucle for à 1, 5 puis 10. Dans chaque cas, mesurez le temps pris par votre programme (utilisez l'API de timing). Que constatez vous ?

f) Cherchez comment à l'aide de la variable OMP_NUM_THREADS il est possible de modifier le nombre de threads sans modifier votre code.

Exercice 2 (Variables partagées et privées)

On veut profiter de la boucle de la méthode carre() pour faire la somme de tous les éléments du tableau.

a) Dans la méthode carre(...) précédente, déclarez une variable int total avant la boucle for et utilisez la pour faire la somme de toutes les cases du tableau dans la boucle. Que vaut total en sortie de boucle? pourquoi ?

b) Indiquez maintenant que total est une variable privée. Que vaut-elle en sortie de boucle? pourquoi ?

c) À l'aide d'une section critique, implémentez correctement la somme des éléments. Que constatez vous en terme de performances?

d) Utilisez la clause de réduction pour arriver au même résultat et discutez les mérites de cette solution comparée à la précédente

Exercice 3

Écrivez un programme parallèle de calcul du produit de 2 matrices en utilisant l'algorithme vu en TD.

Exercice 4 (Blocs paralleles)

Pour cet exercice, inspirez vous du code Java du tri du TP1

a) Écrivez une version C mono-thread du tri fusion

b) Parallelisez cette version de de telle sorte que

  • le tableau initial est divisé en 2 sous tableaux
  • ces 2 sous tableaux sont triés en parallèle
  • le résultat est fusionné pour donner le tableau final

c) Est-il possible d'introduire plus de parallélisme?

-- FabriceHuet - 18 Sep 2008
to top


You are here: Minfo > ParallRepa > ParallTDM2

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback