Etendre le support de ```chameleonpp``` à l'interface Lapack

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.

Mots-clés:

Modern C++, C++23/26, function wrapper, C++ templates, parallélisme, metaprogramming, tag dispatching.

Pré-requis:

Une bonne connaissance de C++ ainsi que l'écosystème BLAS/LAPACK.

Contacts :

pierre.esterie@inria.fr

Lieu du stage :

Centre INRIA de l’université de Bordeaux

Référence: