Wat is Occupancy?

Verhouding tussen het aantal warps dat daadwerkelijk op een GPU-SM staat en het maximale aantal warps dat tegelijk op een SM kan staan. Wordt bepaald door het gebruik van registers en shared memory.

Japanse benaming: 占有率

“Occupancy” komt voor in 4 oefenvragen uit 2 onderwerpen, bijv. GPU-programmeren, Prestatiemeting en profiling.

Vakgebied: GPU-programmeren

Nu oefenen: vragen over Occupancy

Welke uitspraak over de bezettingsgraad (occupancy) van een GPU is juist?

  1. AHet aandeel van het chipoppervlak van de GPU dat door rekeneenheden wordt ingenomen
  2. BDe verhouding van het werkelijke aantal warps dat op een SM staat tot het maximale aantal warps dat tegelijk op een SM kan staan
  3. CHet aandeel van het geheugen van de GPU dat met data is gevuld
Antwoord en toelichting tonen

Antwoord: B. De verhouding van het werkelijke aantal warps dat op een SM staat tot het maximale aantal warps dat tegelijk op een SM kan staan

Het aantal warps dat een SM tegelijk kan laden heeft een bovengrens, en het werkelijke aantal wordt bepaald door onder meer de registers per thread, het shared memory per block en de blockgrootte. Die verhouding is de occupancy. Bij een lage occupancy zijn er weinig warps die kunnen worden uitgevoerd in plaats van de warps die op geheugen wachten, en staan de rekeneenheden gemakkelijk stil. CUDA biedt ook een tool om de occupancy te berekenen.

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.

“Occupancy” in de toelichting

Vragen met “Occupancy” (4)

  1. Welke uitspraak over de bezettingsgraad (occupancy) van een GPU is juist?
  2. Welke uitspraak over de occupancy van een GPU is juist?
  3. Welke algemene richtlijn voor het bepalen van het aantal threads per block in CUDA is juist?
  4. Wat is het meest geschikt om als eerste te controleren bij het analyseren van de prestaties van een programma dat de GPU gebruikt?

Verwante termen

GPU Shared memory CUDA Profiler Streaming multiprocessor (SM) Bankconflict Constant memory Gemengde precisie (mixed precision) GPU-kernel Grid-stride loop

Naar de woordenlijst