Programmation GPU

Pourquoi le transfert vers le GPU est-il plus rapide lorsque la mémoire CPU est épinglée (verrouillée en pages) ?

  1. AParce que le système d'exploitation ne déplace ni n'évince ces pages, le GPU peut y lire et écrire directement par DMA, sans copie intermédiaire, et des transferts asynchrones deviennent possibles
  2. BParce que l'épinglage compresse les données
  3. CParce que l'épinglage augmente la génération de PCI Express
Afficher la réponse et l'explication

Réponse : A. Parce que le système d'exploitation ne déplace ni n'évince ces pages, le GPU peut y lire et écrire directement par DMA, sans copie intermédiaire, et des transferts asynchrones deviennent possibles

La mémoire ordinaire peut à tout moment être déplacée par le système d'exploitation vers une autre page physique ou évincée vers le stockage ; il serait donc dangereux que le DMA du GPU y accède directement. Normalement, les données sont d'abord copiées dans une zone temporaire épinglée avant le transfert. Utiliser d'emblée de la mémoire épinglée supprime cette copie supplémentaire et permet des transferts asynchrones recouvrant le traitement CPU.

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

Autres questions sur Programmation GPU

  1. Quel est l'objectif principal de l'utilisation de plusieurs flux (streams) CUDA ?
  2. 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 ?
  3. Quelle est la définition de la mémoire unifiée (unified memory) de CUDA ?
  4. 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 ?
  5. Pourquoi, sur de nombreux GPU grand public pour le jeu, les performances en double précision (FP64) sont-elles bien inférieures (par exemple quelques dizaines de fois) à celles en simple précision (FP32) ?

Comparatifs sur ce thème