Part 3 : Organisation du projet
Dans ce cours nous allons aller plus loin que d'habitude.
Nous aurons, bien entendu, des tests de performances spécifiques (
micro-benchmarks) mais aussi des versions du programme completes
pour tester ses performances dans un contexte de production, et aussi vérifier que les différentes méthodes donnent bien les mêmes résulats.
Ce projet sera dévelppé en
C++20 (compatible C++17) ce qui nous permettra de pratiquer les nouvelles fonctionnonalités de parallélisme qu'offre ce language.
Structure du projet
Les differents dossiers du projet seront organisés comme suit :
- PerfWithStencil : le projet principal
- Benchmark : là où nous ferons nos tests de performances élémentaires
- Intrinsics : la version en fonctions intrinsèques
- Naive : la version naïve
- Vectorized : la version vectorisée automatiquement par le compilateur
- GrayScottCompute : les différentes implémentations de la réaction de Gray Scott
- Intrinsics : la version en fonctions intrinsèques
- Naive : la version naïve
- Vectorized : la version vectorisée automatiquement par le compilateur
- GrayScottDataFormat : la petite bibliothèque en charge de la lecture et de l'écriture du résultat de la simulation
- Program : l'ensemble des programmes de ce projet
- GrayScott2Pic : programme qui converti les données HDF5 en images png, qui seront bien pratiques pour voir ce qu'il se passe
- GrayScottReaction : ensemble des programes qui ferons la simulation de la réaction avec les différentes implémentations citée précédemment (Naive, Vectorized et Intrinsics)
- Intrinsics : la version en fonctions intrinsèques
- Naive : la version naïve
- Vectorized : la version vectorisée automatiquement par le compilateur
Tous ces dossier contiennent un fichier
CMakeLists.txt qui nous perttront de définir nos bibliothèques, programmes et autres tests.