Vers un solveur direct à base de tâches pour des systèmes linéaires FEM/BEM creux/denses
Résumé
Nous nous intéressons à la résolution directe de très grands systèmes linéaires Ax = b composés à la fois de parties creuses et de parties denses. Des systèmes couplés creux/denses apparaissent dans différents problèmes physiques tels que la simulation de la propagation d'ondes acoustiques autour des avions. Pour produire un résultat physiquement réaliste, le nombre d'inconnues dans le système peut être extrêmement élevé, ce qui fait de son traitement un vrai défi. Grâce aux briques de construction fournies par les solveurs creux et denses de l'état de l'art, nous pouvons composer un solveur couplé creux/dense. Pour réduire le temps de calcul et la consommation mémoire des méthodes directes, certains solveurs implémentent des fonctionnalités avancées comme la compression numérique, le calcul out-of-core et le parallélisme en mémoire distribuée. Ces fonctionnalités peuvent être aisément appliquées au sein des briques de construction individuelles mais ce n'est pas trivial à l'articulation entre les briques du solveur creux et celles du solveur dense. Leur interface de programmation (API) n'a pas été prévue à cet effet. Nous avons précédemment proposé des schémas de couplage de solveurs qui permettent quand même d'utiliser ces solveurs bien optimisés aux fonctionnalités avancées. L'idée est d'appliquer l'API existante aux sous-matrices soigneusement choisies des systèmes couplés de façon à bénéficier pleinement de la compression numérique et du calcul out-of-core aussi bien en mémoire partagée qu'en mémoire distribuée. Bien que capables de traiter des systèmes couplés considérablement plus grands comparé à l'état de l'art, ces schémas restent sous-optimaux à cause des limitations intrinsèques à la conception. Nous explorons donc un schéma de couplage alternatif s'appuyant sur des solveurs directs à base de tâches qui utilisent le même moteur d'exécution. Le but est d'améliorer la composabilité et faciliter le passage de données entre les solveurs creux et dense pour un calcul plus efficace. Avant de considérer l'intégration de cette approche dans le code complexe d'un solveur communautaire complet, nous en avons implémenté une preuve de concept sans certaines fonctionnalités avancées. Une étude expérimentale préliminaire nous a permis de valider notre prototype et montrer sa compétitivité vis-à-vis d'autres approches.
Origine | Fichiers produits par l'(les) auteur(s) |
---|