GPU-Programmierung

Was kann in einem GPU-Kernel geschehen, wenn jeder Thread zu viele Register verwendet?

  1. ADie Register werden automatisch vermehrt, und die Leistung steigt stets
  2. BDas Rechenergebnis ist stets falsch
  3. CDa die Gesamtzahl der Register des SM fest ist, sinkt die Zahl gleichzeitig platzierbarer Threads, und Speicherlatenzen lassen sich schwerer verbergen
Antwort und Erläuterung anzeigen

Antwort: C. Da die Gesamtzahl der Register des SM fest ist, sinkt die Zahl gleichzeitig platzierbarer Threads, und Speicherlatenzen lassen sich schwerer verbergen

Die GPU hält die Register aller laufenden Threads auf dem Chip und wechselt so in einem Augenblick zwischen Warps. Verwendet ein Thread viele Register, sinkt daher die Zahl der gleichzeitig auf dem SM platzierbaren Threads. Reichen die Register nicht aus, werden sie in den Speicher ausgelagert (Spill), was ebenfalls verlangsamen kann. Mitunter wird über die Compiler-Einstellung eine Obergrenze für Register angegeben, um einen Ausgleich mit der Thread-Zahl herzustellen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Aussage zur Auslastung (Occupancy) der GPU ist richtig?
  2. Wie verbirgt die GPU hauptsächlich lange Speicherlatenzen (einige hundert Takte)?
  3. Welche Aussage zur Occupancy der GPU ist richtig?
  4. Welche Aussage zum Verhältnis von Block und SM (Streaming Multiprocessor) in CUDA ist richtig?
  5. 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?

Vergleiche zu diesem Thema