GPU Computing CUDA

Présentation de l'API CUDA

Composant de l'API

L'API CUDA se compose en trois parties :

Texte remplaçant l'image

Vocabulaire

Un certain vocabulaire est associé au developpement sur GPU, je vais vous en faire la liste dans les lignes suivantes.

Texte remplaçant l'image

  • L'hôte est le CPU, c'est lui qui demande au périphérique (le GPU) d'effectuer les calculs.
  • Un kernel est une portion parallèle de code à exécuter sur le périphérique.
    Chacune de ses instances s'appelle un thread.
  • Une grille est constituée de blocs. Chaque bloc est constitué de threads.
Un bloc est un élément des calculs, dissociable des autres blocs : les blocs ne doivent
donc pas être exécutés dans un certain ordre : parallèlement, consécutivement ou toute
autre combinaison est possible. C'est pourquoi les threads ne peuvent communiquer qu'avec
des threads du même bloc.

Un thread est exécuté par un processeur : posons donc l'égalité entre le thread et
le processeur. Ainsi, le bloc est le multiprocesseur, tandis que la grille représente
l'entièreté de la carte.

Modèle d'exécution

Ancien Modèle SIMD(single instruction, multiple data):

Nouveau Modèle SIMT(single instruction, multiple thread) :