I. Avant-propos

OpenMP amène aujourd'hui une interface standard de haut niveau pour une programmation parallèle de type SPMD (Single Program Multiple Data) sur machine à mémoire partagée ou au moins virtuellement partagée (telle que la SGI O200). Basée sur les techniques du multithreading, on peut considérer OpenMP comme l'un des grands standards au service du calcul scientifique.

I-A. Public visé

Ce cours qui aborde de manière progressive et systématique les différentes composantes d'OpenMP s'adresse à deux types d'auditeurs : tout d'abord à de réels débutants en tant que manuel de référence le plus complet possible, ensuite à un public de faux débutants se heurtant à des difficultés conceptuelles au-delà des aspects purement syntaxiques. Ainsi, plus qu'un simple catalogue descriptif, en laissant la primauté à une approche conceptuelle, j'ai essayé d'offrir un réel guide susceptible de proposer un choix critique parmi les diverses constructions qu'offre OpenMP. Précisons également que ce livre traite peu de sujets tels que les techniques et outils de déverminage ou d'optimisation. Thèmes qui nécessitent un cours à part entière.

I-B. À l'attention des programmeurs déjà expérimentés avec les interfaces propriétaires plus anciennes qu'OpenMP

Bien qu'OpenMP ait été, avant tout, un effort de synthèse des constructions propres aux différents ensembles de directives de microtasking existant depuis une dizaine d'années, la « norme » OpenMP est abordée dans cet ouvrage « telle qu'en elle-même » afin de ne pas dérouter par des références historiques systématiques à des interfaces souvent propriétaires et donc spécifiques à quelques constructeurs. D'autre part, on ne soulignera jamais assez qu'OpenMP va sensiblement au-delà de ses prédécesseurs en intégrant la possibilité de mise en œuvre des techniques de décomposition de domaines. Ainsi OpenMP a cette double richesse d'avoir été d'emblée pensé et conçu pour permettre la parallélisation à gros grain (Coarse Grain) basée sur les techniques de décomposition de domaine) ou à grain fin (fine grain) basée sur les techniques dites de microtasking.

II. Sommaire

  1. INTRODUCTION
    1. Bibliographie
    2. OpenMP : un nouveau standard !
    3. Situer OpenMP parmi d'autres modèles de parallélisation
    4. Structures d'OpenMP
    5. Terminologie
  2. PRINCIPES GÉNÉRAUX
    1. Compilation, chargement et exécution
    2. Modèle d'exécution
    3. Clauses de la directive PARALLEL
    4. Les constructions OpenMP
    5. Règles syntaxiques des directives
  3. STRUCTURATION DES DONNÉES
    1. Gestion mémoire et processus légers
    2. Attribut des données
    3. La clause DEFAULT( )
    4. La directive THREADPRIVATE
    5. Les tableaux dynamiques
    6. Les modules Fortran 95
    7. Statut implicite des variables
    8. Exercice récapitulatif
  4. PARTAGE DU TRAVAIL
    1. La directive SECTIONS
    2. La directive DO
    3. La directive WORKSHARE
    4. La directive PARALLEL SECTIONS
    5. La directive PARALLEL DO
    6. La directive PARALLEL WORKSHARE
    7. La directive MASTER
  5. SYNCHRONISATIONS
    1. Utilité
    2. La directive SINGLE
    3. Les barrières
    4. Les zones critiques : directive CRITICAL
    5. La mise à jour atomique : !$OMP ATOMIC
    6. La clause REDUCTION
    7. Clause ORDERED de DO et directive ORDERED
    8. La directive FLUSH
    9. Exercice récapitulatif
  6. CONCEPTS ET EXEMPLES
    1. OpenMP et Fortran 95
    2. Règles de détermination du statut des variables
    3. Ordonnancement d'une boucle partagée
    4. Régions parallèles dynamiques ou non
    5. Niveaux de répartition du travail
    6. L'orphaning
    7. Le nesting
    8. Binding
    9. Loop-level parallelism
    10. Décomposition de domaines
    11. Réflexions sur les performances
  7. BIBLIOTHÈQUES ET VARIABLES
    1. Les variables d'environnement
    2. La Run-time Library d'OpenMP
  8. CONCLUSIONS
    1. Méthodologie d'« OpenMPisation »
    2. Les atouts d'OpenMP
    3. Limitations du parallélisme via OpenMP
    4. Outils et bibliothèques tierces
    5. Évolutions d'OpenMP
  9. ANNEXES
    1. synoptique OpenMP 2.0
    2. Directives C/C++
    3. Verrous
    4. Comportement dépendant des implémentations
    5. Exemple de travail NQS sur NEC SX5
    6. Passer du macrotasking à OpenMP
    7. Lexique général
    8. Lexique OpenMP
    9. Exercices récapitulatifs, corrections

III. Téléchargement

Téléchargez le cours au format PDF (1.6 Mo, 157 pages) en mode FTP.

Si le lien précédent ne fonctionne pas, utilisez le mode HTTP de secours.

Pour lire les documents au format PDF, vous pouvez utiliser le logiciel Adobe Acrobat Reader.

IV. Les auteurs

Les auteurs sont enseignants-chercheurs au LIMSI (Laboratoire d'Informatique pour la Mécanique et les Sciences de l'Ingénieur).