GPU-programmeren

Welke methode is de belangrijkste waarmee een GPU lange geheugenlatentie (enkele honderden klokcycli) verbergt?

  1. AEen cache die vele malen groter is dan die van de CPU per thread
  2. BTerwijl een warp op geheugen wacht, wordt overgeschakeld op een andere uitvoerbare warp, zodat de rekeneenheden blijven werken
  3. CZonder op het geheugen te wachten, de waarde van de data raden en rekenen
Antwoord en toelichting tonen

Antwoord: B. Terwijl een warp op geheugen wacht, wordt overgeschakeld op een andere uitvoerbare warp, zodat de rekeneenheden blijven werken

De CPU vermindert het wachten van één thread met grote caches en ingewikkelde schakelingen, maar de GPU houdt veel warps geladen, legt de warp die op geheugen wacht opzij en geeft de instructie van een andere warp die direct kan worden uitgevoerd. Omdat alle registers op de chip staan, kost het omschakelen geen moeite. Met voldoende warps hoeven de rekeneenheden ook tijdens de geheugenlatentie niet stil te staan.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. Welke uitspraak over de occupancy van een GPU is juist?
  2. Welke uitspraak over de relatie tussen blocks en SM's (streaming multiprocessors) in CUDA is juist?
  3. In CUDA wil men halverwege een kernel wachten tot de berekeningen van alle andere blocks klaar zijn voordat men naar de volgende fase gaat. Welke methode is gebruikelijk?
  4. Bij het maken van een histogram van pixelwaarden op een GPU kan het traag zijn als alle threads rechtstreeks met atomicAdd bij de 256 bins in global memory optellen. Welke verbetermethode is juist?
  5. Waarom wordt bij het berekenen van de som van veel waarden op een GPU een reductie in boomvorm gebruikt (herhaaldelijk naburige waarden optellen en zo halveren)?

Vergelijkingen bij dit onderwerp