GPU-programmeren

Welke combinatie van de hiërarchie van CUDA-threads is juist (van groot naar klein)?

  1. AGrid → block → thread
  2. BThread → block → grid
  3. CBlock → thread → grid
Antwoord en toelichting tonen

Antwoord: A. Grid → block → thread

Eén keer een kernel starten vormt het gehele grid, het grid is verdeeld in veel blocks en een block in veel threads. De threads van één block worden uitgevoerd op dezelfde SM (een groep rekeneenheden), kunnen via shared memory samenwerken en kunnen synchroniseren. Verschillende blocks worden onafhankelijk uitgevoerd, dus het aantal blocks dat tegelijk draait verandert met de omvang van de GPU, en hetzelfde programma draait op kleine en grote GPU's.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. In een CUDA-kernel wordt met bovenstaande formule het nummer i van elke thread bepaald. Wat is i voor de thread met blockIdx.x=2, blockDim.x=256 en threadIdx.x=5?
  2. Een array van 1000 elementen moet worden verwerkt met 256 threads per block en één element per thread. Welk aantal blocks dat moet worden gestart is juist?
  3. Waarom wordt in de bovenstaande CUDA-kernel 'if (i < n)' opgenomen?
  4. Hoe heet bij NVIDIA-GPU's de eenheid waarin 32 threads tot één bundel worden gevormd die dezelfde instructie tegelijk uitvoert?
  5. Welke uitspraak over het verschil tussen de SIMT-methode (single instruction, multiple threads) van de GPU en SIMD-instructies van de CPU is juist?

Vergelijkingen bij dit onderwerp