GPU-programmeren

Welke uitspraak over coalesced geheugentoegang bij GPU's is juist?

  1. AHet geheugen van twee GPU's wordt samengevoegd, waardoor de capaciteit verdubbelt
  2. BDe data in het geheugen worden gecomprimeerd om de capaciteit te vergroten
  3. CAls naburige threads van een warp naburige adressen lezen, volstaan met samengevoegde toegangen minder geheugentoegangen
Antwoord en toelichting tonen

Antwoord: C. Als naburige threads van een warp naburige adressen lezen, volstaan met samengevoegde toegangen minder geheugentoegangen

Het geheugen van een GPU wordt gelezen en geschreven in gebundelde eenheden zoals 32 of 128 bytes. Als de 32 threads van een warp elk 4 bytes op aansluitende adressen lezen, kan het geheel van 128 bytes met één tot enkele toegangen worden gelezen. Als de adressen verspreid liggen, leest elke thread een ander blok en wordt ook ongebruikte data aangevoerd, zodat de effectieve bandbreedte met een factor daalt.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. Als zoals hierboven elke 32 elementen van de array wordt gelezen, waarbij i het nummer van elke thread is, is dat trager dan het lezen van a[i]. Wat is de belangrijkste reden?
  2. Welke rangschikking is voordelig voor coalesced geheugentoegang wanneer data van deeltjes met posities x, y en z op een GPU wordt verwerkt?
  3. Welke uitspraak over de kenmerken van CUDA shared memory is juist?
  4. Welke uitspraak over de werking van __syncthreads() in CUDA is juist?
  5. In CUDA wordt __syncthreads() binnen 'if (threadIdx.x < 16)' geplaatst, zodat alleen een deel van de threads er doorheen komt. Wat kan er juist gebeuren?

Vergelijkingen bij dit onderwerp