Programmation GPU

Sur GPU, on veut extraire d'un tableau les seuls éléments satisfaisant une condition et les écrire de façon compacte dans un autre tableau (chaque thread produit 0 ou 1 sortie). Quel calcul parallèle est couramment utilisé pour déterminer l'adresse d'écriture de chaque thread ?

  1. ALa transposition de matrice
  2. BLa somme préfixe (scan, somme cumulée depuis le début)
  3. CLa transformée de Fourier rapide
Afficher la réponse et l'explication

Réponse : B. La somme préfixe (scan, somme cumulée depuis le début)

En représentant par 0 ou 1 le fait que chaque thread produise une sortie et en calculant la somme cumulée depuis le début (somme préfixe exclusive), la valeur de chaque thread devient « le nombre de threads produisant une sortie avant lui », qui est directement son adresse d'écriture. Le scan se calcule en parallèle en arbre, comme la réduction. C'est l'outil de base pour écrire de façon compacte, en restant parallèle, des traitements dont le nombre de sorties varie selon l'élément.

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

Autres questions sur Programmation GPU

  1. Quelle hypothèse faut-il respecter lors de l'écriture d'un noyau GPU ?
  2. 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 ?
  3. En CUDA, quel est généralement le comportement juste après le lancement d'un noyau par le programme côté CPU ?
  4. Quelle est la différence de philosophie de conception entre CPU et GPU ?
  5. Quelle est la caractéristique la plus adaptée d'une tâche que le GPU traite rapidement ?

Comparatifs sur ce thème