GPU-programmeren

Welke uitspraak over de occupancy van een GPU is juist?

  1. ABij een occupancy van 100% worden altijd de hoogste prestaties behaald
  2. BOok bij een lage occupancy kunnen hoge prestaties worden behaald als elke thread veel onafhankelijke berekeningen krijgt en het instructieparallellisme wordt vergroot
  3. COccupancy heeft helemaal niets met prestaties te maken
Antwoord en toelichting tonen

Antwoord: B. Ook bij een lage occupancy kunnen hoge prestaties worden behaald als elke thread veel onafhankelijke berekeningen krijgt en het instructieparallellisme wordt vergroot

Occupancy is een van de middelen om latentie te verbergen, niet het doel. Als een thread meerdere onderling onafhankelijke berekeningen of geheugenleesacties achter elkaar kan uitgeven, kan de wachttijd ook met weinig warps worden opgevuld. Omgekeerd kan het verminderen van registers om de occupancy te verhogen het verplaatsen naar geheugen doen toenemen en trager zijn. Zekerheid over prestaties krijgt men door met een profiler te meten.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. Welke uitspraak over de relatie tussen blocks en SM's (streaming multiprocessors) in CUDA is juist?
  2. 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?
  3. 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?
  4. 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)?
  5. Hoeveel stappen zijn nodig om 1024 waarden met een reductie in boomvorm te sommeren?

Vergelijkingen bij dit onderwerp