La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1 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 http://www.cerfacs.fr/~palm

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

3 T. Morel – OpenPALM – IRSTEA décembre 2015 3 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

4 T. Morel – OpenPALM – IRSTEA décembre 2015 4 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

5 T. Morel – OpenPALM – IRSTEA décembre 2015 5 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 ?

6 T. Morel – OpenPALM – IRSTEA décembre 2015 6 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 ?

7 T. Morel – OpenPALM – IRSTEA décembre 2015 7 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 ?

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

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

10 T. Morel – OpenPALM – IRSTEA décembre 2015 10 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

11 T. Morel – OpenPALM – IRSTEA décembre 2015 11 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

12 T. Morel – OpenPALM – IRSTEA décembre 2015 12 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

13 T. Morel – OpenPALM – IRSTEA décembre 2015 13 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

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

15 T. Morel – OpenPALM – IRSTEA décembre 2015 15 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

16 T. Morel – OpenPALM – IRSTEA décembre 2015 16 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.

17 T. Morel – OpenPALM – IRSTEA décembre 2015 17  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

18 T. Morel – OpenPALM – IRSTEA décembre 2015 18 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

19 T. Morel – OpenPALM – IRSTEA décembre 2015 19 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)

20 T. Morel – OpenPALM – IRSTEA décembre 2015 20 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

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

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

23 T. Morel – OpenPALM – IRSTEA décembre 2015 23 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

24 T. Morel – OpenPALM – IRSTEA décembre 2015 24 2) 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

25 T. Morel – OpenPALM – IRSTEA décembre 2015 25 3) 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

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

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

28 T. Morel – OpenPALM – IRSTEA décembre 2015 28 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

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

30 T. Morel – OpenPALM – IRSTEA décembre 2015 30 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)

31 T. Morel – OpenPALM – IRSTEA décembre 2015 31 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

32 T. Morel – OpenPALM – IRSTEA décembre 2015 32 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

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

34 T. Morel – OpenPALM – IRSTEA décembre 2015 34 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

35 T. Morel – OpenPALM – IRSTEA décembre 2015 35 Application Palm d'AquiFR version du 29 janvier 2015 - 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

36 T. Morel – OpenPALM – IRSTEA décembre 2015 36 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

37 T. Morel – OpenPALM – IRSTEA décembre 2015 37 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

38 T. Morel – OpenPALM – IRSTEA décembre 2015 38 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)

39 T. Morel – OpenPALM – IRSTEA décembre 2015 39 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 63226../rundir/somme 37620../rundir/loire 37667../rundir/basse_normandie 41609../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)

40 T. Morel – OpenPALM – IRSTEA décembre 2015 40 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

41 T. Morel – OpenPALM – IRSTEA décembre 2015 41 Transmission des données hauteurs nappe et échange nappe/rivière SommeSeine Loire Basse normandie EauDyssée parallèle sur 1 branche 6322 6 3762 0 3766 7 4160 9 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 = 180122 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

42 T. Morel – OpenPALM – IRSTEA décembre 2015 42 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

43 T. Morel – OpenPALM – IRSTEA décembre 2015 43 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 »

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

45 T. Morel – OpenPALM – IRSTEA décembre 2015 45 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

46 T. Morel – OpenPALM – IRSTEA décembre 2015 46 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

47 T. Morel – OpenPALM – IRSTEA décembre 2015 47 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

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

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

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

51 T. Morel – OpenPALM – IRSTEA décembre 2015 51 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 : 18-20 janvier 2016, inscritpitions sur le site du Cerfacs

52 T. Morel – OpenPALM – IRSTEA décembre 2015 52

53 T. Morel – OpenPALM – IRSTEA décembre 2015 53 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)

54 T. Morel – OpenPALM – IRSTEA décembre 2015 54 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

55 T. Morel – OpenPALM – IRSTEA décembre 2015 55 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

56 T. Morel – OpenPALM – IRSTEA décembre 2015 56 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

57 T. Morel – OpenPALM – IRSTEA décembre 2015 57 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.

58 T. Morel – OpenPALM – IRSTEA décembre 2015 58 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.

59 T. Morel – OpenPALM – IRSTEA décembre 2015 59 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…

60 T. Morel – OpenPALM – IRSTEA décembre 2015 60 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}}}

61 T. Morel – OpenPALM – IRSTEA décembre 2015 61 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

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

63 T. Morel – OpenPALM – IRSTEA décembre 2015 63 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

64 T. Morel – OpenPALM – IRSTEA décembre 2015 64 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

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

66 T. Morel – OpenPALM – IRSTEA décembre 2015 66


Télécharger ppt "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."

Présentations similaires


Annonces Google