T. Morel – OpenPALM – IRSTEA décembre 2015 1 Un coupleur dynamique de codes parallèles pour les applications multi-physiques ou multi-composants CERFACS-ONERA.

Slides:



Advertisements
Présentations similaires
Page 1 SIESTE février 2005 Un coupleur dynamique de codes parallèles URL: Thierry Morel.
Advertisements

Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.

RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
Développement d'applications Web avec le framework PHP Symfony 2 Mathieu Peltier (Mercator Océan - CNRS) (UMS 831, Observatoire Midi-Pyrénées)
TP 1 BIS Programmation structurée à l’aide de fonctions (FC) et de bloc fonctionnels (FB)
Plan Présentation de 2TUP 2TUP, un processus UP 2TUP et UML Les apports de 2TUP 2TUP en détail 2TUP dans la pratique.
Cahier des charges.
ARCHITECTURE RESEAUX.
LES PRATIQUES D’EVALUATION EN SVT DEFINITIONS OBJECTIFS MODALITES
Les commandes externes
JAVA.
Présenté par M. Anis DIALLO
Google analytics.
Usine de Développement.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Ecriture collaborative d’une dissertation en classe
Le Cycle de vie d’un logiciel
Séminaire Novembre 2006 Zephir : Déploiement et supervision des serveurs Eole.
Les Bases de données Définition Architecture d’un SGBD
Algorithmique demander jeu du pendu.
MOT Éditeur de modèles de connaissances par objets typés
7.10 Le suivi des évaluations annuelles Textes de référence Norme AFNOR NF X § 5 Compétences requises liées aux fonctions 7.10 Le suivi.
MORCEAUX CHOISIS DU RAPPORT d’EQUISTRATIS
FENIX Aperçu GLOBALE DU Système
Soutenance de Mémoire de Master En vue de l’obtention du diplôme de master En Physique des fluides et des transferts THEME Etude des champs dynamique.
Activités algorithmiques
Réalisation d'agents de surveillance Zephir
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Asynchronous Javascript And Xml
Plans d’expériences: Plans factoriels
Démarche de conception. Démarche didactique.
Processus « Contrôler les subventions réglementaires» Harmonisation et simplification administrative – 11 mai CSS.
Communauté Economique et Monétaire de l’Afrique centrale (CEMAC)
Programmation Orientée Objet
Formation sur les bases de données relationnelles.
Développement d’applications interactives
Programmation Android Première application Android
L1 Technique informatique
Programme financé par l’Union européenne
Assembleur, Compilateur et Éditeur de Liens
Modélisation objet avec UML
Approche réalisation d’un objet technique tout ou en partie
Un ordinateur avec un œil !!
Réunion AquiFR Rappel Réunion de Lancement Février 2014
Présenté par M. Anis DIALLO
Echange de Données ALE / I-DOC Pierre-Olivier GREGOIRE Julien HUYNH
Projet pré-AquiFR.
Avancement de la plateforme, développement temps réel, prévision saisonnière Réunion pleinière Aqui-FR, Jussieu le 29 mai 2018.
Présentation 4 : Sondage stratifié
EPITECH 2009 UML EPITECH 2009
JDepend - Analyse de la qualité du code Java -
Reconnaissance de formes: lettres/chiffres
Thierry Morel, Un coupleur dynamique de codes parallèles pour les applications multi-physiques ou multi-composants CERFACS-ONERA Thierry.
Objectifs de la réunion:
Travaux Pratiques de physique
AquiFR : Réunion d’avancement
AquiFR - Point sur le développement de la structure informatique et sur les évaluations N. Roux – 21 octobre 2017.
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
État d'avancement de la plate-forme OpenPalm
Design, innovation et créativité
LE TORSEUR STATIQUE 1) Définition 2) Notation 3) Deux cas particuliers
Modélisation des SI et de la connaissance
UC : Diagramme des cas d’utilisation Req : Diagramme d’exigence
I. Aouichak, I. Elfeki, Y. Raingeaud, J.-C. Le Bunetel
National Instruments Leadership Seminar
Type Tableau Partie 1 : Vecteurs
MOT Éditeur de modèles de connaissances par objets typés
Les données structurées et leur traitement
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

T. Morel – OpenPALM – IRSTEA décembre Un coupleur dynamique de codes parallèles pour les applications multi-physiques ou multi-composants CERFACS-ONERA

T. Morel – OpenPALM – IRSTEA décembre Le problème du couplage de code Les solutions avec OpenPALM Quelques applications OpenPALM Plan de la présentation

