Ce premier exercice a pour but de créer un premier programme parallèle tout en utilisant certaines fonctions de la bibliothèque OpenMP.
-
Le programme fait appel à 4 fonctions de la bibliothèque OpenMP permettant de récupérer le nombre de threads maximal et physique ainsi que l'identifiant du thread OpenMP en cours d'exécution. Commencez par compiler et exécuter le programme sans aucune modification. Vous ne tournez que sur un thread (séquentiel).
-
Ajoutez maintenant intelligemment la directive et clause de parallélisation pour afficher à l'écran les informations sur les threads créés. Faites attention, certaines fonctions OpenMP doivent être appelées dans la région parallèle d'autres à l'extérieur.
-
Prenez soin de faire apparaître la clause de partage des variables par défaut (
default(shared)
) ainsi que la clause de privatisation des variables ne pouvant être partagées (private
). Pour rappel, une variable partagée ne devrait pas être modifiée dans une région parallèle par plusieurs threads en même temps (concurrence mémoire). -
Compilez et exécutez le code OpenMP. Exécutez le en utilisant différents nombres de threads via la variable d'environnement suivante :
export OMP_NUM_THREADS=...
En C++ :
g++ -fopenmp -O3 main.cpp -o <nom de l executable>
En Fortran :
gfortran -fopenmp -O3 main.F90 -o <nom de l executable>