• Aucun résultat trouvé

Dans le cas du parallélisme à mémoire distribuée retenu pour cette étude, la décomposition du domaine consiste à dénir la façon dont le domaine de calcul sera découpé en jeux de données an d'être réparti sur l'ensemble des processus. La décomposition du domaine est une étape très importante dont dépend étroitement l'ecacité de la parallélisation eectuée ainsi que la complexité de son implémenta-tion.

Le découpage d'un domaine de calcul 3D peut être eectué selon une direction seulement (découpage 1D), deux directions (découpage 2D) ou l'ensemble des direc-tions du domaine (décomposition 3D). La gure1.2propose une vue de ces diérents types de découpage ainsi que des diérentes congurations qui leur sont associées. On notera que dans le cas des découpages 1D et 2D les processus ont une vue com-plète du problème dans certaines directions et peuvent donc travailler de manière autonome dans ces directions. Nous présenterons ici seulement la décomposition 3D et la décomposition 2D, l'approche 1D étant conceptuellement similaire à l'approche 2D mais beaucoup moins ecace en termes d'extensibilité.

4.2.1 Décomposition 3D

La décomposition 3D consiste à adopter un découpage 3D et à le conserver tout au long de l'exécution. Dans la pratique, la décomposition 3D est une approche relativement complexe à implémenter puisque la plupart des algorithmes utilisés (schémas de calcul, résolution des équations de Poisson etc.) dans le code DNS né-cessitent une connaissance des données aux points voisins voire une connaissance complète des données selon une direction. Or, à proximité des interfaces, ces algo-rithmes ne peuvent être appliqués en l'état du fait que les données situées en dehors du sous-domaine ne sont pas connues. Les stratégies envisageables pour résoudre ce problème sont alors très variées et dépendent étroitement de la nature des al-gorithmes. Certaines de ces stratégies appliquées au cas des schémas de diérences nies compacts seront présentées dans la section 5.2 du chapitre 2. Enn, certains algorithmes prévus pour une exécution séquentielle ne sont pas ou peu parallélis-ables et doivent alors être remplacés par des algorithmes conçus et optimisés pour le parallélisme. Ainsi, la parallélisation d'un code selon une décomposition 3D né-cessite de mettre en ÷uvre des stratégies ciblées pour chaque algorithme utilisé et peut donc se révéler extrêmement délicate.

4.2.2 Décomposition 2D

La décomposition 2D dynamique constitue une solution élégante à ce problème qui consiste à eectuer un découpage 2D dont la conguration est modiée au long de l'exécution de façon à permettre, à chaque instant, une exécution autonome des algorithmes, c'est-à-dire sans qu'aucune communication ne soit nécessaire entre les processus. Par exemple, la conguration x de la gure1.2 ore une vue complète du domaine de calcul dans la direction x et peut donc permettre un calcul autonome des dérivées selon cette direction. Le calcul des dérivées selon d'autres directions (y ou z) nécessite de redistribuer les jeux de données (transposition) an de changer de conguration.

La décomposition 2D dynamique présente donc l'avantage de permettre une exécution autonome de l'ensemble des algorithmes du code et est donc beaucoup moins intrusive et plus facile à implémenter qu'une décomposition 3D. On appréciera également la grande généricité de cette approche qui, en raison de l'application au-tonome des algorithmes, ore des performances complètement indépendantes des algorithmes utilisés.

Naturellement, cette approche réduit le nombre de processus utilisables par rap-port à la décomposition 3D. Ainsi dans le cas d'un maillage de résolution 500 × 700 × 1000 (résolution comparable à celle utilisée dans nos simulations), la dé-composition 2D permettra d'utiliser au maximum 350 000 processus. Cette limite, largement au-delà de l'extensibilité recherchée, reste toutefois très théorique et ne tient pas compte des problèmes de répartition de la charge de calcul lorsque les pro-cessus travaillent sur des sous-domaines aussi réduits. L'expérience montre qu'il est préférable de travailler avec des sous-domaines d'au moins 5 × 5 lignes pour obtenir de bonnes performances. La décomposition 2D ore donc une extensibilité eective de l'ordre de 350 000/25=14 000 processus qui reste susante pour cette étude.

