Quelqu'un peut-il décrire les différences entre __global__
y __device__
?
Quand dois-je utiliser __device__
et quand l'utiliser __global__
?.
Quelqu'un peut-il décrire les différences entre __global__
y __device__
?
Quand dois-je utiliser __device__
et quand l'utiliser __global__
?.
__global__
est la définition du noyau. Chaque fois qu'elle est appelée depuis le CPU, ce noyau est lancé sur le GPU.
Cependant, chaque thread exécutant ce noyau peut avoir besoin d'exécuter certains codes encore et encore, par exemple l'échange de deux entiers. Ainsi, ici, nous pouvons écrire une fonction d'aide, tout comme nous le faisons dans un programme C. Et pour les threads s'exécutant sur le GPU, une fonction d'aide doit être déclarée comme suit __device__
.
Ainsi, une fonction de périphérique est appelée depuis les threads d'un noyau - une instance pour un thread . Alors qu'une fonction globale est appelée par un thread de l'unité centrale.
J'enregistre ici quelques spéculations non fondées pour l'instant (je les étayerai plus tard lorsque je tomberai sur une source faisant autorité)...
__device__
Les fonctions peuvent avoir un type de retour autre que void mais __global__
doivent toujours renvoyer un message vide.
__global__
peuvent être appelées depuis d'autres noyaux s'exécutant sur le GPU pour lancer des threads GPU supplémentaires (dans le cadre du modèle de parallélisme dynamique CUDA (alias CNP)) tandis que les fonctions __device__
s'exécutent sur le même thread que le noyau appelant.
__global__
est un mot-clé CUDA C (spécificateur de déclaration) qui indique que la fonction ,
les fonctions globales (noyaux) lancées par le code hôte à l'aide de <<< no_of_blocks , no_of threads_per_block>>>
. Chaque thread exécute le noyau par son identifiant unique.
Cependant, __device__
ne peuvent pas être appelées depuis le code hôte. Si vous devez le faire, utilisez les deux fonctions suivantes __host__
__device__
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.