Programmation GPU

Quelle est la différence entre le mode SIMT (instruction unique, threads multiples) des GPU et les instructions SIMD des CPU ?

  1. ALe SIMT applique simultanément plusieurs instructions à une donnée, le SIMD une instruction à une donnée
  2. BSIMT et SIMD sont strictement identiques, seul le nom diffère
  3. CEn SIMT, chaque thread s'écrit comme un programme indépendant et le matériel gère les branchements, alors qu'en SIMD le programmeur ou le compilateur utilise explicitement des instructions vectorielles de largeur fixe
Afficher la réponse et l'explication

Réponse : C. En SIMT, chaque thread s'écrit comme un programme indépendant et le matériel gère les branchements, alors qu'en SIMD le programmeur ou le compilateur utilise explicitement des instructions vectorielles de largeur fixe

En SIMD sur CPU, une instruction s'applique à un registre vectoriel regroupant 4 ou 8 données ; le programme est donc écrit en tenant compte de la largeur du vecteur. En SIMT sur GPU, le programmeur écrit normalement le traitement d'un seul thread, et le matériel regroupe les threads par 32 pour les exécuter avec la même instruction. Les branchements par thread sont permis : le matériel exécute successivement les chemins divergents, mais l'efficacité baisse alors.

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

Autres questions sur Programmation GPU

  1. Dans un warp, un branchement conditionnel envoie la moitié des threads dans la branche if et l'autre moitié dans la branche else (divergence de warp). Comment l'exécution se déroule-t-elle généralement ?
  2. Les codes (1) et (2) ci-dessus font tous deux exécuter A à la moitié des threads et B à l'autre moitié. Quelle explication est correcte du point de vue de l'efficacité des warps (32 threads par warp) ?
  3. Quelle est la définition de l'accès mémoire coalescé (coalescing) sur GPU ?
  4. Avec i l'indice de chaque thread, lire le tableau tous les 32 éléments comme ci-dessus est plus lent que lire a[i]. Quelle en est la raison principale ?
  5. Pour traiter sur GPU des données de particules ayant des positions x, y et z, quelle disposition est avantageuse du point de vue de l'accès mémoire coalescé ?

Comparatifs sur ce thème