Une autre limite de la décomposition 2D tient dans les coûts relativement élevés en communication, variables d'une architecture à l'autre, du fait des transpositions qui doivent être eectuées lorsque l'exécution autonome du code requiert un change-ment de conguration. Dans le cas de la machine Jugene analogue au calculateur Turing utilisé dans cette étude, les coûts liés aux communications représentent près de 45% du temps de calcul d'après les tests réalisés sur le code Incompact3D [8]. Le redécoupage complet du domaine est en eet une opération relativement coûteuse en termes de communications au cours duquel chaque processus reçoit des autres processus une quantité de données équivalente à la taille de son sous-domaine. Il est toutefois important de préciser que, dans le cas idéal, la proportion des

cations dans le temps d'exécution n'augmente pas avec le nombre de processus (la taille des sous-domaines étant inversement proportionnelle au nombre de processus) et ne compromet donc pas l'extensibilité du code.

Pour conclure, on retiendra que la décomposition 2D permet d'atteindre un haut niveau de parallélisme tout en apportant un minimum de changements au code. En outre, le surcoût numérique inhérent à l'approche 2D est largement compensé par l'économie en temps de développement apportée par la simplicité de cette approche. C'est donc cette approche qui sera utilisée pour la parallélisation du code DNS.

Étude comparative des schémas de

calcul à haute précision

1 Introduction

Toutes les simulations qui seront présentées ultérieurement dans cette thèse ont été produites à partir du code DNS d'Orlandi [9], historiquement utilisé par le LEGI. Ce code a cependant dû être modié et optimisé an de pouvoir être appliqué aux écoulements turbulents. Ces optimisations ont notamment porté sur les  schémas de calcul , utilisés pour estimer les opérateurs diérentiels intervenant dans les équations de Navier-Stokes discrétisées. En eet, si les schémas de diérences nies utilisés initialement dans ce code avaient le mérite de la simplicité et de produire des résultats satisfaisants pour des écoulements à nombre de Reynolds modéré, leur précision assez faible (ordre 2) impose d'utiliser des maillages ns dont la taille de maille est petite devant les échelles physiques de l'écoulement. Ces échelles devenant elles-mêmes très petites dans le cas turbulent, une application directe du code initial est inenvisageable en raison du maillage extrêmement rané qu'il faudrait utiliser. Une étude de la littérature a donc été réalisée au début de cette thèse an d'identier les schémas de diérence nie les plus adaptés en termes d'ecacité et de précision. Durant ces dernières décennies, des progrès signicatifs ont été accomplis con-cernant les schémas de calcul des termes spatiaux des équations de Navier-Stokes. Les schémas compacts, introduits par Hirsh [10] et récemment popularisés par Lele [11], fournissent des estimations précises des opérateurs diérentiels et cela même sur des maillages grossiers au regard des variations de la fonction considérée. Une autre approche proposée par Tam et Webb [12] consiste à utiliser des schémas ex-plicites dits  optimisés  dont les coecients ont été déterminés selon une approche

spectrale consistant à minimiser l'erreur commise dans l'espace de Fourier. Les sché-mas de calcul à haute précision, compacts ou explicites optimisés, permettent la résolution des équations de l'écoulement sur des grilles plus grossières et ainsi de réduire signicativement le temps de calcul par rapport à l'utilisation de schémas de diérence nie d'ordre 2. Ces schémas semblent donc parfaitement appropriés à la simulation d'écoulements turbulents et suscitent à ce titre un intérêt grandissant dans la littérature.

Dans ce contexte, ce chapitre s'attachera à présenter les schémas de calculs et les problématiques qui s'y rattachent. La notion de schéma de calcul sera tout d'abord abordée. Nous nous intéresserons ensuite aux diérents critères permettant d'évaluer la qualité des schémas de calcul ainsi que leurs eets sur la solution numérique. Les problématiques posées par l'utilisation des schémas à haute précision les plus sou-vent utilisés, ainsi que les solutions proposées dans la littérature, seront nalement discutées.

2 Dénition mathématique des schémas de calcul