Programmation GPU
Quel est le rôle de __syncthreads() en CUDA ?
- ASynchroniser tous les threads du GPU, à travers les blocs
- BFaire attendre tous les threads d'un même bloc jusqu'à ce point et rendre visibles les écritures antérieures en mémoire partagée
- CSynchroniser les horloges du CPU et du GPU
Afficher la réponse et l'explication
Réponse : B. Faire attendre tous les threads d'un même bloc jusqu'à ce point et rendre visibles les écritures antérieures en mémoire partagée
Dans un traitement utilisant la mémoire partagée, l'écriture d'une valeur par un thread doit être terminée avant qu'un autre thread ne la lise. __syncthreads() fait attendre jusqu'à ce que tous les threads du bloc y soient parvenus, ce qui garantit par exemple que le calcul ne commence qu'une fois que tous ont fini de charger les données en mémoire partagée. Seuls les threads d'un même bloc peuvent être synchronisés ainsi.