Déploiement de l’interface LAPACK dans la bibliothèque
standardisée chameleonpp et vérifier les performances attendues.
chameleon propose l’implémentation d’un sous ensemble des routines
BLAS/LAPACK capable d’utiliser les architectures parallèles modernes
(mémoire partagée et distribuée, multi GPUs).
Suite à l’introduction des vues multidimensionnelles avec std::mdspan en C++23,
std::linalg permetra en C++26 de réaliser des appels standards aux BLAS1/2/3.
Le standard propose donc un ensemble de fonctions libres avec une semantic de haut niveau
derrière lesquelles l’utilisateur peut appeler l’implémentation BLAS qu’il souhaite.
chameleon, grâce à son interface, est un candidat pour un tel support et permet
également de pousser cette approche grâce à ces différentes APIs, en particulier son
support pout l’asynchronisme. Une premère version de chameleonpp propose
une telle implémentation en couvrant les appels aux BLAS3 ainsi qu’en fournissant
différents utilitaires côté utilisateur pour étendre ce que le standard propose.
Le but de ce stage est de continuer le déploiement des différents noyaux de calculs de
chameleon dans chameleonpp en particulier LAPACK et de valider le fonctionnement
et les performances de ces noyaux de calculs dans l'écosystème C++. Le stagiaire devra s’approprier
les idiomes mis en place dans chameleonpp et les faire évoluer pour étendre
le support aux noyaux LAPACK. Il faudra par la suite vérifier les performances de ces noyaux.
Modern C++, C++23/26, function wrapper, C++ templates, parallélisme, metaprogramming, tag dispatching.
Une bonne connaissance de C++ ainsi que l'écosystème BLAS/LAPACK.
Centre INRIA de l’université de Bordeaux