calcul parallèle d`écoulements réactifs compressibles
Transcription
calcul parallèle d`écoulements réactifs compressibles
CALCUL PARALLÈLE D'ÉCOULEMENTS RÉACTIFS COMPRESSIBLES Dmitry DAVIDENKO Plan de l’exposé I. Introduction II. Plates-formes parallèles et principes de parallélisation III. Quelques tests comparatifs IV. Simulations parallèles d’écoulements réactifs à l’ICARE-CNRS V. Conclusions et perspectives Plan de l’exposé I. Introduction II. Plates-formes parallèles et principes de parallélisation III. Quelques tests comparatifs IV. Simulations parallèles d’écoulements réactifs à l’ICARE-CNRS V. Conclusions et perspectives Applications pratiques d’écoulements réactifs compressibles á Moteurs aéronautiques á Propulseurs des lanceurs spatiaux á Moteurs d’automobile á Turbines terrestres á Lasers à gaz á Appareils de rentrée atmosphérique Approches utilisées dans les simulations á Milieu continu (Kn = l / L << 1) Ç Équations d’Euler pour le gaz non visqueux Ç Équations de Navier-Stokes pour le gaz visqueux Ç Méthodes mixtes Navier-Stokes - Monte Carlo pour les écoulements turbulents á Milieu raréfie ou micro-échèles (Kn = l / L ≈ 1) Ç Modèle Bhatnagar-Gross-Krook (BGK) pour l’équation cinétique Ç Méthode « Direct Simulation Monte Carlo » (DSMC) Approche milieu continu : équations de Navier-Stokes Continuité ∂ ρ ∂ ρu j =0 + ∂ xj ∂t Quantité de mouvement ∂ ρ ui ∂ ρ ui u j ∂ p ∂ τij + =− + ∂ xi ∂ x j ∂ xj ∂t Bilan énergétique ∂ ρ E ∂ (ρ E + p ) u j ∂ ui τij ∂ q j − = + ∂ xj ∂ xj ∂ xj ∂t E = e + ui ui 1 2 ∂ Js j ∂(ρ Ys ) ∂ (ρ u j Ys ) + Ws + =− ∂x j ∂t ∂x j Bilan massique des espèces chimiques s ∈ [1, N s − 1] Termes visqueux ⎛ ∂ u ∂ u j 2 ∂ uk ⎞ δij ⎟ − τij = μ ⎜ i + ⎜∂ x ∂ xi 3 ∂ xk ⎟⎠ j ⎝ ∂ T Ns + ∑ hs J s qi = −λ ∂ xi s =1 ~ Y ∑ s =1 Ns s =1 Modèle de cinétique chimique ∑α A ⇔ ∑ βs A s ∑α A Réaction d’échange ωf = K f ∏ Csα′s s s s s + M ⇔ ∑ βs A s + M Réaction de dissociation-recombinaison ωb = K b ∏ Csβ′s ωf = K f CM ∏ C sα′s s s s s s s ωb = K b CM ∏ Csβ′s s Constante de vitesse d’une réaction chimique (Kf, Kb) Loi d’Arrhenius ⎛ E ⎞ ⎟⎟ K = A T b exp⎜⎜ − R T u ⎝ ⎠ Ws = M s ∑ (β s r − α s r )(ωf r − ωb r ) Taux de production d’une espèce chimique Nr r =1 s Approche milieu continu non visqueux réactif Modèle Modèle thermodynamique thermodynamique espèces espècespures pures etetmélange mélange Système Systèmed’équations d’équations Equations d’Euler pour le mélange Equations de transport pour les espèces chimiques Modèle Modèle cinétique cinétiquechimique chimique (mécanisme (mécanisme réactionnel) réactionnel) Approche milieu continu visqueux réactif Modèle Modèle thermodynamique thermodynamique espèces espècespures pures etetmélange mélange Système Systèmed’équations d’équations Modèle Modèle cinétique cinétiquechimique chimique (mécanisme (mécanisme réactionnel) réactionnel) Equations de Navier-Stokes pour le mélange Equations de transport pour les espèces chimiques Equations du modèle de turbulence Modèle Modèle de detransport transport moléculaire moléculaire Modèle Modèle d’interaction d’interaction turbulenceturbulencechimie chimie Facteurs augmentant la coût de calcul á Configurations complexes Ç Géométrie 3D Ç Problème non stationnaire á Conditions sévères Ç Haute pression Ç Mélanges réactifs concentrés Ç Systèmes réactionnels complexes á Haute précision Ç Résolution spatiale et temporelle Ç Basse erreur numérique Plan de l’exposé I. Introduction II. Plates-formes parallèles et principes de parallélisation III. Quelques tests comparatifs IV. Simulations parallèles d’écoulements réactifs à l’ICARE-CNRS V. Conclusions et perspectives Pourquoi calcul parallèle ? á Le besoin de performance d’ordinateurs croît plus vite que leur puissance individuelle. á Production développée des composants informatiques Ç Disponibilité Ç Prix modéré Résolution du problème par la voie extensive Architectures parallèles á Vectorielle á Parallèle à mémoire partagée á Parallèle à mémoire distribuée Architecture vectorielle á Principes Ç Parallélisation au niveau de l’unité centrale Ç SIMD (Single Instruction – Multiple Data) á Matériel Ç Pipelines dans l’unité centrale Ç Voies multiples d’accès à la mémoire Vectorisation de code á Principes de parallélisme Ç Exécution parallèle des opérateurs dans les boucles Ç Génération d’un code parallèle par le compilateur á Impact sur le codage Ç La plus longue boucle à l’intérieur Ç Accès contigu aux données Ç Pas d’appel aux sous-routines dans les boucles Ç Pas d’operateur de sortie Ç Conflits de dépendance do doj j==1,1,10 10 do i = 1, 1000 do i = 1,1000 A( A(i,j) i,j)==B( B(i,j) i,j) end enddo do end enddo do do doi i==1,1,Ni Ni A(i–1) A(i–1)==B(i) B(i) C(i) C(i) ==A(i) A(i) end enddo do ≠ do doi i==1,1,Ni Ni A(i–1) A(i–1)==B(i) B(i) end enddo do do doi i==1,1,Ni Ni C(i) C(i) ==A(i) A(i) end enddo do E E F F Vectorisation : « + » et « – » Gain de performance important sur les calculateurs vectoriels (famille NEC SX) Disponible comme option d’optimisation sur les PC avec les compilateurs Intel ou PGI Problèmes de codage et d’optimisation Attention à la longueur des boucles et aux conflits d’accès à la mémoire Architecture parallèle à mémoire partagée á Principes Ç Partage d’un calcul entre plusieurs processeurs ayant accès indépendant à la mémoire commune Ç SIMD (Single Instruction – Multiple Data) et MIMD (Multiple Instructions – Multiple Data) á Matériel Ç Multiprocesseurs Ç Voies multiples d’accès à la mémoire P1 P2 Mémoire partagée PN Code parallélisé OpenMP ( OpenMP = Open Multi Processing ) á Étapes de parallélisation Ç Indication des régions d’exécution parallèle du code par l’introduction d’instructions OpenMP Ç Génération d’un code parallèle par le compilateur Ç Exécution des régions parallèles par des processus légers (threads) Variables locales Processus léger ! !Produit de matrices Produit de matrices ( i, j, k ) !$OMP PARALLEL !$OMP PARALLEL !$OMP !$OMPDO DOSCHEDULE(RUNTIME) SCHEDULE(RUNTIME) do j = 1, m do j = 1, m do dokk==1,1,nn do doi i==1,1,mm C(i,j) C(i,j)==C(i,j) C(i,j)++A(i,k) A(i,k)**B(k,j) B(k,j) end enddo do end do end do end enddo do !$OMP !$OMPEND ENDDO DO !$OMP !$OMPEND ENDPARALLEL PARALLEL Variables partagées ( A, B, C, m, n ) Processus de calcul Code parallélisé OpenMP (2) á Principes de parallélisme Ç Répartir les itérations d’une boucle entre les processus légers Ç Exécuter différentes sections du code séparément Ç Exécuter plusieurs occurrences d’une procédure á Difficultés possibles Ç Synchronisation des variables partagées lors de l’écriture Ç Utilisation efficace du cash pour éviter les conflits d’accès à la mémoire Boucles parallèles Sections parallèles Procédure parallèle Parallélisation OpenMP : « + » et « – » E E E F F Gain de performance important sur les calculateurs multiprocesseurs Code portable parallèle-séquentiel Disponible sur les PC avec les compilateurs Intel ou PGI Problèmes d’optimisation et de débogage Attention aux conflits d’accès à la mémoire Architecture parallèle à mémoire distribuée á Principes Ç Distribution des tâches entre plusieurs processus ayant des espaces mémoire réservés Ç Chaque processeur s’occupe de son processus á Matériel Ç Multiprocesseurs Ç Clusters d’ordinateurs liés par un réseau M0 P0 M2 P1 P2 M1 Code parallélisé MPI ( MPI = Message Passing Interface ) á Étapes de parallélisation Ç Insertion des appels aux procédures MPI dans le code Ç Génération d’un code parallèle par le compilateur en utilisant des bibliothèques MPI Communicateur Ç Exécution de plusieurs instances du code MPI_COMM_WORLD dans un environnement parallèle MPICH ou LAM PP0 0 include include'mpif.h‘ 'mpif.h‘ integer :: integer ::nb_procs, nb_procs,rang, rang,code code M0 PP2 2 call callMPI_INIT(code) MPI_INIT(code) call MPI_COMM_SIZE(MPI_COMM_WORLD, call MPI_COMM_SIZE(MPI_COMM_WORLD,nb_procs, nb_procs,code) code) call MPI_COMM_RANK(MPI_COMM_WORLD, rang, code) call MPI_COMM_RANK(MPI_COMM_WORLD, rang, code) print, print,nb_procs, nb_procs,rang rang call callMPI_FINALIZE(code) MPI_FINALIZE(code) M2 PP1 1 M1 Code parallélisé MPI (2) á Principes de partage du travail entre les processus Ç Exécutions multiples d’une même tâche avec des entrées variées puis obtention de statistiques. Ç Décomposition du domaine de calcul en plusieurs zones et partage des zones entre les processus. Les processus font des échanges de données relatives aux frontières communes et à l’avancement du calcul. Ç Décomposition d’un problème complexe en sous-problèmes décrits par des modèles spécifiques et partage des sous-problèmes entre les processus. Les processus font des échanges de données relatives au couplage des sous-problèmes. E E F F F Parallélisation MPI : « + » et « – » Gain de performance important sur les calculateurs multiprocesseurs et sur les clusters Disponible sur toutes les plates-formes y compris des systèmes hétérogènes Code spécialisé parallèle Problèmes d’optimisation et de débogage Attention à la latence réseau IDRIS – Institut du Développement et des Ressources en Informatique Scientifique á Centre de calcul á Formation sur la programmation, l’optimisation et la parallélisation de codes á Aide au développement d’outils informatiques haute performance 10 nœuds NEC SX8 Clusters IBM Power4 1024 proc www.idris.fr Plan de l’exposé I. Introduction II. Plates-formes parallèles et principes de parallélisation III. Quelques tests comparatifs IV. Simulations parallèles d’écoulements réactifs à l’ICARE-CNRS V. Conclusions et perspectives Machines de calcul testées á PC de bureau Dell sous Windows (« Dell ») Ç mono-processeur P4 à 3 GHz Ç 1 G de mémoire à 800 MHz á Cluster de PC sous Linux Red Hat 32 bits (« Xeon ») Ç 2 processeurs P4 Xeon à 2,8 GHz par nœud Ç 1 G de mémoire à 533 MHz par nœud á Machine SMP sous Linux Red Hat 64 bits (« SMP ») Ç 2 processeurs double cœur AMD Opteron 280 à 2.4 GHz Ç 16 G de mémoire à 1 GHz Test 1 : Calculs scalaires á Méthode Ç Pseudo-parallélisation : exécution simultanée de plusieurs codes séquentiels Ç Lancer autant de calculs que processeurs á Code Ç Résolution des équations Navier-Stokes non stationnaires en 2D Ç Adaptation à la plate-forme vectorielle (longues boucles) ⇒ accès intenses à la mémoire á Problème simulé Ç Couche de mélange 2D entre 2 écoulements à contresens Ç 2 espèces non réactives Ç Maillage 256 x 256 cellules Facteur d'acceleration propre 4 Machine Dell Xeon SMP 3 1.93 2 2.06 1.61 1.2 1 1 Facteur d'acceleration relatif à Dell Test 1 : Résultats 2 1.53 1.43 1.19 1 0.9 0.8 0.7 0.6 0.74 0.44 0.5 0.4 0.36 0.3 1 2 3 4 1 2 3 4 Nproc Nproc Conclusions Ç Conflits fréquents d’accès à la mémoire ne permettent pas d’atteindre une accélération proportionnelle au nombre de processeurs Ç Accélération est plus faible si la mémoire est lente Test 2 : Parallélisation OpenMP á Méthode Ç 1 calcul par machine Ç Nombre variable de processus légers á Code Ç Résolution des équations Navier-Stokes non stationnaires en 3D Ç Adaptation à la plate-forme vectorielle et multiprocesseurs Ç Parallélisation de boucles et de sections á Problème simulé Ç Couche de mélange 3D entre 2 écoulements à contresens Ç 2 espèces non réactives Ç Maillage 36 x 36 x 60 cellules Machine Facteur d'acceleration propre 4 Dell Xeon SMP 3 2.56 2.33 1.9 2 1.26 1 1 Facteur d'acceleration relatif à Dell Test 2 : Résultats 3 2 2.11 2.31 1.72 1 0.9 0.8 0.7 0.6 0.90 0.5 0.46 0.58 0.4 1 2 3 4 Nproc 1 2 3 Nproc Conclusions Ç Bonne accélération sur 2 processeurs pour SMP mais peu de gain sur 3 et 4 processeurs (conflits fréquents d’accès à la mémoire) Ç Faible accélération si la mémoire est lente 4 Test 3 : Parallélisation MPI á Méthode Ç 1 calcul sur une ou plusieurs machines Ç Nombre variable de processus parallèles á Code Ç Résolution des équations Euler non stationnaires en 2D Ç Parallélisation par décomposition du domaine de calcul á Problème simulé Ç Détonation cellulaire 2D dans un mélange H2 / O2 / Ar Ç 7 réactions entre 7 espèces Ç Maillage 900 x 400 cellules sens de propagation Machine Facteur d'acceleration propre 5 3.97 Dell Xeon SMP 4 3 3.74 1.99 2 1.99 1 1 1 1 2 3 Facteur d'acceleration relatif à Dell Test 3 : Résultats 6 5 6.00 4 3 3.38 3.19 2 1.60 1.69 1 0.9 0.8 0.7 4 0.85 1 2 Nproc Nproc Conclusion Ç Accélération proportionnelle au nombre de processus parallèles Ç Bonnes performances pour la machine SMP et le cluster Xeon 3 4 Plan de l’exposé I. Introduction II. Plates-formes parallèles et principes de parallélisation III. Quelques tests comparatifs IV. Simulations parallèles d’écoulements réactifs à l’ICARE-CNRS V. Conclusions et perspectives Combustion supersonique Statoréacteur à combustion supersonique combustible mât d’injection air produits de M>1 entrée d’air chambre de combustion supersonique combustion tuyère Expérience LAERTE à l’ONERA O2 T = 1850 K, P = 700 kPa corps central avec injecteur gaz air 850K brûlés H2 réchauffeur à flamme combustible chambre de combustion tuyère supersonique échappement Simulation de la combustion de H2 á Code MSD (ONERA) Ç Résolution des équations Navier-Stokes en 3D Ç Adaptation à la plate-forme vectorielle et parallélisation MPI par décomposition du domaine de calcul á Modèles Ç Gaz : 7 espèces réactives Ç Chimie : 7 réactions Ç Turbulence : k-ε á Maillage Ç Structuré par blocs Ç Tuyère supersonique : 1.1 x 106 cellules Ç Chambre de combustion : 4.4 x 106 cellules D6 D4 Frontières : – entrée de l’air vicié – plan de symétrie (L4) – paroi : corps central (L6) canal de la tuyère (L7) D3 D5 D11 D9 D8 D7 D6 Frontières : – entrée du fluide injecté (L1) – entrée de l’air vicié (L2) – plan de symétrie (L4) – paroi : injecteur interne (L5) injecteur externe (L6) canal de la chambre (L7) D5 D2 D1 D4 D3 Résultats de la simulation Champ de nombre de Mach Champ de température totale Moteur fusée à détonation continue Moteur fusée à détonation continue rotative produits de combustion O2 H2 couche de mélange ondes de détonation Produits de combustion Injection de mélange H2-O2 Chambre de combustion du moteur à détonation Simulation de la détonation rotative á Code WENO (ICARE) Ç Résolution des équations Euler non stationnaires en 2D Ç Schémas numériques haute résolution Ç Parallélisation MPI par décomposition du domaine de calcul á Modèles Ç Gaz : 6 espèces réactives Ç Chimie : 7 réactions á Maillage Ç Structuré orthogonal Ç De 4 x 105 à 5 x 105 cellules Domaine de calcul 2D périodique sortie supersonique section divergente frontières périodiques paroi injection section constante Résultats de la simulation Champ de température Gradient de densité Fraction du radical O Plan de l’exposé I. Introduction II. Plates-formes parallèles et principes de parallélisation III. Quelques tests comparatifs IV. Simulations parallèles d’écoulements réactifs à l’ICARE-CNRS V. Conclusions et perspectives Conclusions et perspectives á Simulations complexes grâce à l’utilisation efficace de plates-formes parallèles Ç Configurations 2D et 3D en échelle réelle Ç Conditions pratiquement intéressantes en terme de pression et de température Ç Systèmes réactionnels détaillés á Amélioration d’outils de simulation Ç Création d’une plate-forme de calcul scientifique à l’ICARE Ç Application des techniques de tabulation pour le traitement de systèmes réactifs complexes (hydrocarbures) Ç Intégration de techniques d’adaptation dynamique de maillage (Adaptive Mesh Refinement)