Paralléliser un programme séquentiel est particulièrement difficile car le processus introduit des désynchronisations dans les calculs. L'ordre de leur exécution peut être décalé, entraînant des résultats imprévisibles, différents à chaque exécution et différents des résultats obtenus par le programme séquentiel d'origine. La mise au point des programmes parallèles est de ce fait un véritable cauchemar. Face à cette difficulté, le système OCamlP3l offre une solution élégante et théoriquement fondée : une sémantique séquentielle qui permet d'écrire un programme dont la version parallèle, générée automatiquement, donnera le même résultat que la version séquentielle. Le programmeur dispose de briques de base du parallélisme - les squelettes - dont le comportement de passage du séquentiel au parallélisme est parfaitement maîtrisé. Une dizaine de squelettes, combinés comme on l'entend à l'intérieur d'un cadre contraint, suffit pour exprimer l'essentiel du parallélisme utilisé en pratique. Le logiciel OCamlP3l utilise le langage Objective Caml et tous les outils de ce langage fonctionnel de haut niveau sont à la disposition du programmeur.
Ce résultat, qui paraît quasi miraculeux aux utilisateurs habitués aux mois de travail de mise au point des versions parallèles, est le résultat d'une dizaine d'années de travail, d'abord sur le langage Caml dès 1985 puis OCamlP3l développé avec l'université Paris 7 et l'université de Pise1. Aujourd'hui cette approche est au cœur de l'Arc Moprosco2 qui l'utilise avec succès dans le domaine du calcul scientifique. En effet, les numériciens travaillent fréquemment sur des modèles de grande taille qui nécessitent le recours à de la mémoire répartie sur plusieurs unités centrales. Les codes déjà écrits en Fortran, C ou C++ sont parallélisés sans modification grâce à un moteur en OCamlP3l qui se charge de gérer automatiquement l'ordonnancement des tâches, leur lancement et leur arrêt. Cette technique a été appliquée avec succès au calcul d'un écoulement tridimensionnel autour d'un site de stockage profond de déchets radioactifs pour l'Andra3. La méthode est également transposable au couplage de codes hétérogènes pour la simulation de phénomènes multiphysiques complexes.
1
Le P3l (Pisa parallel programing language) a été
réalisé par l'université de Pise.
Caml a permis à P3l de faire du numérique en vraie grandeur.
2
L'Action de recherche coopérative (Arc)
Moprosco regroupe les équipes
CRISTAL et
ESTIME de
l'INRIA ainsi que l'université Paris 7 et l'université de
Pise.
3
Agence Nationale pour la gestion des Déchets Radioactifs.
Pierre Weis
INRIA Rocquencourt
Tél. : +33 1 39 63 55 98
François Clément
Arc Moprosco, INRIA Rocquencourt
Tél. : +33 1 39 63 58 46
URL: https://www.rocq.inria.fr/estime/MOPROSCO/
Last modification date: Friday, October 11th, 2013.
Copyright © 2005-2013 INRIA, all rights reserved.