GPU-Programmierung

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?

  1. AWeil die GPU nicht addieren kann
  2. BWeil die Zeit für das Kopieren der Daten über PCI Express länger ist als die Zeit, die die Berechnung auf der GPU einspart
  3. CWeil sich Werte ändern, wenn Daten an die GPU gesendet werden
Antwort und Erläuterung anzeigen

Antwort: B. Weil die Zeit für das Kopieren der Daten über PCI Express länger ist als die Zeit, die die Berechnung auf der GPU einspart

Die Bandbreite von PCI Express ist um mehr als eine Größenordnung kleiner als die Speicherbandbreite der GPU, sodass allein das Senden der Daten Zeit kostet. Wird pro Element nur eine Addition ausgeführt, ist die Rechenzeit im Vergleich zur Sendezeit verschwindend gering, und die Geschwindigkeit der GPU kommt nicht zur Geltung. Die GPU lohnt sich, wenn auf die gesendeten Daten viel gerechnet wird oder die Daten im GPU-Speicher verbleiben und mehrfach verarbeitet werden.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Warum wird die Übertragung schneller, wenn CPU-Speicher fixiert (Page-Locked) und dann auf die GPU übertragen wird?
  2. Was ist der Hauptzweck der Verwendung mehrerer CUDA-Streams?
  3. Ein Programm, das tausende Male hintereinander sehr kleine Kernel startet, ist langsam. Welche Verbesserung ist am besten geeignet?
  4. Welche Aussage zu Unified Memory von CUDA ist richtig?
  5. Was bestimmt hauptsächlich die Leistung bei der elementweisen Addition zweier großer Arrays auf der GPU (c[i] = a[i] + b[i])?

Vergleiche zu diesem Thema