T. Morel – OpenPALM – IRSTEA décembre Le problème du couplage de codes  Construire des applications modulaires par couplage de leurs composants élémentaires (assimilation de données,…) Découpler (découper) les problèmes pour mieux les assembler en tirant partie du parallélisme intrinsèque des applications  Créer des applications avec des codes existants Post-processing parallèle Optimisation, UQ : algorithme autour d’un modèle … Recherche de la position optimale des entrées d’air dans une chambre de combustion Pourquoi coupler des codes de calcul ?  Traiter un système dans sa globalité Océan-atmosphère Interaction fluide-structure … NEMOARPEGE + Echange de flux de températures Modélisation du climat Océan Atmosphère

T. Morel – OpenPALM – IRSTEA décembre Le problème du couplage de codes Code 1 Code 2 données Qu’est-ce que cela implique ? - De gérer l’exécution (séquentielle et/ou parallèle) des codes - D’assurer l’échange d’informations entre les codes Avec quels objectifs ? - Facilité de mise en œuvre - Efficacité : pas de perte de performance - Portabilité : des solutions techniques standardisées - Flexibilité : pouvoir tester facilement différentes configurations - Généricité : réutiliser les développements pour d’autres couplages Méthodes - fusion des codes - Utilisation d’un protocole de communication - Utiliser un coupleur

T. Morel – OpenPALM – IRSTEA décembre Première solution : fusion des deux codes de calcul prog1 & prog2 Program prog2 Subroutine sub_prog2(in,out) … end Program prog1 … Call sub_prog2(in, out) … end Très efficace en temps de calcul (passage des données par adresse, …) Problèmes d’intégration (pas d’indépendance informatique des codes): variables globales, unités logiques fortran, options de compilation, langages, … Degré zéro de la flexibilité (problèmes de maintenance, évolution, …) Problèmes éventuels de mémoire Pas d’indépendance de parallélisme pour les codes // C’est de l’assemblage et non du couplage (pas de parallélisme) Comment s’y prendre ?

T. Morel – OpenPALM – IRSTEA décembre Seconde solution : utiliser une protocole de communication (PVM, MPI, CORBA, pipe UNIX, fichiers, SOCKET …) Prog1 Prog2 Program prog2 … Call XXX_Recv(prog1, données) end Program prog1 … Call XXX_Send(prog2, données) end Plus ou moins efficace selon le mécanisme Couplage non générique : l’instrumentation du code dépend de l’application Demande une bonne expertise en calcul parallèle Couplage non flexible (parallélisme, interpolation, …) Pas toujours portable selon le mécanisme utilisé Trop complexe avec plus de deux codes et de nombreux échanges send recv Comment s’y prendre ?

T. Morel – OpenPALM – IRSTEA décembre OASIS Troisième solution : utiliser un coupleur Prog1 Prog2 OpenPALM MPCCI SALOME Pas de problèmes d’intégration et de mémoire : les codes restent indépendants Flexibilité (problèmes de maintenance, évolution, …) Indépendance du parallélisme L’efficacité dépend du couplage et du coupleur Le coupleur propose des outils qu’on n’aura pas à développer, interpolation, redistribution des données Si l’un des codes a déjà été instrumenté avec ce coupleur, une partie du travail peut être récupérée Mais comme tout nouvel outil demande un investissement au départ Comment s’y prendre ?

T. Morel – OpenPALM – IRSTEA décembre Le problème du couplage de code Les solutions avec OpenPALM Quelques applications OpenPALM Plan de la présentation

T. Morel – OpenPALM – IRSTEA décembre CWIPI & Open Source LGPL Le coupleur OpenPALM

T. Morel – OpenPALM – IRSTEA décembre Quelques dates 1998 : idée de PALM, Philippe Courtier MF pour l’assimilation de données 2000 : Première maquette PALM_PROTO pour Mercator Océan 2002 : PALM_Research, version SPMD simulant du MPMD 2004 : PALM_MP, vrai MPMD 2011 : Open source, collaboration avec l’ONERA

T. Morel – OpenPALM – IRSTEA décembre Les caractéristiques du coupleur PALM Couplage statique Couplage dynamique Les deux codes de calcul sont lancés en début de simulation et se terminent ensemble à la fin de l’application Exemple : couplage Océan/Atmosphère pour le climat Code1 Code3 Code2 Code1 Code2 Lancement en boucle ou sous conditions Coupleurs classiques Coupleur PALM Description d’algorithmes complexes Gestion dynamique des ressources (processeurs et mémoire) temps Boucle Code4 condition

