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

École CEA/EDF/INRIA08/11/2006Page 1

Présentations similaires


Présentation au sujet: "École CEA/EDF/INRIA08/11/2006Page 1"— Transcription de la présentation:

1 École CEA/EDF/INRIA08/11/2006Page 1

2 École CEA/EDF/INRIA08/11/2006Page 2 Plan exposé •Présentation •Le fonctionnement général •Les notions de base •Exemple d’un code d’hydrodynamique •Le traitement du parallélisme •L’équilibrage de charge •Évolutions et conclusion

3 École CEA/EDF/INRIA08/11/2006Page 3 Présentation •Arcane est une plate-forme de développement pour les codes de simulations volumes/éléments finis 2D/3D parallèles •2 objectifs permanents : •Simplifier et accélérer au maximum l’écriture des modules numériques et d’environnement en prenant en charge les aspects informatiques •Utilisation d’objets métiers de haut niveau : variables, maillage… •Fourniture d’outils de mise au point, temps de compilation réduits, simplicité de mise en œuvre •Favoriser la réutilisation •Obtenir de bonnes performances •En séquentiel et … •… sur machines parallèles (grappes de SMP)

4 École CEA/EDF/INRIA08/11/2006Page 4 Fonctionnalités •Arcane prend en charge les services suivants: •gestion des structures liées au maillage •gestion des variables (Température, Pression, …) à travers une base de donnée •parallélisme •gestion des modules et de leurs interactions •options de configuration des modules (jeu de données) •protections / reprises •fourniture de fonctions utilitaires (mathématiques, listing, temps d’exécution, …) •outils d’analyse et d’aide à la mise au point •retour-arrière •sorties spécifiques de dépouillement •courbes •historiques

5 École CEA/EDF/INRIA08/11/2006Page 5 Maillage •Arcane gère les maillages non-structurés 2D et 3D; •les différents éléments du maillage sont appelés des entités; •il existe 5 genres d’entités: •nœuds (0D), arêtes (1D), faces (2D); •mailles (2D ou 3D); •particules •plusieurs types d’entités: •triangle, quadrangle, pentagone, hexagone (2D); •tétraèdre, pyramide, prisme, hexaèdre, heptaèdre, octaèdre (3D); •possibilité d’ajouter d’autres types d’entités.

6 École CEA/EDF/INRIA08/11/2006Page 6 Plan exposé •Présentation •Le fonctionnement général •Les notions de base •Le traitement du parallélisme •L’équilibrage de charge •Évolutions et conclusion

7 École CEA/EDF/INRIA08/11/2006Page 7 Fonctionnement général Gestionnaire de modules Structures maillage Gestionnaire de variables Parallélisme Architecture ARCANE Autres codesProtections Calcul des forces Calcul impulsion Déplacement noeuds Calcul énergie Calcul pression Boucle en temps Modules de sortie Modules d’entrée

8 École CEA/EDF/INRIA08/11/2006Page 8 Plan exposé •Présentation •Le fonctionnement général •Les notions de base •Exemple d’un code d’hydrodynamique •Le traitement du parallélisme •L’équilibrage de charge •Évolutions et conclusion

9 École CEA/EDF/INRIA08/11/2006Page 9 Concepts •Le code est constitué d’un ensemble de modules •hydrodynamique •thermique •post-traitement •… •Chaque module est indépendant et possède •ses variables, qui représentent les données traitées par le module (ex: température, vitesse,  t) •ses options de configuration (jeu de données) •ses points d’entrée, qui représentent les opérations effectuées par le module (ex: calcul des forces, déplacement des nœuds) •Les modules peuvent partager du code via les services •Les modules peuvent partager des données via les variables

10 École CEA/EDF/INRIA08/11/2006Page 10 Module •Un module est un composant logiciel. Il comporte du code source et un fichier de définition (XML), appelé descripteur de module, qui contient : •la liste des variables, •la liste des points d’entrée, •les options de configuration. •A partir du descripteur de module, Arcane génère •une classe de base pour le module •une classe pour accéder aux options de jeu de données concernant le module •Les modules communiquent via les variables : deux modules utilisant une variable publique de même nom partagent sa valeur

