Qu'est-ce que Noyau GPU (kernel) ?

Fonction exécutée simultanément par de nombreux threads sur le GPU. Lancée depuis le programme côté CPU, chaque thread choisit les données qui lui reviennent d'après son numéro. Sens différent du noyau de l'OS.

Nom japonais: GPUカーネル

« Noyau GPU (kernel) » apparaît dans 3 questions d'entraînement réparties sur 1 thèmes, dont Programmation GPU.

Domaine: Programmation GPU

S'entraîner : questions sur Noyau GPU (kernel)

Quelle est la définition du « noyau » (kernel) en programmation GPU, par exemple en CUDA ?

  1. ALa partie centrale du système d'exploitation du GPU
  2. BUne fonction exécutée simultanément par de nombreux threads sur le GPU
  3. CUn composant refroidissant la puce GPU
Afficher la réponse et l'explication

Réponse : B. Une fonction exécutée simultanément par de nombreux threads sur le GPU

En programmation GPU, un noyau est une fonction lancée depuis le programme côté CPU et dont le même code est exécuté par de nombreux threads sur le GPU. Chaque thread utilise son propre indice pour choisir l'élément de données dont il est chargé. Pour une addition de tableaux par exemple, on écrit le noyau pour qu'un thread additionne un élément, et l'on lance autant de threads que d'éléments. Le mot est le même que pour le noyau d'un système d'exploitation, mais le sens diffère.

Que peut-il se produire si un noyau GPU utilise trop de registres par thread ?

  1. ALes registres augmentent automatiquement et les performances s'améliorent toujours
  2. BLe résultat du calcul est toujours faux
  3. CLe nombre total de registres du SM étant fixe, le nombre de threads chargés simultanément diminue et la latence mémoire est plus difficile à masquer
Afficher la réponse et l'explication

Réponse : C. Le nombre total de registres du SM étant fixe, le nombre de threads chargés simultanément diminue et la latence mémoire est plus difficile à masquer

Le GPU conserve sur puce les registres de tous les threads en cours d'exécution, ce qui permet de basculer instantanément entre warps. Si chaque thread utilise beaucoup de registres, le nombre de threads chargés simultanément sur le SM diminue. Les registres manquants sont évacués en mémoire (spill), ce qui peut ralentir l'exécution. On fixe parfois une limite de registres via les options du compilateur pour équilibrer avec le nombre de threads.

Questions mentionnant « Noyau GPU (kernel) » (3)

  1. Quelle est la définition du « noyau » (kernel) en programmation GPU, par exemple en CUDA ?
  2. Que peut-il se produire si un noyau GPU utilise trop de registres par thread ?
  3. Quelle hypothèse faut-il respecter lors de l'écriture d'un noyau GPU ?

Termes associés

GPU CUDA Multiprocesseur de flux (SM) Débordement (spill) Via Bloc de threads Boucle grid-stride Coalescence mémoire Conflit de banc Divergence de warp

Retour au glossaire