GPU-Programmierung

Wie verbirgt die GPU hauptsächlich lange Speicherlatenzen (einige hundert Takte)?

  1. AMit einem um ein Vielfaches größeren Cache als bei der CPU für jeden Thread
  2. BWährend ein Warp auf den Speicher wartet, wird auf einen anderen ausführbaren Warp umgeschaltet, sodass die Recheneinheiten weiterarbeiten
  3. COhne auf den Speicher zu warten, werden die Datenwerte erraten und damit gerechnet
Antwort und Erläuterung anzeigen

Antwort: B. Während ein Warp auf den Speicher wartet, wird auf einen anderen ausführbaren Warp umgeschaltet, sodass die Recheneinheiten weiterarbeiten

Die CPU verringert die Wartezeit eines einzelnen Threads mit großen Caches und komplexen Schaltungen, die GPU dagegen hält sehr viele Warps bereit, stellt auf den Speicher wartende Warps zurück und gibt Anweisungen eines anderen, sofort ausführbaren Warps aus. Da alle Register auf dem Chip liegen, kostet das Umschalten keinen Aufwand. Bei genügend Warps müssen die Recheneinheiten auch während der Speicherlatenz nicht pausieren.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Aussage zur Occupancy der GPU ist richtig?
  2. Welche Aussage zum Verhältnis von Block und SM (Streaming Multiprocessor) in CUDA ist richtig?
  3. In CUDA soll mitten im Kernel gewartet werden, bis die Berechnung aller anderen Blöcke abgeschlossen ist, bevor die nächste Phase beginnt. Welche Methode ist üblich?
  4. Beim Erstellen eines Histogramms von Pixelwerten auf der GPU kann es langsam sein, wenn alle Threads direkt mit atomicAdd auf die 256 Bins im Global Memory addieren. Welche Verbesserung ist richtig?
  5. Warum wird beim Berechnen der Summe vieler Werte auf der GPU eine baumförmige Reduktion verwendet (wiederholtes Addieren benachbarter Werte, wobei sich die Zahl halbiert)?

Vergleiche zu diesem Thema