Introduction à la programmation // sur GPUs
en CUDA et Python
Denis Robilliard
Équipe CAMOME: C. Fonlupt, V. Marion-Poty, A. Boumaza
LISIC — ULCO
Univ Lille Nord de France
BP 719, F-62228 Calais Cedex, France
Séminaire LISIC 19/05/2011
Denis Robilliard Introduction à la programmation // sur GPUs en CUDA et Python Séminaire LISIC 19/05/2011 1 / 24
Introduction
Cadre de l’exposé
Historique : suite à l’exposé de François Rousselle du 17 février 2011
Objectif : présenter quelques bases de la programmation // sur GPU
Matériel : machine "baru" 8 cartes Tesla C2050, fabricant Nvidia
Langages : CUDA (seulement sur matériel Nvidia), Python
Application : "les nombres de Schur", problème de combinatoire
Note
On ne s’intéressera pas aux aspects calculs pour le graphisme
Denis Robilliard Introduction à la programmation // sur GPUs en CUDA et Python Séminaire LISIC 19/05/2011 2 / 24
Plan
1Architecture
2Modèle de programmation
3Principes de programmation
4Exemple : produit terme à terme
5Exemple : réduction
6Conclusions
Denis Robilliard Introduction à la programmation // sur GPUs en CUDA et Python Séminaire LISIC 19/05/2011 3 / 24
Architecture matérielle –1
Rappel
Valable uniquement pour GPUs Nvidia post-2006 (GPU G-80 et suivants)
Modèle de programmation vu à travers le langage CUDA
Schéma de l’architecture d’une carte (device) C2050
...
Device = x 14 multiprocessors = 448 cores
48 Ko Fast Shared RAM
Stream proc
/ Core
Registres
...
Multiprocesseur = x 32 cores
Stream proc
/ Core
Registres
...
48 Ko Fast Shared RAM
Stream proc
/ Core
Registres
...
Multiprocesseur = x 32 cores
Stream proc
/ Core
Registres
2 Go Global RAM
Denis Robilliard Introduction à la programmation // sur GPUs en CUDA et Python Séminaire LISIC 19/05/2011 4 / 24
Architecture matérielle –2
Constitution d’un multi-processeur : les cœurs
Un cœur (core /stream processor) a son propre jeu de registres
Un multiprocesseur = 32 cœurs + 48 Ko de mémoire partagée rapide
(aussi rapide que les registres — accès en 4 cycles)
Ils accèdent tous à la mémoire globale de la carte (2 Go — accès en 400
cycles)
Les 32 cœurs d’un multiprocesseur sont en SIMD (Single Instruction,
Multiple Data) : même instruction "en même temps", potentiellement sur
des données différentes
Cas des structures conditionnelles : tous les cœurs ne doivent pas
forcément faire la même chose certains cœurs seront oisifs (idle) et on
parle de divergence (= perte d’efficacité)
Denis Robilliard Introduction à la programmation // sur GPUs en CUDA et Python Séminaire LISIC 19/05/2011 5 / 24
1 / 31 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !