GPU-Programmierung
Was kann in einem GPU-Kernel geschehen, wenn jeder Thread zu viele Register verwendet?
- ADie Register werden automatisch vermehrt, und die Leistung steigt stets
- BDas Rechenergebnis ist stets falsch
- 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.