Académique Documents
Professionnel Documents
Culture Documents
Exercice I.
int main () {
funcA(data); //fonction parallélisable
funcB(); //fonction ne peut être parallélisée
}
1/1
II.2. Soit le code suivant parallélisé avec OpenMP. On suppose que le nombre de threads utilisé
est 4 threads (exportation OMP_NUM_THREADS = 4) et le nombre d’itérations iter = 16:
# Iteration 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# thread 0
Temps (s) 2
# Iteration 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# thread 0
Temps (s) 2
d) Quelle est la stratégie de répartition des itérations qu’il serait préférable d’utiliser — static ou
dynamic justifier ?
Soit A une matrice carrée réelle de taille (n× n) où n est une donnée du problème. Ecrire un
programme parallèle où parmi p processus :
Le processus 0 possède la matrice initiale A. Il joue le rôle de maître. Il distribue le travail sur
les autres processus dits esclaves.
A chaque processus esclave de rang r (r≠0) est associé une partie de la matrice A (sous-
matrices) de taille nl (distribution équitable entre les processus esclaves);
Chaque processus de rang r (r≠0) calcule le maximum dans sa partie. Ce calcul se fait en
parallèle en utilisant 3 threads par processus.
le processus de rang 0 récupère tous les maximums calculés par les autres processus r (r≠0), et
ce pour calculer le maximum global de la matrice A. Il affiche le maximum global trouvé.
2/1