T. Morel – OpenPALM – IRSTEA décembre Les caractéristiques du coupleur PALM Comment décrire des algorithmes complexes ? Interface graphique PrePALM pour :  Matérialiser les composants  Gérer le parallélisme  Décrire des boucles et des conditions autour des composants  Décrire des communications Avec tout ce que peut apporter une IHM comme :  Des contrôles de cohérence des données échangées  La mise en relief de l’algorithme de couplage  Des fonctionnalités d’analyse de l’application et de monitoring

T. Morel – OpenPALM – IRSTEA décembre Unité PALM : composant informatique -Code de calcul -Partie d’un code de calcul -Unité prédéfinie de la boite à outils - subroutine fortran, fonction C ou C++ - script Python, tcl, Octave, R, … - programme indépendant Unité parallèle 32 Nombre de proc Les composants : vos codes

T. Morel – OpenPALM – IRSTEA décembre Branche : séquence d’unités, d’instructions et de structures de contrôle : algorithme Les caractéristiques du coupleur PALM

T. Morel – OpenPALM – IRSTEA décembre Deux niveaux de parallélisme pour exploiter au maximum le parallélisme intrinsèque d’une application Composants distribués : unités Parallélisme de tâches : branches Calcul parallèle « en dessinant » Assemblage de composants : blocs décomposition fonctionnelle (avec dépendance informatique) Les caractéristiques du coupleur PALM

T. Morel – OpenPALM – IRSTEA décembre Lancement dynamique de processus Dans l’IHM Branches parallèles Structures de contrôle Régions Fortran En dessinant des branches on fait directement du parallélisme de tâche. Chaque composant est un exécutable MPI indépendant (MPMD). Interface graphique très intuitive pour l’utilisateur, avec beaucoup de fonctionnalités disponibles, donc nécessité de se former à l’outil.

T. Morel – OpenPALM – IRSTEA décembre  Pas de spécification concernant l’unité réceptrice ou émettrice de l’objet produit ou consommé dans les codes de calcul Production de données : SERVEUR CALL PALM_Put (…)CALL PCW_Send (…) Consommation de données : CLIENT CALL PALM_Get (…)CALL PCW_Recv (…) Schéma de communication « end point » Dans le code source des unités : envoi ou réception potentiel Les caractéristiques du coupleur PALM

T. Morel – OpenPALM – IRSTEA décembre Objet : quantité de données produite ou consommée par une unité Communication : échange d’un objet entre deux unités Les caractéristiques du coupleur PALM Les communications effectives sont décrites en reliant les plots dans l’interface graphique

T. Morel – OpenPALM – IRSTEA décembre Les caractéristiques du coupleur PALM PALM s’appuie sur la librairie MPI, version complète avec MPI-2 ou version « un peu dégradée » avec MPI-1 (recommandée pour le HPC) Communications optimisées Environnement hétérogène et codes commerciaux : fonctionnalités par sockets IP et unités miroir Quelques Spécificités => Déploiement sur tous types de machine : NEC, CRAY, IBM, SGI, BLUE GENE, Linux, Mac OS X …. mais pas WINDOWS => De manière standard, le driver de PALM est informé de tous les échanges (routage dynamique). Si l’algorithme de couplage le permet, l’utilisateur peut choisir de lever ce contrôle (routage statique)

T. Morel – OpenPALM – IRSTEA décembre Open-PALM = PALM & CWIPI CWIPI : alternative à MpCCI développée par l’ONERA, CWIPI peut être utilisé sans PALM Basé sur la définition de maillages partitionnés ou non Gestion des communications entre codes Interpolation non conservative 1D, 2D, 3D surfacique et 3D volumique Gestion des interpolations utilisateurs par un mécanisme de callback Sorties graphiques : partitionnement des maillages, identification des points non localisés, champs échangés Interface C/C++, Fortran et Python IHM de PALM permet de rendre plus générique l’instrumentation des codes

T. Morel – OpenPALM – IRSTEA décembre Direct communications are mandatory for HPC CWIPI

T. Morel – OpenPALM – IRSTEA décembre Determination of an industrial combustor wall temperatures Un couplage pas à pas avec OpenPALM

