Mise en place d`outils et méthodes de développement - iWW
Transcription
Mise en place d`outils et méthodes de développement - iWW
Mise en place d’outils et méthodes de développement pour Polyphemus Meryem Ahmed de Biasi 25 juin 2008 1 / 19 Plan 1 Contexte Présentation de Polyphemus Utilisateurs et partenaires Exemple d’application Objectifs 2 Réalisations Liste des réalisations Réalisation détaillée : parallélisation Bilan 3 Perspectives 4 Conclusion 2 / 19 Plan 1 Contexte Présentation de Polyphemus Utilisateurs et partenaires Exemple d’application Objectifs 2 Réalisations Liste des réalisations Réalisation détaillée : parallélisation Bilan 3 Perspectives 4 Conclusion 3 / 19 Présentation de Polyphemus Polyphemus Plate-forme complète et pérenne pour la modélisation de la qualité de l’air développée par l’EPI CLIME et le CEREA (laboratoire commun ENPC / EDF R&D) Multiple • Multiples modèles • Multiples applications I Échelle locale à échelle européenne I Radionucléides, ozone, aérosols, . . . • Multiples méthodes I Incertitude, prévision d’ensemble I Assimilation de données 4 / 19 Utilisateurs et partenaires En France • • • • • EDF Études d’impact IRSN Radionucléides, crise INERIS Échelle locale, photochimie CETE Nord-Picardie Évaluation des PDU DGA Échelle locale, évaluation d’un réseau de mesure À l’étranger • • • • • CRIEPI (Japon) Photochimie et aérosols EDF Polska Études d’impact IER Stuttgart Impact sur la santé Meteo Chile & CMM &Universidad de Cordoba Prévision Académie Chinoise des Sciences (IAP) Qualité de l’air, ensemble 5 / 19 Exemple d’application Assimilation de données Améliorer la prévision en utilisant à la fois les résultats d’un modèle et des observations. 4 algorithmes différents intégrés dans Polyphemus. 160 55 140 reference observation OI EnKF 4DVar RRSQRT 120 g´ m 3 50 Concentration 100 45 80 60 40 40 35 -10 -5 0 5 10 15 20 20 0 10 20 30 40 Observation numbers Réseau de mesures EMEP. Résultats à la station de Montandon. 6 / 19 Objectifs Contexte à mon arrivée • Le code commençait à avoir une certaine maturité. • Le nombre d’utilisateurs augmentait. • Pas de sorties régulières de versions stables. Évolution du code jusqu’à mars 2007. Objectifs • Faciliter l’utilisation de Polyphemus à l’extérieur de CEREA/CLIME et améliorer la diffusion. • Permettre et pérenniser les développements extérieurs. • Améliorer certaines fonctionnalités du code (besoin utilisateurs). 7 / 19 Plan 1 Contexte Présentation de Polyphemus Utilisateurs et partenaires Exemple d’application Objectifs 2 Réalisations Liste des réalisations Réalisation détaillée : parallélisation Bilan 3 Perspectives 4 Conclusion 8 / 19 Réalisations (1/4) Amélioration du code • Amélioration de l’ergonomie (ligne de commande) • Amélioration de la portabilité 64 bits • Imbrication de simulations • Script de simulation simplifié et interface graphique • Version parallèle de Polair3D 9 / 19 Réalisations (2/4) Mise en place d’outils • Réalisation de deux documents sur les processus de développement et sur la sortie de version. • Passage à INRIA Gforge I I I I I 4 listes de diffusion 2 outils de suivi Dépôt Subversion centralisé Téléchargement Documents 10 / 19 Réalisations (3/4) Diffusion du code • Sortie de 4 versions stables (et 5 versions patchées) • Évolution de la documentation I Guide d’utilisateur (170 pages) I 3 cas-tests I Sessions de formation (plus de 24 h de formation) I Documentation de 4 bibliothèques (générée par Doxygen et Epydoc) 11 / 19 Réalisations (4/4) Diffusion du code • Mise à jour du site Internet (Présentation, Téléchargement, FAQ . . . ) • Sessions de formation I I A l’ENPC (mars 2007), 13 participants. 8 sessions différentes proposées (environ 3h par session). A Santiago du Chili (juin 2007), une dizaine de participants de 5 pays. 2 sessions (essentiellement assimilation de données) • Support aux utilisateurs (INERIS, CMM, . . . ) 12 / 19 Réalisation d’une version parallèle Besoin • Utilisation opérationnelle : la durée des calculs doit rester faible. • Clusters et machines multiprocesseurs de plus en plus répandus. Principe Domaine divisé en sous-domaines indépendants pour lesquels la simulation est assurée par un des processus parallèles. Mise en oeuvre • Utilisation de la bibliothèque LAM/MPI pour les communications entre processus parallèles • Parallélisation d’un module d’advection, d’un module de diffusion et d’un de chimie. 13 / 19 Outils disponibles actuellement (1/2) Diffusion • Site Internet de Polyphemus • Zone de téléchargement sur INRIA Gforge • Liste de diffusion pour les annonces Développement • Dépôt Subversion accessible à tous les développeurs • Conventions de codage • Document sur les processus de développement • Liste de diffusion pour les développeurs 14 / 19 Outils disponibles actuellement (2/2) Documentation et support • Guide d’utilisateur (50 -> 170 pages) • 3 cas-tests (1 avant) • 8 sessions de formation • Liste de diffusion pour demander de l’aide • 2 outils de suivi : bugs, demande • FAQ 15 / 19 Plan 1 Contexte Présentation de Polyphemus Utilisateurs et partenaires Exemple d’application Objectifs 2 Réalisations Liste des réalisations Réalisation détaillée : parallélisation Bilan 3 Perspectives 4 Conclusion 16 / 19 Perspectives Améliorer la qualité du code • Développer des tests unitaires et de non régression. Faciliter la diffusion et les partenariats • Période critique : certains outils viennent d’être mis en place, il faut faire en sorte qu’ils soient bien utilisés (suivi, listes de diffusion . . . ) • Former et suivre les développeurs extérieurs • Faire des scripts d’utilisation simplifié adaptés aux besoins spécifiques d’utilisateurs (en cours, pour EDF) 17 / 19 Plan 1 Contexte Présentation de Polyphemus Utilisateurs et partenaires Exemple d’application Objectifs 2 Réalisations Liste des réalisations Réalisation détaillée : parallélisation Bilan 3 Perspectives 4 Conclusion 18 / 19 Conclusion Ce que j’ai appris • Techniques : I C++ I Python I Qt I Parallélisation. • Travailler sur un code de cette importance : I Utilisation de Subversion pour le travail collaboratif. I Utilité des outils comme Gforge (limite le travail pour la diffusion) I Importance de la documentation pour les utilisateurs extérieurs I Méthodes pour garder le code le plus propre et le plus lisible possible 19 / 19