Les cartes graphiques sont des mini-ordinateurs dont les processeur ont des micro-architectures qui permettent l’exécution d’instructions SIMD et donc de la parallélisation.

CPU vs GPU

Quand on code un programme pour une carte graphique en CUDA/OpenCL on n’utilise pas d’instructions SIMD mais des thread ayant chacun son propre contexte mais exécute le même code et manipule la même mémoire.

Chaque thread a ses propres registres, sa propre stack et son propre program counter (ou Compteur ordinal: l’adresse vers la prochaine instruction).

LexiqueSignification
Warp/Thread blockGroupement de threads, chacun d’entre eux exécuté par une unité fonctionnelle
GridGroupement de Warps dans lequel un Kernel est invoqué
Kernel (GPU Code)Code d’un thread
CPU CodeCode appelant le Kernel sur X thread

SMStreaming MultiProcessors il s’agit d’un processeur qui se voit scheduler un Warp et les envoie dans une Unité d’exécution.
Theorical OccupancyQuantité de Warps pouvant être lancés par l’utilisateur
Warps éligiblesWarps actifs pouvant être exécutés
Stalled WarpsWarps actifs en attente
Warps actifsStalled Warps + Warps éligibles
Warps sélectionnésWarps éligibles en cours d’exécution

Grid de warps

architecture de SM

TIP

On peut voir les warps du SM comme des instructions