L'école traitera de l’optimisation des calculs sur différents types de matériels (CPU, GPU), en présentant leur caractéristiques respectives, architectures et goulots d’étranglements. Il portera d’une part sur les méthodes d’optimisation génériques applicables à tout type de matériel, et d’autre part sur les différentes bibliothèques, technologies et langages dont on dispose pour atteindre la meilleure performance possible. Idéalement, la performance crête de la machine.
- Matériels envisagés: CPU, GPU.
- Langages envisagés : C++17, C++20, CUDA, Fortran, Julia, Rust,
- Bibliothèques envisagées : SYCL, Eve.
- Compilateurs envisagés : G++, Clang++, nvc++, nvfortran.
Toutes les méthodes seront illustrées sur des exemples simples, comme des produits de Hadamard, des réductions, des calculs de barycentres et des produits de matrice afin d'être appliquées à un problème unique : la simulation d'une réaction de Gray Scott. Ce problème est suffisamment simple pour être compris rapidement et suffisamment complexe pour que les compilateurs aient des difficultés à l’optimiser sans aide. Chaque méthode sera déclinée en version simple, utilisant des options par défaut, et une ou plusieurs versions avancées, qui permettront de discuter et quantifier leurs avantages et inconvénients.
Les vidéos des cours sont disponibles sur https://www.youtube.com/playlist?list=PLj_PwIXO9FR3NlkXmLaxFGHbQaYEBsCqx