TP 0 : Prise en main de l’environnement CUDA

Mineure CalHau-2

Stéphane Vialle, CentraleSupélec & LRI, Stéphane.Vialle@centralesupelec.fr  

(auteur principal du sujet: Laércio Lima Pilla, CNRS & LRI, pilla@lri.fr)

Objectifs du TP :

Ce TP a pour objectif de permettre aux étudiants de se familiariser avec l’utilisation des serveurs de calculs distants du Data Center d’Enseignement (DCE) de CentraleSupélec et de s’habituer à la programmation et au débogage d’un code CUDA.

Plate-forme de développement : 

Les machines utilisées seront celles des clusters Cameron ou Tx du DCE de CentraleSupélec :

L'environnement CUDA C et C++ est disponible sur chaque machine (et donc le compilateur "nvcc" et les drivers pour utiliser le GPU).

Vous utiliserez les comptes de TP "gpucs1_#i", où #i est une valeur entière entre 1 et 16.

Depuis votre poste de travail :

Ex: oarsub -p "cluster='Tx'" -l nodes=1,walltime=4:00:00 -I

Travail à effectuer :

Remarques préliminaires :

1 – Correction de la compilation du programme :
    1. Récupérez le programme : 
depuis votre compte sur gpucs1_* entrez : cp ~vialle/tmp/ImageFiltering3-enonce.zip  .

ou bien : archive
    1. Essayez de compiler le programme avec la commande make. Trouvez les erreurs dans la compilation du programme et corrigez les
2Correction de l’exécution du programme :

A chaque étape, vous compilerez et testerez le programme dans sa version GPU. Vous pourrez vérifier que la sortie ne sera pas exactement égale à la sortie de la version CPU. Après chaque correction, vous pourrez voir l’évolution des résultats.

    1. Testez le programme sur l'image inputs/bridge.png avec le filtre inversion.

    2. Vérifier les images de sortie (sont-elles complètes ?). 

    1. Vérifier les images de sortie (sont-elles strictement identiques ?).

    1. Testez maintenant le programme sur l'image inputs/ducks.png avec le filtre de floutage : blur.
3 - Etude des performances :
  1. Testez les différentes versions du filtre de flou (CPU et GPU) avec les différentes images.
  1. Notez les performances et calculez le speedup entre les versions CPU et GPU pour les différents images testées.
Images
bridge (small)
ducks (large)
T CPU


T GPU


Speedup = T CPU / T GPU



 4 - Activités supplémentaires :
    1. Réimplantez les kernels inversion et gpuBlur en utilisant de blocs 2D et une grille de blocs 2D (à la place du code avec un grille 1D des blocs 1D actuel).