GPU-programmeren

Welk voordeel van het schrijven van een kernel met een lus zoals hierboven (grid-stride loop) is juist?

for (int i = blockIdx.x * blockDim.x + threadIdx.x;
     i < n;
     i += blockDim.x * gridDim.x)
    y[i] = a * x[i] + y[i];
  1. ABij gebruik van een lus is de toegang niet meer coalesced
  2. BOok als er minder threads worden gestart dan er elementen zijn, verwerkt elke thread meerdere elementen met een tussenruimte van het totale aantal threads en kunnen alle elementen worden behandeld
  3. CEr draait nog maar één thread
Antwoord en toelichting tonen

Antwoord: B. Ook als er minder threads worden gestart dan er elementen zijn, verwerkt elke thread meerdere elementen met een tussenruimte van het totale aantal threads en kunnen alle elementen worden behandeld

Omdat telkens met het totale aantal threads (blockDim.x×gridDim.x) wordt doorgeteld, worden ongeacht het aantal threads alle elementen zonder uitzondering verwerkt. Er kan met een redelijk aantal blocks worden gestart dat past bij het aantal SM's van de GPU, en ook de moeite van het aanmaken van threads neemt af. In elke ronde van de lus behandelen naburige threads naburige elementen, dus coalesced toegang blijft behouden.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. Bij welke toegang werkt CUDA constant memory bijzonder snel?
  2. Welke uitspraak is juist over een kenmerk van GPU-caches in vergelijking met CPU's?
  3. Welk voorbeeld van een programmeermechanisme voor parallelle berekeningen op GPU's e.d., dat ook voor andere GPU's dan die van NVIDIA kan worden gebruikt, is juist?
  4. Op een GPU wil men alleen de elementen die aan een voorwaarde voldoen uit een array halen en in een andere array compact wegschrijven (elke thread levert 0 of 1 uitvoer). Welke parallelle berekening wordt veel gebruikt om het schrijfadres van elke thread te bepalen?
  5. Welke uitspraak over een uitgangspunt dat bij het schrijven van GPU-kernels moet worden aangehouden, is juist?

Vergelijkingen bij dit onderwerp