GPU-Programmierung

Warum wird die Übertragung schneller, wenn CPU-Speicher fixiert (Page-Locked) und dann auf die GPU übertragen wird?

  1. AWeil das Betriebssystem die Seite weder verschiebt noch auslagert, sodass die GPU per DMA direkt lesen und schreiben kann, keine Zwischenkopie nötig ist und auch asynchrone Übertragung möglich ist
  2. BWeil die Daten durch das Fixieren komprimiert werden
  3. CWeil sich durch das Fixieren die PCI-Express-Generation erhöht
Antwort und Erläuterung anzeigen

Antwort: A. Weil das Betriebssystem die Seite weder verschiebt noch auslagert, sodass die GPU per DMA direkt lesen und schreiben kann, keine Zwischenkopie nötig ist und auch asynchrone Übertragung möglich ist

Normalen Speicher kann das Betriebssystem jederzeit auf andere physische Seiten verschieben oder auf den Speicher auslagern, sodass es gefährlich wäre, wenn die GPU per DMA unmittelbar darauf liest und schreibt. Deshalb wird üblicherweise zunächst in einen vorübergehend fixierten Bereich kopiert und dann übertragen. Wird von Anfang an fixierter Speicher verwendet, entfällt diese zusätzliche Kopie, und die Übertragung kann asynchron und überlappend mit der Verarbeitung der CPU erfolgen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Was ist der Hauptzweck der Verwendung mehrerer CUDA-Streams?
  2. Ein Programm, das tausende Male hintereinander sehr kleine Kernel startet, ist langsam. Welche Verbesserung ist am besten geeignet?
  3. Welche Aussage zu Unified Memory von CUDA ist richtig?
  4. Was bestimmt hauptsächlich die Leistung bei der elementweisen Addition zweier großer Arrays auf der GPU (c[i] = a[i] + b[i])?
  5. Was ist der wahrscheinlichste Grund, weshalb bei vielen GPUs für Heimspiele die Rechenleistung in doppelter Genauigkeit (FP64) viel niedriger ist als in einfacher Genauigkeit (FP32), z. B. um ein Vielfaches von zehn?

Vergleiche zu diesem Thema