Orateur
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