GPU-Programmierung

Was gilt im Allgemeinen für CPU-seitigen und GPU-seitigen Speicher bei einem Programm, das eine einzelne diskrete GPU nutzt?

  1. AEs sind getrennte Speicher; vor der Berechnung werden die Daten auf die GPU kopiert, und nach der Berechnung wird das Ergebnis zurück auf die CPU kopiert
  2. BEs ist derselbe Speicher, Kopieren ist überhaupt nicht nötig
  3. CDie GPU kann Rechenergebnisse nicht speichern
Antwort und Erläuterung anzeigen

Antwort: A. Es sind getrennte Speicher; vor der Berechnung werden die Daten auf die GPU kopiert, und nach der Berechnung wird das Ergebnis zurück auf die CPU kopiert

Eine diskrete GPU besitzt auf der Karte einen eigenen Speicher wie GDDR oder HBM, der über PCI Express o. Ä. mit dem Speicher der CPU verbunden ist. Der grundlegende Ablauf ist daher, Daten aus dem CPU-Speicher in den GPU-Speicher zu kopieren, den Kernel zu starten und nach Abschluss das Ergebnis in den CPU-Speicher zurückzukopieren. Die Zeit für dieses Kopieren bestimmt oft die Gesamtleistung.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Bei einer leichten Verarbeitung, die jedes Array-Element nur einmal addiert, kann das Senden der Daten an die GPU langsamer sein als die Berechnung auf der CPU. Was ist der Hauptgrund?
  2. Warum wird die Übertragung schneller, wenn CPU-Speicher fixiert (Page-Locked) und dann auf die GPU übertragen wird?
  3. Was ist der Hauptzweck der Verwendung mehrerer CUDA-Streams?
  4. Ein Programm, das tausende Male hintereinander sehr kleine Kernel startet, ist langsam. Welche Verbesserung ist am besten geeignet?
  5. Welche Aussage zu Unified Memory von CUDA ist richtig?

Vergleiche zu diesem Thema