T. Morel – OpenPALM – IRSTEA décembre D’un code de calcul … à une unité OpenPALM… 1) Création de la carte d’identité pour l’IHM PrePALM !PALM_UNIT -name n3snatur\ ! -functions {F90 n3snatur}\ ! -object_files {lib_n3snatur.a}\ ! -parallel mpi -minproc 1 -maxproc 128\ ! -comment {Code fluide N3SNatur} ! !PALM_SPACE -name send_field_space\ ! -shape (nb_node,nb_var)\ ! -element_size PL_DOUBLE_PRECISION\ ! -comment {Send Field space} ! !PALM_DISTRIBUTOR -name field_distrib\ ! -type custom\ ! -shape (nb_node,nb_var)\ ! -nbproc proc_n3s\ ! -function func_field_distrib\ ! -object_files {./distr.o} ! !PALM_OBJECT -name SEND_FIELD\ ! -intent OUT\ ! -localisation DISTRIBUTED_ON_ALL_PROCS\ ! -space send_field_space -time ON\ ! -distributor field_distrib\ ! -comment {distributeur de h} Un couplage pas à pas avec OpenPALM

T. Morel – OpenPALM – IRSTEA décembre ) Instrumentation du code source !program N3SNatur subroutine N3SNatur() USE palmlib !* PALM interface ! ! CALL MPI_Init(…) ! CALL MPI_Comm_rank(MPI_COMM_WORLD, il_rank, err) CALL MPI_Comm_rank(PL_COMM_EXEC, il_rank) CALL PALM_Get (‘recv_field_space’, ‘RECV_FIELD’, time, tag, array, error) … ! CALL MPI_Abort() CALL PALM_Abort() … CALL PALM_Put (‘send_field_space’, ‘SEND_FIELD’, time, tag, array, error) … ! CALL MPI_Finalize(…) ! End Subroutine N3SNatur Un couplage pas à pas avec OpenPALM

T. Morel – OpenPALM – IRSTEA décembre ) Définition de la branche dans l’interface PrePALM Launch units DO loop, While loop operator, conditional operator Communications with branch Fortran, shell program Un couplage pas à pas avec OpenPALM

T. Morel – OpenPALM – IRSTEA décembre ) Définition des communication entre les unités Un couplage pas à pas avec OpenPALM

T. Morel – OpenPALM – IRSTEA décembre Le problème du couplage de code Les solutions avec OpenPALM Quelques applications OpenPALM Plan de la présentation

T. Morel – OpenPALM – IRSTEA décembre Quelques exemples d’utilisation Fédération des principaux acteurs de la communauté scientifique SA, LA, LSCE, LPCE, LMD, IPSL, CERFACS, L3AB, CNRM, ACRI, CNES Projet soutenu par le PNCA Utilisation d’un outil commun pour -Échanger facilement des composants : modèles, opérateurs d’observation Échanger des méthodes 3d_fgat 4d_var L’algorithme d’assimilation est simplement redéfinit dans l’interface graphique PrePALM, aucune ligne n’est modifiée dans le code source des unités. On ajoute certaines unités comme le modèle adjoint et le linéaire tangent Assimilation de DOnnées dans les MOdèles de Chimie Atmosphérique

T. Morel – OpenPALM – IRSTEA décembre Projet AquiFR Plate-forme développée sous OpenPalm

T. Morel – OpenPALM – IRSTEA décembre AquiFR Projet financé par l'ONEMA Partenaires  Metis, UMR 7619 UPMC/CNRS, Paris.  Lhyges, UMR 7517 UdS-CNRS-Engees, Strasbourg.  BRGM Gestion de la Ressource en Eau, Orléans  Météo-France, Direction de la Climatologie et des Services Climatiques, Toulouse.  BRGM, Montpellier  Géosciences Rennes - UMR6118, Rennes  CNRM-GAME, UMR 3689, Toulouse  CERFACS, Toulouse.  Centre Géosciences Mines-ParisTech, Fontainebleau. Chef de projet : Florence Habets (UPMC)

T. Morel – OpenPALM – IRSTEA décembre AquiFR Rassembler sur une même plateforme numérique les applications hydrogéologiques opérationnelles développées par les différents partenaires Couvrir la France par bassins versants en utilisant différents modèles  Eaudysseé / Modcou (UMPC)  Marthe (BRGM)  Nouveaux modèles pour les aquifères de socle et karst Les différents modèles sont alimentés par le schéma de surface SURFEX (CNRM) avec à terme une rétroaction des modèles vers SURFEX Exploitation en opérationnel sur les machines de Météo-France Bulletin de suivi hydrologique et prévisions climatique

