GPU-programmeren
Wat kan er gebeuren in een GPU-kernel als het registergebruik per thread te hoog is?
- AEr komen automatisch meer registers bij, waardoor de prestaties altijd verbeteren
- BHet rekenresultaat is altijd verkeerd
- CHet totale aantal registers van een SM staat vast, dus het aantal threads dat tegelijk kan worden geladen daalt en geheugenlatentie is moeilijker te verbergen
Antwoord en toelichting tonen
Antwoord: C. Het totale aantal registers van een SM staat vast, dus het aantal threads dat tegelijk kan worden geladen daalt en geheugenlatentie is moeilijker te verbergen
Een GPU wisselt van warp in een oogwenk doordat de registers van alle uitgevoerde threads op de chip worden bewaard. Daarom daalt het aantal threads dat tegelijk op een SM kan worden geladen als één thread veel registers gebruikt. Wat niet past, wordt naar het geheugen verplaatst (spill), wat ook trager kan zijn. Soms wordt in de compilerinstellingen een bovengrens voor registers opgegeven om evenwicht met het aantal threads te vinden.