CUDA : cours    travaux dirigés

3. 3 : Comparaison somme de vecteurs

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.

3.1. Implantation sur le CPU

Réaliser une première implantation naïve sur le CPU :

3.2. Implantation sur le GPU - version 1

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.

3.3. Implantation sur le GPU - version 2

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

3.4. Implantation sur le GPU - version 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

3.5. Comparaison CPU vs GPU

Comparer la version CPU aux versions GPU.

3.6. Amélioration avec stream

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.

Concurrency

Voir le document Streams and concurrency

3.7. Amélioration avec mémoire paginée

Se référer au document suivant : How to optimize data transfers.

On consultera également la documentation CUDA.

Autres liens :