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
7.
Performances sur un Intel Core_i7_12850HX 24
❱
7.1.
Compilation
7.2.
Performances
❱
7.2.1.
Performances séquentielles
7.3.
Un kernel 3x3 spécialisé
❱
7.3.1.
L'avis de
Maqao
7.4.
Les programmes de simulation
❱
7.4.1.
Le calcul 1000x34
7.4.2.
Le calcul 5x6800
Navy
4.1.3 : Programme de calcul
Il est temps d'écrire le programme qui utilise notre bibliothèque de calcul naîve, pour voir ce qu'elle donne dans la "vraie vie".
Nous écrirons notre programme dans le dossier
PerfWithStencil/GrayScottReaction/Naive
.