Qu'est-ce que Divergence de warp ?

Situation où, dans un même warp, les threads suivent des chemins différents à cause d'un branchement conditionnel. Les chemins étant exécutés l'un après l'autre, l'efficacité diminue.

Nom japonais: ワープダイバージェンス

« Divergence de warp » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Programmation GPU.

Domaine: Programmation GPU

S'entraîner : questions sur Divergence de warp

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 ?

  1. ALes deux branches sont exécutées simultanément, la vitesse est inchangée
  2. BLes threads de la branche else ne sont pas exécutés et sont abandonnés
  3. CLes branches if et else sont exécutées successivement, les threads non concernés restant inactifs pendant chacune, ce qui réduit l'efficacité
Afficher la réponse et l'explication

Réponse : C. Les branches if et else sont exécutées successivement, les threads non concernés restant inactifs pendant chacune, ce qui réduit l'efficacité

Les 32 threads d'un warp exécutant la même instruction, en cas de divergence, les instructions de la branche if sont d'abord exécutées avec seuls les threads concernés actifs, puis la branche else avec les threads restants. Le résultat est correct, mais pendant chaque phase la moitié des threads ne fait rien, et le temps est la somme des deux chemins. Organiser les données et les threads pour que les branchements soient uniformes au sein d'un warp améliore l'efficacité.

Questions mentionnant « Divergence de warp » (1)

  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 ?

Termes associés

Bloc de threads Boucle grid-stride Coalescence mémoire Conflit de banc CUDA Masquage de latence Mémoire constante Mémoire épinglée (pinned memory) Mémoire partagée (shared memory) Mémoire unifiée

Retour au glossaire