Programmation GPU
Quelle hypothèse faut-il respecter lors de l'écriture d'un noyau GPU ?
- ALes threads s'exécutent toujours un par un dans l'ordre croissant des indices
- BLe bloc 1 ne commence jamais avant la fin du bloc 0
- CL'ordre d'exécution des threads et des blocs n'étant pas défini, le code doit être écrit pour que le résultat n'en dépende pas
Afficher la réponse et l'explication
Réponse : C. L'ordre d'exécution des threads et des blocs n'étant pas défini, le code doit être écrit pour que le résultat n'en dépende pas
Le GPU affectant successivement threads et blocs aux ressources disponibles, l'ordre d'exécution varie selon le modèle de GPU et la charge. Si un thread compte sur une valeur écrite par un autre, le programme peut fonctionner par hasard et échouer dans un autre environnement. Lorsqu'un ordre est nécessaire, on utilise __syncthreads() au sein d'un bloc, un découpage en noyaux entre blocs, et les opérations atomiques ou la réduction pour les sommes.