Leçon 3 : Ton premier kernel — __global__ et <<<>>>
Jusqu'ici, le GPU n'était qu'une idée — des milliers de petits employés attendant une tâche ; on va maintenant leur donner leur premier travail. Le code exécuté par chaque employé du GPU s'appelle un kernel : une petite fonction que tous les threads exécutent ensemble, chacun sur sa propre donnée. I
Un kernel, c'est comme une recette que tu épingles sur le tableau d'affichage d'une cuisine géante. Toi (le CPU) tu ne cuisines pas — tu épingles juste la recette et tu cries <<<2 tables, 4 cuisiniers>>>. Les huit cuisiniers se mettent au travail, et toi tu pars faire autre chose sans attendre qu'ils finissent.
- __global__
- Marque un kernel : une fonction qui s'exécute sur le GPU et se lance depuis le CPU. Elle renvoie toujours void.
- configuration de lancement <<<>>>
- La syntaxe kernel<<<numBlocks, threadsPerBlock>>>(args) qui définit combien de blocks et combien de threads par block.
- grid et block
- Un block est un groupe de threads ; une grid est l'ensemble des blocks d'un lancement. Total de threads = numBlocks fois threadsPerBlock.
- lancement asynchrone
- Le CPU n'attend pas que le kernel se termine ; il continue immédiatement. Une synchronisation explicite est nécessaire avant de lire les résultats.