Programmation GPU

En CUDA, quel est généralement le comportement juste après le lancement d'un noyau par le programme côté CPU ?

  1. ALe CPU est obligatoirement bloqué jusqu'à la fin du noyau et ne peut rien faire
  2. BLe noyau s'exécute sur le CPU
  3. CLe lancement étant asynchrone, le CPU passe au traitement suivant sans attendre la fin du noyau, et une synchronisation est nécessaire avant d'utiliser le résultat
Afficher la réponse et l'explication

Réponse : C. Le lancement étant asynchrone, le CPU passe au traitement suivant sans attendre la fin du noyau, et une synchronisation est nécessaire avant d'utiliser le résultat

Le lancement d'un noyau se contente d'ajouter le traitement à la file de commandes du GPU, et le contrôle revient immédiatement au CPU. Le CPU peut ainsi préparer les données suivantes pendant que le GPU calcule. En revanche, avant de lire le résultat côté CPU, il faut s'assurer de la fin du noyau par cudaDeviceSynchronize ou par la copie du résultat (qui, dans le même flux, attend la fin du traitement précédent). De même, sans synchronisation, le temps d'un noyau ne peut pas être mesuré correctement.

S'entraîner sur ce thème Retour au thème

Autres questions sur Programmation GPU

  1. Quelle est la différence de philosophie de conception entre CPU et GPU ?
  2. Quelle est la caractéristique la plus adaptée d'une tâche que le GPU traite rapidement ?
  3. Quel traitement tend à être peu efficace lorsqu'il est exécuté sur GPU ?
  4. Quelle est la définition du « noyau » (kernel) en programmation GPU, par exemple en CUDA ?
  5. Quelle est la hiérarchie correcte des threads en CUDA (du plus grand au plus petit) ?

Comparatifs sur ce thème