Personal tools
You are here: Home Calcul Technique Documentation IBM cluster p575 (Power5) Parallélisme à mémoire partagée
Document Actions

Parallélisme à mémoire partagée

Principes de ce parallélisme et implémentation avec OpenMP

OpenMP : introduction

OpenMP est un standard portable permettant de paralléliser une application sur des plateformes SMP (Symmetric MultiProcessor, i.e. architecture homogène, mémoire partagée). Des directives portables sont à insérer dans les sources de l'application. Les caractéristiques de ce standard sont les suivants :
  • Scalabilité
  • Simplicité d'utilisation : parallélisation incrémentale
  • Portabilité au SMP
  • Parallélisation de haut niveau
  • Flexibilité pour exprimer différents types de parallélisme
  • Orienté performances
Le standard OpenMP est le site officiel.

OpenMP est complètement supporté à partir de la version XLF 8.1 des compilateurs IBM. L'option qui active la parallélisation est -qsmp=omp, voir la page du compilateur Fortran XLF, rubrique optimisation. Il est nécessaire de l'utiliser avec un niveau d'optimisation suffisant, au moins O3.

Retour au début de la page.


Principes d'OpenMP

Modèle "fork & join"

Le Fortran OpenMP utilise le modèle "fork & join" d'exécution en parallèle. Un programme écrit à l'aide d'OpenMP commence l'exécution comme un seul processus appelé thread maitresse. Cette tache maitresse s'exécute séquentiellement jusqu'à la première construction parallèle rencontrée. Les deux directives PARALLEL et END PARALLEL entourent une telle construction. Quand le début d'une zone parallèle est atteinte, la master thread créée une équipe de taches dont elle devient le maitre. Toutes les instructions du programme se situant à l'intérieur d'une construction parallèle, incluant les subroutines appelées à l'intérieur de celle-ci, sont exécutées en parallèle par chaque thread de l'équipe. Une fois la fin de la zone parallèle atteinte, les taches se synchronisent et seule la master thread continue l'exécution. Le nombre de telles constructions parallèles dans un même programme n'est pas limité. Ainsi un programme peut fork et join de nombreuses fois durant l'exécution.

Lien vers la page OpenMP.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: