Programmation GPU

Envoyer des données au GPU pour un traitement léger, comme une seule addition par élément d'un tableau, peut être plus lent qu'un calcul sur CPU. Quelle en est la raison principale ?

  1. AParce que le GPU ne sait pas additionner
  2. BParce que le temps de copie des données par PCI Express dépasse le temps de calcul gagné sur le GPU
  3. CParce que l'envoi au GPU modifie les valeurs des données
Afficher la réponse et l'explication

Réponse : B. Parce que le temps de copie des données par PCI Express dépasse le temps de calcul gagné sur le GPU

La bande passante PCI Express est inférieure d'au moins un ordre de grandeur à celle de la mémoire GPU, si bien que le seul envoi des données prend du temps. Avec une seule addition par élément, le temps de calcul est négligeable devant le temps d'envoi et la vitesse du GPU n'est pas exploitée. Le GPU est avantageux lorsque de nombreux calculs portent sur les données envoyées, ou lorsque les données restent en mémoire GPU pour des traitements répétés.

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

Autres questions sur Programmation GPU

  1. Pourquoi le transfert vers le GPU est-il plus rapide lorsque la mémoire CPU est épinglée (verrouillée en pages) ?
  2. Quel est l'objectif principal de l'utilisation de plusieurs flux (streams) CUDA ?
  3. Un programme qui lance des milliers de fois de suite des noyaux très petits est lent. Quelle amélioration est la plus appropriée ?
  4. Quelle est la définition de la mémoire unifiée (unified memory) de CUDA ?
  5. Lors de l'addition élément par élément de deux grands tableaux sur GPU (c[i] = a[i] + b[i]), qu'est-ce qui détermine principalement les performances ?

Comparatifs sur ce thème