Outline
Main Page
1 : Introduction
1.1 : Utilisation de bibliothèques
1.2 : Ensemble de fonctions CMake
1.3 : CMakeLists.txt pricipal du projet
2 : La réaction de diffusion de Gray Scott
3 : Organisation du projet
3.1 : Format de données
3.1.1 : Description du format de données
3.1.1.1 : Le header MatrixHdf5.h
3.1.1.2 : La source MatrixHdf5.cpp
3.1.2 : Fonction d'initialisation
3.1.2.1 : Le fichier header
3.1.2.2 : Le fichier source
3.1.2.3 : Le CMakeLists.txt
3.2 : Sortie visuelle
3.2.1 : Le main.cpp
3.2.1.1 : Les includes du programme
3.2.1.2 : La fonction qui définie les arguments du programme que l'on attends
3.2.1.3 : La fonction de HDF5 aux images PNG
3.2.1.4 : La fonction principale
3.2.1.5 : Le fichier main.cpp complet
3.2.2 : Le CMakeLists.txt
4 : Calcul et implémentation
4.1 : Implémentation naïve
4.1.1 : Bibliothèque de calcul
4.1.1.1 : Comment implémenter les accès aux voisins ?
4.1.1.2 : Le header naive_propagation.h
4.1.1.3 : La source naive_propagation.cpp
4.1.1.4 : Le fichier CMakeLists.txt
4.1.2 : Évaluation de performances
4.1.2.1 : Notre fichier main.cpp
4.1.2.1.1 : Les includes
4.1.2.1.2 : La fonction d'évaluation de performance
4.1.2.1.3 : La fonction principale du programme
4.1.2.1.4 : Le fichier complet
4.1.2.2 : Le fichier CMakeLists.txt
4.1.2.3 : Compilation et tests de performances
4.1.2.4 : Résultats des tests de performances
4.1.3 : Programme de calcul
4.1.3.1 : Le fichier main.cpp
4.1.3.1.1 : Les includes
4.1.3.1.2 : La définition des arguments du programme
4.1.3.1.3 : La fonction générale du programme
4.1.3.1.4 : La fonction principale du programme
4.1.3.1.5 : Le fichier main.cpp complet
4.1.3.2 : Le fichier CMakeLists.txt
4.1.3.3 : Compilation
4.1.3.4 : Utilisation
4.2 : Implémentation vectorizée
4.2.1 : Bibliothèque de calcul
4.2.1.1 : Le header vectorized_propagation.h
4.2.1.2 : La source vectorized_propagation.cpp
4.2.1.2.1 : Les includes
4.2.1.2.2 : La fonction de calcul vectorisée
4.2.1.2.3 : Le fichier source complet
4.2.1.3 : Le fichier CMakeLists.txt
4.2.2 : Évaluation de performances
4.2.2.1 : Notre fichier main_vectorized.cpp
4.2.2.1.1 : Les includes
4.2.2.1.2 : La fonction d'évaluation de performance
4.2.2.1.3 : La fonction principale du programme
4.2.2.1.4 : Le fichier complet
4.2.2.2 : Le fichier CMakeLists.txt
4.2.2.3 : Compilation et tests de performances
4.2.2.4 : Résultats des tests de performances
4.3 : Implémentation en fonctions intrinsèques
4.3.1 : Comment rendre vectorisable notre calcul ?
4.3.2 : Bibliothèque de calcul
4.3.2.1 : Le header intrinsics_propagation.h
4.3.2.2 : La source intrinsics_propagation.cpp
4.3.2.2.1 : Les includes
4.3.2.2.2 : La fonction de calcul avec des intrinsèques
4.3.2.2.3 : Le fichier source complet
4.3.2.3 : Le fichier CMakeLists.txt
4.3.3 : Évaluation de performances
4.3.3.1 : Notre fichier main_intrinsics.cpp
4.3.3.1.1 : Les includes
4.3.3.1.2 : La fonction d'évaluation de performance
4.3.3.1.3 : La fonction principale du programme
4.3.3.1.4 : Le fichier complet
4.3.3.2 : Le fichier CMakeLists.txt
4.3.3.3 : Compilation et tests de performances
4.3.3.4 : Résultats des tests de performances
4.3.4 : Programme de calcul
4.3.4.1 : Le fichier main_intrinsics.cpp
4.3.4.1.1 : Les includes
4.3.4.1.2 : La définition des arguments du programme
4.3.4.1.3 : La fonction générale du programme
4.3.4.1.4 : La fonction principale du programme
4.3.4.1.5 : Le fichier main_intrinsics.cpp complet
4.3.4.2 : Le fichier CMakeLists.txt
4.3.4.3 : Compilation
4.3.4.4 : Utilisation
5 : Une approche plus subtile
5.1 : Découpage par blocs
5.2 : Approche subtile : performance avec des blocs simples
5.2.1 : Bibliothèque de calcul
5.2.1.1 : Le header intrinsics_propagation_block.h
5.2.1.2 : La source intrinsics_propagation_block.cpp
5.2.1.2.1 : Les includes
5.2.1.2.2 : La fonction de calcul avec des intrinsèques
5.2.1.2.3 : Le fichier source complet
5.2.1.3 : Le fichier CMakeLists.txt
5.2.2 : Évaluation de performances
5.2.2.1 : Notre fichier main_intrinsics_block.cpp
5.2.2.1.1 : Les includes
5.2.2.1.2 : La fonction d'évaluation de performance
5.2.2.1.3 : La fonction principale du programme
5.2.2.1.4 : Le fichier complet
5.2.2.2 : Le fichier CMakeLists.txt
5.2.2.3 : Compilation et tests de performances
5.2.2.4 : Performances
5.3 : Approche encore plus subtile : performance avec des blocs liés
5.3.1 : Bibliothèque de calcul
5.3.1.1 : Le header intrinsics_propagation_link_block.h
5.3.1.2 : La source intrinsics_propagation_link_block.cpp
5.3.1.2.1 : Les includes
5.3.1.2.2 : La fonction de calcul avec des intrinsèques pour les blocs
5.3.1.2.3 : Le fichier source complet
5.3.1.3 : Le fichier CMakeLists.txt
5.3.2 : Évaluation de performances
5.3.2.1 : Notre fichier main_intrinsics_link_block.cpp
5.3.2.1.1 : Les includes
5.3.2.1.2 : La fonction d'évaluation de performance
5.3.2.1.3 : La fonction principale du programme
5.3.2.1.4 : Le fichier complet
5.3.2.2 : Le fichier CMakeLists.txt
5.3.2.3 : Compilation et tests de performances
5.3.2.4 : Performances
5.4 : Peformance du programme avec des blocs liés
5.4.1 : Programme de calcul
5.4.1.1 : Le fichier main_intrinsics_link_block.cpp
5.4.1.1.1 : Les includes
5.4.1.1.2 : La définition des arguments du programme
5.4.1.1.3 : La fonction générale du programme
5.4.1.1.4 : La fonction principale du programme
5.4.1.1.5 : Le fichier main_intrinsics_link_block.cpp complet
5.4.1.2 : Le fichier CMakeLists.txt
5.4.1.3 : Compilation
5.4.1.4 : Utilisation
5.4.2 : Comment se fait-ce ?
5.5 : Parallélisation avec des blocs liés
5.5.1 : Programme de calcul
5.5.1.1 : Le fichier main_intrinsics_link_block_parallel.cpp
5.5.1.1.1 : Les includes
5.5.1.1.2 : La définition des arguments du programme
5.5.1.1.3 : La fonction générale du programme
5.5.1.1.4 : La fonction principale du programme
5.5.1.1.5 : Le fichier main_intrinsics_link_block_parallel.cpp complet
5.5.1.2 : Le fichier CMakeLists.txt
5.5.1.3 : Compilation
5.5.2 : Performances
6 : Conclusion