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.
Programmation
GPU
❱
3.1.
Petit tour d'horizon d'un
GPU
3.2.
Récupération des informations
GPU
❱
3.2.1.
Le
main.cpp
3.2.2.
Le
CMakeLists.txt
3.2.3.
La compilation
3.2.4.
Les informations sur un
GPU
local
3.3.
Produit de Hadamard
GPU
en
Cuda
❱
3.3.1.
Une mini bibliothèque
Cuda
❱
3.3.1.1.
L'allocation de tableaux
❱
3.3.1.1.1.
Le fichier
asterics_alloc.h
3.3.1.1.2.
Le fichier
asterics_alloc.cpp
3.3.1.2.
Récupération d'information du GPU hôte avec Cuda
❱
3.3.1.2.1.
Le fichier
asterics_cuda.h
3.3.1.2.2.
Le fichier
asterics_cuda.cpp
3.3.1.3.
Une méthode qui vérifie si un appel
Cuda
réussit
❱
3.3.1.3.1.
Le fichier
phoenix_cuda_check.h
3.3.1.3.2.
Le fichier
phoenix_cuda_check.c
3.3.1.4.
Un chronomètre
❱
3.3.1.4.1.
Le fichier
timer.h
3.3.1.4.2.
Le fichier
timer.cpp
3.3.2.
Les sources de notre projet
❱
3.3.2.1.
Le kernel
❱
3.3.2.1.1.
Le fichier
hadamard_product_cuda.h
3.3.2.1.2.
Le fichier
hadamard_product_cuda.cu
3.3.2.2.
Le
CMakeLists.txt
3.3.3.
Les programmes de tests
❱
3.3.3.1.
Avec les transfert de données
3.3.3.2.
Sans les transfert de données
3.3.3.3.
Les fonctions qui permettent de lancer et afficher les résultats
3.3.3.4.
Le
CMakeLists.txt
3.3.4.
Le
CMakeLists.txt
principal
3.3.5.
Compilation
3.3.6.
Performances
3.4.
Produit de Hadamard
GPU
en
C++17
❱
3.4.1.
Pourquoi NVC++ ?
3.4.2.
Structure du projet
3.4.3.
Les sources de notre projet
❱
3.4.3.1.
Le CMakeLists pricipal du projet
3.4.3.2.
Le fichier gitignore
3.4.3.3.
Le fichier README.md
3.4.3.4.
Les fonctions CMake
3.4.3.5.
Le dossier
src
❱
3.4.3.5.1.
Le header hadamard.h
3.4.3.5.2.
Les sources hadamard.cpp
3.4.3.5.3.
Le programme main.cpp
3.4.3.5.4.
Le CMakeLists.txt
3.4.4.
Compilation basiques et performances sur CPU
❱
3.4.4.1.
Compilation
3.4.4.2.
Performances
3.4.5.
Compilation nvc++ et performances sur CPU
❱
3.4.5.1.
Compilation
3.4.5.2.
Performances
3.4.6.
Comparaison de performances
3.4.7.
Avec un GPU A100
❱
3.4.7.1.
Lancer un job avec HT Condor
❱
3.4.7.1.1.
Un exemple simple
3.4.7.1.2.
Un exemple avec GPU
3.4.7.1.3.
Récupération des
Compute capabilities
avec un job
3.4.7.1.4.
Produit de Hadamard
Cuda
sur
MUST
3.4.7.1.5.
Gray Scott
Cuda
sur
MUST
3.4.7.1.6.
Test un peu plus fiables
3.4.7.1.7.
Produit de Hadamard
NVC++
sur
MUST
3.4.8.
Performances sur une A3000
3.4.9.
Profilage avec
nsys
4.
La réation de
Gray Scott
en
GPU
avec
Cuda
❱
4.1.
Le projet
Gray Scott
sur
GPU
avec
cuda
❱
4.1.1.
Le
CMakeLists.txt
pricipal du projet
4.1.2.
Le fichier
.gitignore
4.1.3.
Le fichier
README.md
4.1.4.
Les fonctions
CMake
4.1.5.
Une mini bibliothèque
Cuda
(encore)
❱
4.1.5.1.
L'allocation de tableaux
❱
4.1.5.1.1.
Le fichier
asterics_alloc.h
4.1.5.1.2.
Le fichier
asterics_alloc.cpp
4.1.5.2.
Récupération d'information du
GPU
hôte avec
Cuda
❱
4.1.5.2.1.
Le fichier
asterics_cuda.h
4.1.5.2.2.
Le fichier
asterics_cuda.cpp
4.1.5.3.
Une méthode qui vérifie si un appel
Cuda
réussit
❱
4.1.5.3.1.
Le fichier
phoenix_cuda_check.h
4.1.5.3.2.
Le fichier
phoenix_cuda_check.c
4.1.5.4.
Un chronomètre
❱
4.1.5.4.1.
Le fichier
timer.h
4.1.5.4.2.
Le fichier
timer.cpp
4.1.6.
Le format de données
❱
4.1.6.1.
Le header
MatrixHdf5.h
4.1.6.2.
La source
MatrixHdf5.cpp
4.1.6.3.
Fonction d'initialisation
❱
4.1.6.3.1.
Le fichier header
4.1.6.3.2.
Le fichier source
4.1.6.4.
Le
CMakeLists.txt
4.1.7.
Les calculs
❱
4.1.7.1.
Le header
4.1.7.2.
Le fichier
Cuda
4.1.7.3.
Le
CMakeLists.txt
4.1.8.
Les programmes
❱
4.1.8.1.
L'implémentation classique
❱
4.1.8.1.1.
Les includes
4.1.8.1.2.
La définition des arguments du programme
4.1.8.1.3.
La fonction générale du programme
4.1.8.1.4.
La fonction principale du programme
4.1.8.2.
L'implémentation stupide
❱
4.1.8.2.1.
Les includes
4.1.8.2.2.
La définition des arguments du programme
4.1.8.2.3.
La fonction générale du programme
4.1.8.2.4.
La fonction principale du programme
4.2.
Compilation
4.3.
Performance
5.
La réation de
Gray Scott
en
GPU
avec
C++17
❱
5.1.
Le
NVidia HPC_SDK
5.2.
Le compilateur
nvc++
5.3.
Un exemple
nvc++
en
C++17
ultra simple
❱
5.3.1.
Le fichier
main.cpp
5.3.2.
Le fichier
CMakeLists.txt
5.3.3.
Le fichier
.gitignore
5.3.4.
Un exemple de script pour compiler sur
MUST
5.3.5.
Un script pour lancer tous nos jobs
5.4.
Un exemple avec plusieurs fichiers
❱
5.4.1.
Le fichier
hadamard_product.h
5.4.2.
Le fichier
hadamard_product.cpp
5.4.3.
Le fichier
main.cpp
5.4.4.
Le fichier
CMakeLists.txt
5.4.5.
Le fichier
.gitignore
5.4.6.
Un exemple de script pour compiler sur
MUST
5.4.7.
Un script pour lancer tous nos jobs
5.5.
Un exemple avec une bibliothèque
❱
5.5.1.
Le fichier
hadamard_product.h
5.5.2.
Le fichier
hadamard_product.cpp
5.5.3.
Le fichier
main.cpp
5.5.4.
Le fichier
CMakeLists.txt
5.5.5.
Le fichier
.gitignore
5.5.6.
Un exemple de script pour compiler sur
MUST
5.5.7.
Un script pour lancer tous nos jobs
5.6.
Test de performance avec un produit de Hadamard
❱
5.6.1.
Le fichier
hadamard_product.h
5.6.2.
Le fichier
hadamard_product.cpp
5.6.3.
Le fichier
timer.h
5.6.4.
Le fichier
timer.cpp
5.6.5.
Le fichier
main.cpp
5.6.6.
Le fichier
CMakeLists.txt
5.6.7.
Le fichier
.gitignore
5.6.8.
Un exemple de script pour compiler sur
MUST
5.6.9.
Un script pour lancer tous nos jobs
5.6.10.
Performances obtenues sur
MUST
5.7.
Fourberies et subtilités de ce cher
nvc++
5.8.
Implémentation avec des
std::vector
❱
5.8.1.
Le
CMakeLists.txt
pricipal du projet
5.8.2.
Le fichier
.gitignore
5.8.3.
Le fichier
README.md
5.8.4.
Les fonctions
CMake
5.8.5.
Format de données et initialisation
❱
5.8.5.1.
Le header
MatrixHdf5.h
5.8.5.2.
La source
MatrixHdf5.cpp
5.8.5.3.
Fonction d'initialisation
❱
5.8.5.3.1.
Le fichier header
5.8.5.3.2.
Le fichier source
5.8.5.4.
Le
CMakeLists.txt
5.8.6.
Les calculs
❱
5.8.6.1.
Le header
gray_scott_nvcpp.h
5.8.6.2.
Le fichier source
gray_scott_nvcpp.cpp
5.8.6.3.
Le
CMakeLists.txt
5.8.7.
Le programme
❱
5.8.7.1.
Le
main.cpp
❱
5.8.7.1.1.
Les includes
5.8.7.1.2.
La définition des arguments du programme
5.8.7.1.3.
La fonction générale du programme
5.8.7.1.4.
La fonction principale du programme
5.8.7.2.
Le
CMakeLists.txt
5.8.8.
Performances
❱
5.8.8.1.
Pour 1000x34 images
5.8.8.2.
Pour 5x68000 images
5.8.8.3.
Pour 5x680000 images
5.8.9.
Comparaisons avec
CUDA
❱
5.8.9.1.
Pour 1000x34 images
5.8.9.2.
Pour 5x68000 images
5.8.9.3.
Pour 5x680000 images
5.8.10.
Conclusion
Navy
4.1.5 : Une mini bibliothèque
Cuda
(encore)
Nous allons encore utiliser une bibliothèque
AstericsHPC
dans un dossier homonyme mais avec une partie
Cuda
.