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 ?
- ALe CPU est obligatoirement bloqué jusqu'à la fin du noyau et ne peut rien faire
- BLe noyau s'exécute sur le CPU
- 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.