J'ai quelques questions sur la façon dont les GPU effectuent les synchronisations. Comme je le sais, lorsqu'un warp rencontre une barrière (en supposant que ce soit en OpenCL), et qu'il sait que les autres warps du même groupe ne sont pas encore passés par là. Elle doit donc attendre. Mais que fait exactement ce warp pendant le temps d'attente ? Est-elle toujours active ? Ou va-t-elle effectuer des opérations nulles ?
Comme je le remarque, lorsque nous avons une synchronisation dans le noyau, le nombre d'instructions augmente. Je me demande quelle est la source de cet incrément. La synchronisation est-elle décomposée en autant de petites instructions GPU ? Ou parce que les warps inactifs exécutent quelques instructions supplémentaires ?
Et enfin, je me demande fortement si le coût ajouté par une synchronisation, par rapport à une synchronisation sans synchro, (disons barrière(CLK_LOCAL_MEM_FENCE)) est affecté par le nombre de chaîne dans un groupe de travail (ou threadblock) ? Merci