11 École CEA/EDF/INRIA08/11/2006Page 11 Exemple de génération de module void HydroModule::moveNodes() { ENUMERATE_NODE(i_node,allNodes()){ const Node& node = *i_node; m_node_coord[node] += m_deltat() * m_velocity[node] } ArcaneHydroObject m_density : VariableCellReal m_velocity : VariableNodeReal computeForces() modeNodes() CaseOptionsHydro cfl : double HydroModule computeForces() modeNodes() descripteur de module génération développement

12 École CEA/EDF/INRIA08/11/2006Page 12 Variable •Une variable est caractérisée par : •son nom, •son type de donnée, •entier, •réel, coordonnées 2D, coordonnées 3D, tenseur 2x2, tenseur 3x3 •chaîne de caractères •son support, •aucun, •nœud, arête, face ou maille •sa dimension, •scalaire (0) •tableau (1) •tableau 2D avec deuxième dimension variable (2). •Il est possible de créer des dépendances entre variables •Pour chaque variable, Arcane gère : •la mémoire •les protections / reprises •la prise en charge du retour-arrière •le traitement du parallélisme

13 École CEA/EDF/INRIA08/11/2006Page 13 Points d’entrée •L’enchaînement des calculs du code est décrit par une succession de points d’entrée: la boucle en temps. •Les boucles en temps sont décrites dans un fichier de configuration externe (ne nécessite pas de recompilation) •Exemple: boucle en temps «HydroThermique»: Nom du point d’entréeModule CalculDesForcesHydro ContributionPressionHydro ContributionPressionThermiqueThermique PseudoViscositéHydro ConditionsAuxLimitesHydro DéplacementDesNoeudsHydro MiseAJourDesVolumesHydro DiffusionNonLinéaireThermique SortiesDépouillementPostTraitement

14 École CEA/EDF/INRIA08/11/2006Page 14 Service •Un service est un plug-in implémentant une interface •technique •lecture et structure du maillage •sorties pour le dépouillement •algorithme de repartitionnement •fonctionnel •vecteur, matrice, solveur •trajectographie •schéma numérique •Présente les mêmes caractéristiques que le module excepté les points d’entrée •Se configure comme un module

15 École CEA/EDF/INRIA08/11/2006Page 15 Avantages de la conception •Les interfaces entre les modules sont •explicites: boucle en temps •distinctes: réduction de la complexité du code •Compilation et tests par module/service •Ajouter/modifier un module/service ne perturbe par les autres •Plusieurs versions d’un même module/service peuvent coexister (namespace) •Un module/service qui n’est pas utilisé n’est pas créé et ne prend aucune ressource (variables non allouées, …)

16 École CEA/EDF/INRIA08/11/2006Page 16 Exemple d’un code hydrodynamique •Code d’hydrodynamique simplifié •lagrangien •Un seul module •hydrodynamique •Fluide de type gaz, selon deux modèles •Gaz parfait •Gaz de type «stiffened» •Fonctionnement sur des tubes à choc.

17 École CEA/EDF/INRIA08/11/2006Page 17 Exemple d’un code hydrodynamique : boucle en temps •La boucle en temps contient uniquement des points d’entrées du module hydrodynamique •Ordre des opérations: DescriptionNom point d’entrée Calcul des forces aux noeudsComputePressureForce Calcul de la vitesseComputeVelocity Application des conditions aux limitesApplyBoundaryCondition Déplacement des nœudsMoveNodes Calcul des nouvelles informations géométriques (volumes, positions, …) ComputeGeometricValues Mise à jour de la densitéUpdateDensity Application de l’équation d’étatApplyEquationOfState Calcul du nouveau deltatComputeDeltaT

18 École CEA/EDF/INRIA08/11/2006Page 18 Exemple d’un code hydrodynamique : liste des variables •Variables aux mailles •Pression, Volume, Energie interne, Masse, vitesse du son, résultante •Variables aux nœuds •Position, Force, Vitesse, Masse nodale •La masse aux mailles et aux nœuds est constante (lagrange)

19 École CEA/EDF/INRIA08/11/2006Page 19 Exemple d’un code hydrodynamique : code généré descripteur de module génération

20 École CEA/EDF/INRIA08/11/2006Page 20 Calcul des forces •Calcul des forces: contribution de la pression sur la force aux nœuds: •Application du principe de la dynamique, puis calcul de la vitesse ENUMERATE_CELL(icell,allCells()){ Real pressure = m_pressure[icell]; for( NodeEnumerator inode(icell.nodes()); inode.hasNext(); ++inode ) force[inode] += pressure * cell_cqs[icell] [inode.index()]; } ENUMERATE_NODE(inode, allNodes()){ Real node_mass = m_node_mass[inode]; Real3 old_velocity = velocity[inode]; velocity[inode] = velocity[inode] + (global_deltat/node_mass) * force[inode]; }

21 École CEA/EDF/INRIA08/11/2006Page 21 Déplacement des nœuds •Application des conditions aux limites •Vitesse normale nulle sur les faces frontières •Déplacement des nœuds: •Calcul des nouvelles informations géométriques: •Mise à jour des volumes •Calcul des résultantes •Application de l’équation d’état •Calcul du nouveau pas de temps •Application des contraintes CFL

22 École CEA/EDF/INRIA08/11/2006Page 22 Application des équations d’état Gaz Parfait: Gaz « stiffened »: •Calcul de la densité, énergie interne, pression et vitesse du son

23 École CEA/EDF/INRIA08/11/2006Page 23 •Un service respecte un contract, défini par une interface •en C++, une classe ne contenant que des méthodes publiques virtuelles pures •Pour le service d’équation d’état: Utilisation d’un service pour les équations d’état

24 École CEA/EDF/INRIA08/11/2006Page 24 Utilisation des services descripteur de module génération void HydroModule::applyEquationOfState() { … options.eos.applyEos(); … }

25 École CEA/EDF/INRIA08/11/2006Page 25 Utilisation des services Gaz parfait Gaz ‘stiffened’ Descripteur de service Jeu de données

26 École CEA/EDF/INRIA08/11/2006Page 26 Plan exposé •Présentation de Arcane •Le fonctionnement général •Les notions de base •Exemple d’un code d’hydrodynamique •Le traitement du parallélisme •L’équilibrage de charge •Évolutions et conclusion

27 École CEA/EDF/INRIA08/11/2006Page 27 Stratégie de parallélisme •Le parallélisme est géré par échange de messages. •le maillage est partitionné en n sous- domaines. •chaque sous-domaine est éventuellement complété d’une ou plusieurs couches de mailles fantômes •ces mailles fantômes représentent une duplication d’entités pour lesquelles il faudra effectuer une synchronisation •chaque processeur effectue les calculs sur un sous-domaine et synchronise ses variables régulièrement avec d’autres processeurs •le code s’exécute en parallèle comme en mode séquentiel avec des synchronisations et des réductions explicites

28 École CEA/EDF/INRIA08/11/2006Page 28 Partitionnement •Deux possibilités pour le partitionnement : •comme un outil externe séquentiel (interne DIF/DSSI/SNEC) •plusieurs algorithmes (Métis, Chaco, Party, …) •plusieurs niveaux de couches fantômes •fournit les informations nécessaires pour les communications entre sous-domaines •pas de pondération pour orienter le partitionnement •comme un service d’Arcane •algorithme de partitionnement parallèle •utilisable pour l’équilibrage de la charge des processeurs (algorithmes de diffusion de mailles)

29 École CEA/EDF/INRIA08/11/2006Page 29 Prise en charge du parallélisme •Sous certaines conditions, la conception de l’architecture assure que le résultat d’un calcul ne dépend ni du partitionnement ni du nombre de sous-domaine : •exécution déterministe •mise au point plus aisée •développement d’un outil permettant de vérifier que les exécutions parallèles et séquentielles donne exactement les mêmes résultats (comparaison bit à bit). •Le développeur utilise les services génériques d’Arcane •synchronisation des valeurs d’une variable sur l’ensemble des sous-domaines •réductions m_temperature.synchronize(); m_delta_t.reduce(Parallel::ReduceMin);

30 École CEA/EDF/INRIA08/11/2006Page 30 Autres services de parallélisme •Services génériques pouvant être implémentés avec différentes bibliothèques de parallélisme (actuellement uniquement MPI) •barrières •envois / réceptions (send / recv) •regroupements (gather) •réductions •diffusion (broadcast) •sérialisation (pack / unpack) •Statistiques d’exécutions •liste et nombre des appels parallèles •pourcentage du temps de calcul par rapport au temps des communications

31 École CEA/EDF/INRIA08/11/2006Page 31 Performance code hydro

32 École CEA/EDF/INRIA08/11/2006Page 32 Plan exposé •Présentation de Arcane •Le fonctionnement général •Les notions de base •Exemple d’un code d’hydrodynamique •Le traitement du parallélisme •L’équilibrage de charge •Évolutions et conclusion

33 École CEA/EDF/INRIA08/11/2006Page 33 Équilibrage de charge •Arcane fournit des mécanismes permettant de réaliser un équilibrage dynamique de charge : •analyse du déséquilibre de charge •migration des entités et des variables d’un sous-domaine vers un autre •calcul des entités fantômes •incorporation d’algorithmes d’équilibrage de charge (ex: ParMetis, Zoltan) avec plusieurs contraintes

34 École CEA/EDF/INRIA08/11/2006Page 34 Simulation Monte-Carlo Matériau lourd Matériau léger Exemple de décomposition en 64 sous-domaines Flux entrant •Test difficile pour l’extensibilité •Répartition dynamique de charge par échange de mailles •Mailles >350000, 30M de particules, 8/32/64 processeurs

35 École CEA/EDF/INRIA08/11/2006Page 35 Évolution du sous domaine du processeur 1/

36 École CEA/EDF/INRIA08/11/2006Page 36 Speed up et efficacité Nombre de processeurs Speed upEfficacité * •La simulation est arrêtée lorsque le tiers du tube est “chaud” * Speed up sans répartition dynamique de la charge : 7.41 (dépendant du partitionnement initial)

37 École CEA/EDF/INRIA08/11/2006Page 37 Test d’extensibilité Monte Carlo •Description du test : •Transport et interaction de particules (Monte Carlo) •A T 0, tous les processeurs gèrent le même nombre de mailles Dépôt d’énergie sur la surface

38 École CEA/EDF/INRIA08/11/2006Page 38 Test d’extensibilité Monte Carlo Nombre de processeurs User time (s) Itanium 2 Speed : 1.5GHz User time (s) Alpha EV68 Speed : 1Ghz Nombre de mailles 1908 * ( particules) * (5M particules) * (10M particules) * na (20M particules) * 14242,16 M (80M particules) * M (350M particules) * Ces résultats sont obtenus sans option de compilation spécifique INTEL et sans directive #pragma

39 École CEA/EDF/INRIA08/11/2006Page 39 Plan exposé •Présentation de Arcane •Le fonctionnement général •Les notions de base •Exemple d’un code d’hydrodynamique •Le traitement du parallélisme •L’équilibrage de charge •Évolutions et conclusion

40 École CEA/EDF/INRIA08/11/2006Page 40 Évolutions prévues •3 directions d’évolution respectant les 2 objectifs (cf. transparent 3) Arcane core Optimisations IA64 Amélioration du load balancing Parallélisme multi niveaux Raffinement/Déraffinement (AMR) Arcane tools Langages de compilation à la volée Tests unitaires Bibliothèques de profiling Arcane numeric tools Matrices, vecteurs Solveur Composant Newton

41 École CEA/EDF/INRIA08/11/2006Page 41 Évolutions prévues •Utilisation de langages de compilation à la volée (C#) •plus simple d’utilisation que le C++ •développement rapide •compilation •environnement de programmation •performances correctes •Parallélisme multi-niveaux •Code hybride MPI/pthread •Code uniquement pthread

42 École CEA/EDF/INRIA08/11/2006Page 42 Évolutions prévues •Collaboration avec l’Institut Français du pétrole (IFP) •support pour les éléments de maillage d’ordre 2 •algorithme de glissement/impact en 3D en parallèle •environnement de test •documentation •portage


Télécharger ppt "École CEA/EDF/INRIA08/11/2006Page 1"

Présentations similaires


Annonces Google