FLASH INFORMATIQUE FI



Alpine3D




Pierre KUONEN

Nicolas BRASEY


Le logiciel Alpine3D

Alpine3D est un modèle pour des simulations haute résolution de processus de surface en région alpine, en particulier il s’intéresse au processus de la neige. Le modèle prend en compte plusieurs facteurs : la topographie du terrain, la végétation présente, les conditions initiales d’enneigement, la vitesse et la direction du vent. Alpine3D se décline en différents modules, chacun d’eux ayant une tâche bien précise. Il y a tout d’abord un module appelé EnergyBalance. Ce module s’occupe de calculer les effets sur la neige du rayonnement solaire. Le module SnowDrift calcule les mouvements des particules de neige déplacées par le vent. Et finalement le module SnowPack simule l’accumulation de la neige au sol. Ces différents modules ont une grande dépendance entre eux et chacun d’eux influence grandement les autres. Il est également à noter que les modules EnergyBalance et SnowDrift sont des modules tridimensionnels, le module SnowPack est unidimensionnelle car nous faisons la supposition que les contributions latérales des particules de neige sont négligeables.
Alpine3D a été créé à l’Institut Suisse sur la neige et les avalanches à Davos (SLF). Cet institut base son travail dans l’analyse et la prédiction d’événements alpins (avalanche, mouvement d’eau, de roche ou de sol) dans le but de gérer les risques de catastrophes naturelles.

JPEG - 12.9 ko
fig. 1
Accumulation de neige

L’implémentation

Alpine3D est une application multi langages. Les modules de calcul ont été réalisés en C, C++ ainsi que Fortran. Dans une première implémentation les communications entre les différents modules se faisaient essentiellement à travers des fichiers.
Alpine3D est une application exigeante en termes de temps de calcul et d’utilisation de la mémoire. Pour une haute résolution spatiale ( 10m) et un domaine de taille raisonnable ( 100km2), une exécution séquentielle d’Alpine3D devient difficile. Typiquement, le manque de mémoire va rendre la simulation impossible. La seule manière de résoudre ce problème est de rendre l’application parallèle, c’est à dire de partager les données et le calcul et de les distribuer sur différents processeurs. Cela implique bien entendu l’ajout de la synchronisation des différents modules tout en gardant la cohérence des résultats. L’hétérogénéité, la complexité et la configuration dynamique des modules (chaque module peut-être activé ou non) du modèle rend très difficile l’utilisation d’outils de parallélisation classiques tel que MPI (Message Passing Interface [1]) ou PVM (Parallel Virtual Machine [2]).

Utilisation de POP-C++

POP-C++ [3] a été choisi pour effectuer cette tâche de parallélisation et pour déployer Alpine3D sur une grille de calcul (Grid en anglais). Le concept de Grid (introduit pour la première fois en 1999 par Ian Foster et Carl Kesselman dans The Grid:Blueprint for a new computing infrastructure [4]) signifie ici un environnement distribué et hétérogène de ressources de calcul.
POP-C++ est un langage développé à l’école d’ingénieurs et d’architectes de Fribourg (EIA-FR). Il s’agit d’une extension du langage C++ permettant l’exécution des objets d’une manière distribuée. Le concept de base sur lequel est basé POP-C++ est l’objet parallèle. La structure générale de l’implémentation d’Alpine3D avec POP-C++ est montrée dans la figure 2. Alpine3D est constitué de 2 unités structurelles : l’unité d’entrée-sortie (I/O) et l’unité de calcul. L’unité I/O s’exécute sur la machine locale à partir de laquelle a été lancée l’application. Elle permet de mettre à disposition les données nécessaires à la simulation et s’occupe d’écrire les résultats dans des fichiers.

JPEG - 18.6 ko
fig. 2
Structure du logiciel parallèle Alpine3D

L’unité de calcul est quant à elle formé des 3 modules : Snowpack, Snowdrift et EnergyBalance. Chaque module est englobé dans un objet parallèle, POP-C++ s’exécutant sur une machine différente. L’échange d’information avec les autres modules se fait grâce à l’appel de méthodes distantes, fonctionnalité fournie par POP-C++ de manière quasi transparente à l’utilisateur.

Conclusion

POP-C++ a prouvé qu’il était un outil très bien adapté pour le re-engeeninering du code existant ainsi que pour l’exécution de ce code sur le GRID. Par l’extension de C++ pour supporter les objets parallèles distribués, POP-C++ est également la méthode de choix pour effectuer une intégration complète des modules (couplage de codes). Dans Alpine3D, POP-C++ à été utilisé pour encapsuler chaque module dans un objet parallèle, s’exécutant à distance sur une ressource de l’environnement GRID. La syntaxe de POP-C++ est très similaire à celle de C++, il est donc très facile d’intégrer du code POP-C++ au code C++ existant. Puis le compilateur de POP-C++ va combiner le code C/C++ avec le code spécifique aux objets POP-C++ pour générer les différents exécutables pour les différentes plateformes de l’environnement GRID.
Des informations plus détaillées sur l’outil POP-C++ sont disponibles sur le site du GRID & Ubiquitous Computing Group de l’EIA-FR : www.eif.ch/gridgroup/.

Références


  1. I. Foster. What is the Grid ? A Three Point Checklist. GRIDSTART Technical Newsletter, March 2003.
  2. I. Foster, C. Kesselman, and S. Tuecke. The Anatomy of the Grid : Enable Scalable Virual Organizations. Int’I J. Supercomputer Applications, 15(3), 2001.
  3. Michael Lehning, Ingo Völksch, David Gustafsson, Tuan Anh Nguyen, Manfred Stähli and Massimiliano Zappa. A detailed model of mountain surface processes and its application to snow hydrology.

[1] Message Passing Interface. www-unix.mcs.anl.gov/mpi/

[2] Parallel Virtual Machine. www.csm.ornl.gov/pvm/pvm_home.html

[3] Tuan Anh Nguyen and Prof. Pierre Kuonen. POP-C++. www.eif.ch/gridgroup/popc

[4] I. Foster and C. Kesselman. eds., The Grid : Blueprint for a Future Computing Infrastructure. Morgan Kaufmann, San Francisco, 1999.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.