T. Morel – OpenPALM – IRSTEA décembre Applications incorporées dans la maquette version du 29 janvier 2015 Plate-forme sous OpenPalm comprenant:  4 applications EauDyssée : Basse Normandie, Loire, Seine, Somme Pas de temps journalier Résolution de 125 m à 8000 m  1 application Marthe : Poitou-Charente (POC) Pas de temps mensuel Résolution 1000 m Code d'EauDyssée:  Instruction PALM pour couplage avec sorties SURFEX Code Marthe:  Librairie MARTHE tourne sous PALM

T. Morel – OpenPALM – IRSTEA décembre Rappel carte des applications mailles Basse Normandie Seine Loire Somme Poitou-Charente

T. Morel – OpenPALM – IRSTEA décembre Rappel hiérarchie des répertoires AquiFREauDyssée Marthe Palm rundir Basse Normandie Somme Poitou-Charente Loire Seine Répertoire des codes Marthe : Sortie binaire, texte EauDyssée : Sortie binaire, texte

T. Morel – OpenPALM – IRSTEA décembre Application Palm d'AquiFR version du 29 janvier Variables d'entrées (pas de temps, etc.) : initialement inscrites dans fichiers d'entrée du modèle - Forçage :Infiltration et ruissellement à chaque pas de temps Lecture fichier SURFEX grille SAFRAN 8 km sur la France au pas de temps journalier 4 Applications EauDyssée avec directives Palm 1 Application Marthe indépendante Synchronisation des applications à chaque pas de temps Communique 1 entier de synchronisation

T. Morel – OpenPALM – IRSTEA décembre Marthe est couplé avec instructions Palms au pas de temps journalier - Application sur la Somme - POC en journalier pas encore testé Application openPalm d'AquiFR version du 21 avril 2015 Synchronisation des applications à chaque pas de temps Communique 1 entier de synchronisation MARTHEEauDyssée

T. Morel – OpenPALM – IRSTEA décembre Application openPalm d'AquiFR version du 21 avril 2015 MARTHEEauDyssée Regroupement des 4 branches EauDyssée dans 1 seule branche EauDyssée tourne en parallèle au sein de la même branche. - nécessite de connaître le répertoire de run de l'application en fonction du numéro de processeur

T. Morel – OpenPALM – IRSTEA décembre Regroupement des 4 branches EauDyssée Mise en parallèle d'EauDyssée dans sa carte d'identité !PALM_UNIT -name eaudyssee\ ! -functions {F90 SUB_ODIC}\ ! -object_files {../EauDyssee/src/dir_obj/libeaudyssee_aquifer.a}\ ! -parallel mpi\ ! -minproc 1\ ! -maxproc 10\ ! -comment {librairie ODIC} ! … !PALM_OBJECT -name ruissellement\ ! -space NULL\ ! -localisation REPLICATED_ON_ALL_PROCS\ ! -intent IN\ ! -time ON\ ! -comment {Ruissellement SURFEX 1D} … Constante nb_appli_odic définie dans prepalm (nb_appli_odic = 4 pour 4 applications tournant en parallèle sur 4 processeurs)

T. Morel – OpenPALM – IRSTEA décembre Regroupement des 4 branches EauDyssée Lecture des répertoires de simulations de chaque applications à partir d'un fichier texte nommé “working_directory_eaudyssee” : Nb_mailles Working_directory /rundir/somme /rundir/loire /rundir/basse_normandie /rundir/seine_6_couches_ISBA_AGS Changement de répertoire de run en fonction du numéro de processeur numéroté de 0 à 3 Au tout début du code d'EauDyssée : CALL MPI_Comm_rank(PL_COMM_EXEC, il_rank, il_err) CALL CHDIR(TRIM(YTABAPPLI(il_rank + 1))) OPEN(10, FILE='working_directory_eaudyssee', FORM='FORMATTED', STATUS='OLD') READ(10, *) DO I = 1, nb_appli_odic READ(10, '(I5, 1x, A100)') INBSOU, YTABAPPLI(I) ENDDO CLOSE(10)

T. Morel – OpenPALM – IRSTEA décembre Application openPalm d'AquiFR version du 21 avril 2015 MARTHEEauDyssée Regroupement des 4 branches EauDyssée dans 1 seule branche Communique un tableau contenant les hauteurs de nappe les échanges nappe-rivière

