Solveurs rapides pour l'aéroacoustique haute fréquence
Fast solvers for high-frequency aeroacoustics
Résumé
In the aeronautical industry, aeroacoustics is used to model the propagation of acoustic waves in air flows enveloping an aircraft in flight. One can thus simulate the noise produced at ground level by an aircraft during the takeoff and landing phases, in order to validate that the regulatory environmental standards are met and support the design of future planes. Unlike most other complex physics simulations, the method resorts to solving coupled sparse/dense systems. In order to produce a result that is physically realistic, the number of unknowns in the system to solve can be extremely important, which makes its treatment a computational challenge. In this work, we focus on the design and evaluation of algorithms for solving large linear systems of this kind. On the one hand, we propose algorithms using the existing Application Program Interface (API) of fully-featured and well-optimized sparse and dense direct solvers. Thanks to these algorithms, we can get around major shortcomings of a straightforward usage the solvers and fully benefit from their advanced features such as numerical compression, out-of-core computation and distributed memory parallelism. On the other hand, we investigate an alternative solver API relying on the coupling of task-based direct solvers built on top of the same runtime. A custom API allows for a better composability and an easier data exchange between the solvers leading to a more efficient usage of computing resources. While introducing such substantial changes into fully-featured community-driven solvers can only be a long-time work due to their complex codebase (several hundred thousands lines of code), we were able to implement a proof-of-concept of this approach within a non fully-featured prototype. Beyond the main contribution, we put a strong emphasis on the reproducibility of our work. To this end, we explore the principles of literate programming and software tools for ensuring the reproducibility of both experimental environments and numerical experiments themselves across different machines and extended periods of time.
Dans l’industrie aéronautique, l’aéroacoustique est utilisée pour modéliser la propagation d’ondes sonores dans les flux d’air enveloppant un avion en vol. Il est alors possible de simuler le bruit produit par un avion au niveau du sol lors du décollage et de l’atterrissage afin d’assurer le respect des normes environnementales et de permettre la conception de futurs modèles d’avion. Contrairement à la plupart des autres simulations complexes en physique, la méthode consiste en la résolution de systèmes linéaires couplés creux/denses. Pour produire un résultat réaliste, le nombre d’inconnues dans le système peut être extrêmement important ce qui fait de sa résolution un défi de taille. Dans ce travail, nous nous focalisons sur la conception et l’évaluation d’algorithmes pour résoudre de grands systèmes linéaires de ce genre. D’un côté, nous proposons des algorithmes utilisant l’interface de programmation (API) existante de solveurs directs creux et denses riches en fonctionnalités et optimisés. Grâce à ces algorithmes, nous arrivons à contourner les défauts majeurs d’un usage basique de ces solveurs et profiter pleinement de leurs fonctionnalités avancées telles que la compression numérique, le calcul out-of-core et le parallélisme en mémoire distribuée. D’un autre côté, nous évaluons une API de solveur alternative qui s’appuie sur un couplage de solveurs directs à base de tâches utilisant le même moteur d’exécution. Une API personnalisée permet d’améliorer la composabilité et de simplifier l’échange de données entre les solveurs pour une utilisation plus efficace de ressources de calcul. Tandis que l’introduction de ces changements substantiels dans des solveurs aux fonctionnalités avancés et maintenus par la communauté ne peut se faire qu’à long terme à cause de la complexité de leur code source (quelques centaines de milliers de ligne de code), nous avons pu implémenter une preuve de concept de cette approche dans un prototype réduit. Outre la contribution principale, nous avons consacré un important effort à la reproductibilité de notre travail. À cette fin, nous avons exploré les principes de la programmation lettrée ainsi que les outils logiciels associés pour garantir la reproductibilité des environnements expérimentaux et des expériences numériques elles-mêmes sur différentes machines et sur des périodes de temps étendues.
Domaines
Analyse numérique [cs.NA]Origine | Version validée par le jury (STAR) |
---|