Programmation GPU

Quelle hypothèse faut-il respecter lors de l'écriture d'un noyau GPU ?

  1. ALes threads s'exécutent toujours un par un dans l'ordre croissant des indices
  2. BLe bloc 1 ne commence jamais avant la fin du bloc 0
  3. 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.

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

Autres questions sur Programmation GPU

  1. Lors de la transposition d'une grande matrice sur GPU (b[j][i] = a[i][j]), quel est l'objectif principal du passage par la mémoire partagée ?
  2. En CUDA, quel est généralement le comportement juste après le lancement d'un noyau par le programme côté CPU ?
  3. Quelle est la différence de philosophie de conception entre CPU et GPU ?
  4. Quelle est la caractéristique la plus adaptée d'une tâche que le GPU traite rapidement ?
  5. Quel traitement tend à être peu efficace lorsqu'il est exécuté sur GPU ?

Comparatifs sur ce thème