L’écosystème des bibliothèques pour le calcul scientifique
By , , and   |  January 06, 2014

Philippe d’Anfray (CEA), Michel Kern (INRIA), Thiên-Hiêp Lê (ONERA), Fabien Nicolas (UMAPS)

Utiliser ou ne pas utiliser les librairies scientifiques? Cette question, cruciale pour le chercheur ou l’ingénieur en charge d’une application ciblée, semble avoir perdu de sa pertinence. Les enjeux économiques et sociétaux, ajoutés à la qualité globale des outils disponibles en Open source, tendent aujourd’hui à favoriser l’innovation collective. Voici pourquoi…

Les bibliothèques logicielles scientifiques sont à la fois des composants majeurs des grands logiciels de simulation et des portes d’accès au calcul haute performance (HPC). On trouve en Open source des packagings performants, validés et maintenus, qui permettent de “cristalliser” nombre de projets de recherche dans divers domaines (aérodynamique, climat, matériaux, chimie…) et garantissent le partage de savoir-faire par des acteurs d’horizons très variés. Le gros avantage des bibliothèques, notamment dans le calcul, c’est qu’elles déchargent du codage de fonctionnalités ancillaires (produit scalaire, matriciel, racine carrée d’un vecteur…) et, dès lors qu’elles sont un tant soit peu optimisées, améliorent considérablement les performances des codes. Ne pas y recourir permet certes de conserver la maîtrise d’œuvre du développement applicatif, mais rend la tâche significativement plus lourde. Le séminaire Aristote qui s’est tenu en mai 2013 à l’Ecole polytechnique a permis de faire la lumière sur de nombreuses réalisations et de mieux connaître l’écosystème y afférent. Cet article a vocation à en résumer les principaux échanges.

Travailler confortablement avec l’algèbre linéaire

L’algèbre linéaire est omniprésente dans les simulations, la visualisation, les jeux vidéo… Dans les mathématiques, c’est la branche qui formalise la théorie des systèmes d’équations linéaires ou des matrices issus de la discrétisation spatiale et de l’intégration temporelle des équations aux dérivées partielles modélisant l’application considérée (prévision du climat, modélisation de l’environnement, construction aéronautique etc.). Il existe plusieurs types d’outils pour travailler avec l’algèbre linéaire, mais aucun n’est pleinement satisfaisant. Des solutions comme MATLAB, par exemple, sont certes très user-friendly mais elles se cantonnent aux mathématiques pures. Quant aux bibliothèques de calcul intensif, elles sont assurément plus optimisées, mais demeurent très spécialisées. C’est précisément la raison pour laquelle Gaël Guennebaud (INRIA) a développé Eigen, une solution intermédiaire qui exploite les avantages des deux approches et peut s’utiliser à la fois sous MATLAB et en contexte HPC. Codé en pur C++ “moderne” (c’est-à-dire en templates), Eigen n’a pas besoin d’être configuré ni compilé. Il comprend également un certain nombre de fonctions et de composants – décomposition matricielle, géométrie, matrices creuses et solveurs – le tout unifié au sein d’une seule API.

Reste que, comme le soulève François-Xavier Roux (ONERA), dans les systèmes implicites de très grande taille et mal conditionnés – comme ceux rencontrés en électromagnétisme – la complexité reste importante. Pour y faire face, il propose la méthode FETI (Finite Element Tearing and Interconnecting) qui consiste à décomposer l’ensemble en sous-domaines grâce aux éléments finis. Dans chaque domaine, les seuls prérequis sont la matrice de rigidité, les conditions aux limites locales issues des conditions aux limites globales, les contraintes et les interfaces. Pour appliquer cette méthode sur un objet existant, il faut mailler, autrement dit découper l’ensemble, soit “à la main”, soit par un partitionneur de maillage tel Scotch. Développé par François Pellegrini (INRIA), Scotch est basé sur les graphes, outils primordiaux pour l’analyse. Constitués simplement de points reliés entre eux par des arrêtes, les graphes servent dans de nombreux applications – de l’analyse de réseaux routiers à la répartition de communications entre serveurs.

Les deux principaux problèmes étant la renumérotation de matrices creuses et la décomposition de domaines pour les méthodes itératives, Scotch a deux objectifs : primo, permettre le partitionnement-arête et le partitionnement-sommet ; secundo gérer des graphes de plus d’un milliard de sommets distribués sur des milliers de processeurs. Ces problèmes ont été globalement résolus à Livermore, même si le modèle “craque un peu aux membrures”. Il s’agit donc à présent de pousser le système plus loin. L’horizon actuel est de 10^15 sommets distribués sur un million de processeurs, un volume qui pose la question de la gestion des architectures massivement non uniformes (à la fois comme cibles mais aussi en redistribution à la volée) et de la hiérarchie sur la machine même où s’exécute Scotch. On s’oriente vers des algorithmes asynchrones pour relâcher les contraintes tandis qu’un certain nombre d’entre eux ont été reformulés pour le contexte multithreading.

Navigation

<123>

© HPC Today 2019 - All rights reserved.

Thank you for reading HPC Today.

Express poll

Do you use multi-screen
visualization technologies?

Industry news

Brands / Products index