23–26 sept. 2024
Les Balcons du Mont-Blanc
Fuseau horaire Europe/Paris

Réconcilier ergonomie et performance en C++20 : exemple d’une bibliothèque de tableaux multidimensionnels

26 sept. 2024, 08:30
20m
Centre Vacances Nature Montagne (Les Balcons du Mont-Blanc)

Centre Vacances Nature Montagne

Les Balcons du Mont-Blanc

2211 Route des Combes 73590 Saint-Nicolas-la-Chapelle
1 - Exposé grand format (20' + 10') Le Calcul

Orateur

Sylvain Joube (LISN - IJCLab - Université Paris-Saclay)

Description

Faut-il toujours sacrifier l'ergonomie et la facilité d’utilisation pour obtenir de bonnes performances dans un environnement hétérogène ? Le C++ est-il toujours un langage difficile à prendre en main ? Est-il possible de bâtir des bibliothèques en C++ se rapprochant de l’ergonomie de Python, tout en conservant les performances permises par le C++ ?

Ces préoccupations sont au coeur des recherches doctorales que je mène depuis désormais presque trois ans en collaboration avec les laboratoires IJCLab et LISN. Nous sommes partis du constat selon lequel les bibliothèques de gestion de tableaux multidimensionnels ont une importance cruciale pour la communauté scientifique, tant au niveau des expériences que des simulations, quel qu'en soit le domaine.

Dans cet exposé, nous allons présenter Kiwaku, une bibliothèque de gestion de tableaux multidimensionnels bénéficiant des dernières améliorations ergonomiques permises par le standard C++20. Nous allons comparer l’ergonomie ainsi que les performances de Kiwaku avec celles de Numpy en Python sur des exemples simples ainsi que l’algorithme Gray-Scott. Nous allons ensuite illustrer la manière dont Kiwaku permet l’exécution dans un contexte hétérogène, d’une manière quasiment transparente pour l’utilisateur final, en nous attardant sur une exécution via SYCL[1] sur GPU et CPU parallèle, ainsi que via EVE[2] de manière vectorielle sur CPU. Enfin, une comparaison succincte sera effectuée avec std::md_span (C++).

[1] https://www.khronos.org/sycl/
[2] https://jfalcou.github.io/eve/index.html

Auteurs principaux

David CHAMONT (IJCLab - IN2P3 - CNRS) Hadrien GRASLAND (IJCLab) Dr Joël Falcou (LISN - CODE RECKONS) Sylvain Joube (LISN - IJCLab - Université Paris-Saclay)

Documents de présentation