CUDA : cours travaux dirigés
L'objectif du TP est de comparer les temps de calcul de différentes implantations de la somme de deux vecteurs.
Téléchargez le projet et implanter les différents kernels.
Réaliser une première implantation naïve sur le CPU :
Réaliser une première implantation sur le GPU comme vu en cours.
Dans un premier temps, on utilise une grille composée d'un seul bloc et on effectue les calculs modulo la taille de ce bloc. Il s'agit de la solution à un bloc avec stride du cours 3.
Réaliser une deuxième implantation sur le GPU en utilisant une grille composée de plusieurs blocs, chaque bloc étant composé lui même de plusieurs threads. Il s'agit de la solution couverture totale du cours 3
Réaliser une deuxième implantation sur le GPU en utilisant une grille composée de plusieurs blocs, chaque bloc étant composé lui même de plusieurs threads mais ne couvrant pas tout le vecteur. Il s'agit de la solution sous couverture du cours 3
Comparer la version CPU aux versions GPU.
On Stream CUDA permet d'exécuter une série d'opérations de manière concurentielle : l'opération suivante peut être débutée même si l'opération précédente n'est pas terminée.
Voir le document Streams and concurrency
Se référer au document suivant : How to optimize data transfers.
On consultera également la documentation CUDA.
Autres liens :