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)