T. Morel – OpenPALM – IRSTEA décembre Transmission des données hauteurs nappe et échange nappe/rivière SommeSeine Loire Basse normandie EauDyssée parallèle sur 1 branche Nb de mailles 4 tableaux produits de taille (2, nombre de mailles de l'appli) 1 tableau global de taille (2, nbsou_global) Constante Palm : nbsou_global = nombre de mailles totales des applis = Hauteur nappe Qnappe/riv Coté Palm, utilisation d'un distributeur de type « custom » décrivant la répartition des tableaux locaux de chaque appli dans le tableau global. Distributeur Palm

T. Morel – OpenPALM – IRSTEA décembre Transmission des données hauteurs nappe et échange nappe/rivière Modification de la carte d'idendité d'EauDyssée !PALM_DISTRIBUTOR -name distr_aquifer\ ! -type custom\ ! -shape (nbsou_global, 2)\ ! -nbproc nb_appli_odic\ ! -function distr_aquifer\ ! -object_files {distr_aquifer.o domain_aquifer.o}\ ! -comment {} ! !PALM_SPACE -name size_aquifer\ ! -shape (nbsou_global, 2)\ ! -element_size PL_DOUBLE_PRECISION\ ! -comment {size aquifer} ! !PALM_OBJECT -name hauteur_qnapriv\ ! -space size_aquifer\ ! -distributor distr_aquifer\ ! -localisation DISTRIBUTED_ON_ALL_PROCS\ ! -time ON\ ! -intent OUT\ ! -comment {Matrice hnappe et qnapperiv} Description du distributeur basé sur les subroutines Fortran distr_aquifer.f90 et domain_aquifer.f90 Dans l'objet transmis, indication du distributeur utilisé et localisation

T. Morel – OpenPALM – IRSTEA décembre Transmission des données hauteurs nappe et échange nappe/rivière Dans le code EauDyssée, un seul PUT du tableau local de l'appli à rajouter à chaque pas de temps en remplacement de l'entier de synchronisation : ZHQ_ZHQ_OUT(:, 1) = ZH_PIEZO OUT(:, 2) = ZQNAPPE_RIV cl_object = 'hauteur_qnapriv' cl_space = 'size_aquifer' CALL PALM_PUT(cl_space, cl_object, JSTEP, PL_NO_TAG, ZHQ_OUT, il_err) Plus besoin de « tags » dans les communications → répartition des vecteurs locaux gérés dans « distr_aquifer.f90 » et « domain_aquifer.f90 »

T. Morel – OpenPALM – IRSTEA décembre Quelques exemples d’utilisation Chaine d’optimisation

T. Morel – OpenPALM – IRSTEA décembre Application mode IP (J. Richard) DRIVER Miroir MARC MARC AVBP Monde MPI Couplage fluide/structure Code aérodynamique : AVBP ou CEDRE Code mécanique : MARC IP

T. Morel – OpenPALM – IRSTEA décembre NEDUM SLEUTH* GENIUSSURFEX Conditions météo Surfaces nouvelles à urbaniser (Quantité de changement) Attractivité Carte des zones urbanisables Cartes de l’évolution de densité de bâti et population Carte et paramètres des îlots urbains  Données échangées entre les modèles à chaque pas de temps Température Humidité Flux radiatifs Précipitations GAME - AUAT - CERFACS ENM-CIRED - GEODE GRECAU - IMT - ONERA Le projet ACCLIMAT a bénéficié d’une aide de la Fondation de Coopération Scientifique STAE Toulouse Projet RTRA/STAE ACCLIMAT : plateforme de modélisation de la ville Toulouse Expansion urbaine et impact du changement climatique à l’horizon 2100 Expansion urbaine et génération de la forme urbaine Génération d’îlots urbains et leur évolution Simulation du climat urbain et calcul des impacts énergie-climat Génération des conditions climatiques à l’échelle de la ville

T. Morel – OpenPALM – IRSTEA décembre GAME - AUAT - CERFACS ENM-CIRED - GEODE GRECAU - IMT - ONERA Le projet ACCLIMAT a bénéficié d’une aide de la Fondation de Coopération Scientifique STAE Toulouse Projet RTRA/STAE ACCLIMAT : plateforme de modélisation de la ville Toulouse Expansion urbaine et impact du changement climatique à l’horizon 2100 Modèles très différents: Socio/économique NEDUM : (matlab) Géo-morphologique SLEUTH (C) Atmosphère : MésoNH (Fortran //) Sols : Surfex (Fortran) Interpolation géophysique

T. Morel – OpenPALM – IRSTEA décembre Exemples d’applications 48 TURBO-AVBP Utilisateurs : CERFACS, IMFT, Sherbrooke University… Couplage de plusieurs instances d’AVBP

T. Morel – OpenPALM – IRSTEA décembre Thèse Sébastien Barthélémy (2015) Modèle couplé 1D/2D Bayonne Confluence Nive - Adour

T. Morel – OpenPALM – IRSTEA décembre Thèse Sébastien Barthélémy (2015) Modèle couplé 1D/2D Bayonne

T. Morel – OpenPALM – IRSTEA décembre OpenPALM en résumé Un coupleur dynamique des codes parallèles Conçu pour réaliser des algorithmes complexes (ou non), Avec un grande flexibilité, Faire discuter des codes (parallèles) qui tournent en même temps ou pas  Couplage de codes,  Algorithmes d’assimilation de données,  Optimisation,  Post traitement en temps réel,  UQ,  … Des formations organisées régulièrement au CERFACS, prochaine session : janvier 2016, inscritpitions sur le site du Cerfacs

T. Morel – OpenPALM – IRSTEA décembre

T. Morel – OpenPALM – IRSTEA décembre Besoin pour le projet Eau-dyssée Projet Eau-dyssée, école des mines de Paris, Florence Habets Modélisation intégrée de l’hydrosystème basée sur le couplage de modèles : Météo, hydrologie, agriculture… Utilisation d’OpenPALM dans ce projet pour coupler les différents modèles. Anthroposphère Économie (Assolement, pratiques agricoles) Aménagement (retenue, pompag e) Météo ISBA-SURFEX (MF) Agriculture STICS (INRA Avignon) Hydrologie MODCOU (Mines Paristech)

T. Morel – OpenPALM – IRSTEA décembre Pourquoi Parasol ? Le modèle d’agriculture STICS ne traite qu’une seule parcelle, le but est de traiter un bassin versant entier (~1500 STICS). Il existe des solutions avec PALM : D’où PALM PARASOL But : automatiser les lancements en parallèle, en recherchant d’être un minimum intrusif dans le code source, la facilité de mise en œuvre et l’homogénéité avec PALM. - Méthode Andrea : Décrire plusieurs branches dans PrePALM pour lancer plusieurs fois le même code en parallèle. Relativement facile à paramétrer en fonction du nombre de processeur disponibles, mais il faut aussi gérer l’envoi et la réception des données alimentant les différentes instances. Assez fastidieux et compliqué à maintenir. - Méthode brute : Lancer STICS en boucle sur les parcelles. Inconvénient : long à tourner car STICS est relativement gourmand. Il faut gérer les données alimentant les différentes instances de STICS

T. Morel – OpenPALM – IRSTEA décembre Pourquoi Parasol ? Limitation : les différentes instances (parcelles) du code sont indépendantes les unes des autres : pas d’échange de données entre les différentes parcelles. Le but de PARASOL n’est pas de paralléliser tout type de programme. Ce besoin est récurent pour plein d’autres applications – Plan d’expériences, étude paramétrique, Monté Carlo, AD Blue: lancement de n fois le même modèle. Les données d’entrée sont donc un vecteur de taille n, les modèles eux même peuvent être // – De nombreuses applications PALM pourront bénéficier de PARASOL Remarque : n instances à lancer et m processeur disponibles – En général n > m – Gain espéré en temps de calcul : facteur m sur ce composant

T. Morel – OpenPALM – IRSTEA décembre Analyse fonctionnelle Lancer Eclater Collecter Les tableaux qui alimentent le code cible peuvent venir de plusieurs programmes Les résultats doivent être regroupés pour les envoyer aux programmes qui en ont besoin. Vecteur de données en entrée 1 S tics 1 S tics 2 S tics m … vecteur résultat Vecteur de données en entrée 2 boucle si m < n Code 1 Code 2 Code 3

T. Morel – OpenPALM – IRSTEA décembre Première implémentation version 1.0 Dans PrePALM : Un programme master permet de lancer les différentes instances de STICS, en mode maître ouvrier MPI-2, avec MPI_comm_spawn Rôle du master : lancer les n instances de STICS par groupe de m processus S tics 1 S tics 2 S tics m … n : taille du problème m : nombre de proc pour Stics Le programme STICS n’apparait pas dans le canevas de PrePALM, tout passe par le master.

T. Morel – OpenPALM – IRSTEA décembre implémentation n : taille du problème Données destinées aux programmes à paralléliser : objets PALM – Tableaux dont l’une des dimensions est de taille n pour les unités qui fournissent les données aux programmes cible. Pour le code : arguments de subroutine – Nécessite de remonter au niveau de la liste d’appel de ce subroutine ce qui est particulier à une parcelle : en général ce travail consiste à mettre dans la liste d’appel les données d’entrée lues dans des fichiers – Idem pour les sorties : plutôt que d’écrire les résultats dans des fichiers ces données doivent être passées en argument du sous programme.

T. Morel – OpenPALM – IRSTEA décembre Travail pour l’utilisateur Remplacer program par subroutine dans le programme cible (ou main C,C++) – Travail déjà réalisé si le code est porté sous PALM – Aucune difficulté particulière sinon Ajouter les arguments IN et OUT à ce sous-programme Décrire quelques informations comme la liste des arguments pour le préprocesseur PARASOL : set subroutine sticstest set object_files {type_stics.o} set varsub {{inout sta {type(Station_) MPI_INTEGER IP_Station_size} n {Station}} {inout sol {type(Sol_) MPI_INTEGER IP_Sol_size} n {Sol}}} Lancer parasol.tcl qui construit l’unité PALM Master à partir de ces infos Créer le schéma PrePALM en donnant n, m et décrire les communications Tout le reste, écriture de l’unité master, du programme appelant la subroutine, création du Makefile, compilation, lancement, est automatique dans OpenPALM. Tout est fait avec du MPI mais l’utilisateur ne voit pas une seule ligne de MPI ! C’est le but…

T. Morel – OpenPALM – IRSTEA décembre EXEMPLES Axpb  equation du premier degrès set subroutine axpb set object_files {} set varsub {{in a {{double precision} MPI_DOUBLE_PRECISION 1} n {a}} {in b {{double precision} MPI_DOUBLE_PRECISION 1} n {b}} {out r {{double precision} MPI_DOUBLE_PRECISION 1} n {x}}} UQ_NSPROJ  quantification d’incertitudes set subroutine nsproj set object_files {} set varsub {{in Re {{double precision} MPI_DOUBLE_PRECISION 1} n {input Reynolds Number}} {out velu {{double precision} MPI_DOUBLE_PRECISION 1} :,:,n {Output Velocity u}} {out velv {{double precision} MPI_DOUBLE_PRECISION 1} :,:,n {Output Velocity v}}} FIREFLY  Feux de forêts set subroutine firefly set object_files {M_RUN.o M_FIRE.o M_RAN_NUM.o isocontour_2dunif.o} set varsub {{in xx {{double precision} MPI_DOUBLE_PRECISION 1} n {input param}} {out xfr {{double precision} MPI_DOUBLE_PRECISION 1} :,:,n {Output xfr}} {out yfr {{double precision} MPI_DOUBLE_PRECISION 1} :,:,n {Output yfr}} {out surface {{double precision} MPI_DOUBLE_PRECISION 1} :,n {Output surface}}}

T. Morel – OpenPALM – IRSTEA décembre Towards Predictive Simulation of Wildfire Spread Using Data Assimilation and Uncertainty Quantification Burnt vegetation Unburnt vegetation Front Rate of spread Γ Correct model parameters (vegetation, wind) to correct the ROS assimilating front position observations with an Ensemble approach using Parasol-OpenPALM (Rochoux et al. 2012) M. Rochoux, S. Ricci, D. Lucor, B. Cuenot, A. Trouvé Propagation model of the fire front Airborne observations of the front position Data from Ronan Paugam, Dept. Of Geography, King’s College of London

T. Morel – OpenPALM – IRSTEA décembre Quantification d’incertitudes PALM - Parasol MOYENNE RMS UQ sur cavité entrainée

T. Morel – OpenPALM – IRSTEA décembre INTERFACER un Script R Principe : Construction d’une librairie dynamique pour R Fichier d’interface et Makefile fourni dans la distrib OpenPALM Comprend les primitives PALM et les constantes utilisateur Chargement dans le script R Appel des primitives OpenPALM

T. Morel – OpenPALM – IRSTEA décembre Exemple de script R sous PALM Modèle Shalow Water 2D Différences finies tempo. Bassin rectangulaire Code Fortran parallèle Sortie du programme R Champ 2d de hauteur d’eau Réception par MPI de mémoire à mémoire

T. Morel – OpenPALM – IRSTEA décembre Carte d’identité Programme R

T. Morel – OpenPALM – IRSTEA décembre