Main Page
La bibliothèque standard C++ 20
1.
Un produit de Hadamard Simple
❱
1.1.
Le projet
❱
1.1.1.
Le fichier
.gitignore
1.1.2.
Le
CMakeLists.txt
1.1.3.
Le
main.cpp
1.2.
La compilation
1.3.
Lancement du programme
2.
Une meilleure initialisation
❱
2.1.
Le projet
❱
2.1.1.
Le fichier
.gitignore
2.1.2.
Le
CMakeLists.txt
2.1.3.
Le
main.cpp
2.2.
La compilation
2.3.
Lancement du programme
3.
Encore une meilleure initialisation
❱
3.1.
Le projet
❱
3.1.1.
Le fichier
.gitignore
3.1.2.
Le
CMakeLists.txt
3.1.3.
Le
main.cpp
3.2.
La compilation
3.3.
Lancement du programme
4.
Un produit scalaire Simple
❱
4.1.
Le projet
❱
4.1.1.
Le fichier
.gitignore
4.1.2.
Le
CMakeLists.txt
4.1.3.
Le
main.cpp
4.2.
La compilation
4.3.
Lancement du programme
5.
Une meilleure initialisation
❱
5.1.
Le projet
❱
5.1.1.
Le fichier
.gitignore
5.1.2.
Le
CMakeLists.txt
5.1.3.
Le
main.cpp
5.2.
La compilation
5.3.
Lancement du programme
6.
Initialisation aléatoire
❱
6.1.
Le projet
❱
6.1.1.
Le fichier
.gitignore
6.1.2.
Le
CMakeLists.txt
6.1.3.
Le
main.cpp
6.2.
La compilation
6.3.
Lancement du programme
Comparaison avec les précédentes méthodes
7.
Comparaison produit de Hadamard
❱
7.1.
Le projet
❱
7.1.1.
Le fichier
.gitignore
7.1.2.
Le
CMakeLists.txt
7.1.3.
Le
runExample.cmake
7.1.4.
La bibliothèque
Asterics HPC
❱
7.1.4.1.
Le
CMakeLists.txt
7.1.4.2.
Le chronomètre
❱
7.1.4.2.1.
Le
timer.h
7.1.4.2.2.
Le
timer.cpp
7.1.4.3.
L'allocation
❱
7.1.4.3.1.
Le
asterics_alloc.h
7.1.4.3.2.
Le
asterics_alloc.cpp
7.1.4.4.
Le
asterics_hpc.h
7.1.5.
Les différentes implémentations
❱
7.1.5.1.1.
Le
main_cpp20.cpp
7.1.5.1.2.
Le
main_cpp20_vectorize.cpp
7.1.5.1.3.
Le
main.cpp
7.1.5.1.4.
Le
main_vector.cpp
7.1.5.1.5.
Le
main_vectorize.cpp
7.1.5.1.6.
Le
main_intrinsics.cpp
7.1.5.1.7.
Le
main_intrinsics_interleaved2.cpp
7.2.
La compilation
7.3.
La performances
❱
7.3.1.
Performances avec des options basiques
7.3.2.
Performances de la vectorisation
7.3.3.
Résumé des performances
Les fonctions C++ 23
8.
Les
std::views::zip
❱
8.1.
Introduction
❱
8.1.1.
La recette
Apptainer
8.1.2.
Le script qui construit l'image
8.1.3.
Le script appelé dans l'image
8.1.4.
Le script générique
8.2.
Le projet
❱
8.2.1.
Le
.gitignore
8.2.2.
Le
CMakeLists.txt
8.2.3.
Le
main.cpp
8.3.
Compilation
9.
Les
std::views::repeat
❱
9.1.
Introduction
❱
9.1.1.
La recette
Apptainer
9.1.2.
Le script qui construit l'image
9.1.3.
Le script appelé dans l'image
9.1.4.
Le script générique
9.2.
Le projet
❱
9.2.1.
Le
.gitignore
9.2.2.
Le
CMakeLists.txt
9.2.3.
Le
main.cpp
9.3.
Compilation
10.
Les
std::views::chunk
❱
10.1.
Introduction
❱
10.1.1.
La recette
Apptainer
10.1.2.
Le script qui construit l'image
10.1.3.
Le script appelé dans l'image
10.1.4.
Le script générique
10.2.
Le projet
❱
10.2.1.
Le
.gitignore
10.2.2.
Le
CMakeLists.txt
10.2.3.
Le
main.cpp
10.3.
Compilation
11.
Les
std::views::cartesian_product
❱
11.1.
Introduction
❱
11.1.1.
La recette
Apptainer
11.1.2.
Le script qui construit l'image
11.1.3.
Le script appelé dans l'image
11.1.4.
Le script générique
11.2.
Le projet
❱
11.2.1.
Le
.gitignore
11.2.2.
Le
CMakeLists.txt
11.2.3.
Le
main.cpp
11.3.
Compilation
Analyse de données
12.
Calibration
❱
12.1.
Le projet
❱
12.1.1.
Le
README.md
12.1.2.
Le
.gitignore
12.1.3.
Le
CMakeLists.txt
12.1.4.
Le dossier
src
❱
12.1.4.1.
Un allocateur de données alignées
12.1.4.2.
Le
main_classic.cpp
classique
12.1.4.3.
Le
main.cpp
avec des indices
12.1.4.4.
Le
main_mask.cpp
avec un masque
12.1.4.5.
Le
main_mask2.cpp
avec des
std::transform
imbriqués
12.1.4.6.
Le
main_mask2_transform.cpp
avec des
std::transform
imbriqués
12.1.4.7.
Le
main_precompute_modulo.cpp
12.1.4.8.
Le
CMakeLists.txt
12.2.
La compilation
12.3.
Les performances
❱
12.3.1.
Les performances
seq
12.3.2.
Les performances
unseq
12.3.3.
Comparons aux performances classiqes
12.3.4.
Les performances masquées
seq
12.3.5.
Les performances masquées
unseq
12.3.6.
Classique VS trois
std::transform
12.3.7.
Les performances masquées
seq
avec deux
std::transform
12.3.8.
Les performances masquées
unseq
avec deux
std::transform
12.3.9.
Classique VS deux
std::transform
12.3.10.
Résumé des performances
12.3.11.
L'utilisation de
std::views::zip
Navy
7.1.4.2 : Le chronomètre
Nous allons utiliser la fonction
rdtsc
(
R
ea
d
T
ime
S
tamp
C
ounter) pour évaluer les temps d'exécution de nos
kernels
note
Cela est valable pour être raccord avec les méthodes d'optimisation précédentes, mais nous verrons dans la suite une méthode plus puissante et plus fiable que celle-ci.
.