Wat is Bank?

Onderdeel waarin het DRAM-geheugen is verdeeld, zodat de delen onafhankelijk kunnen werken. Door activeringen en lees- en schrijfacties van verschillende banken te laten overlappen, verbetert de effectieve toegangsprestatie.

Japanse benaming: バンク

“Bank” komt voor in 6 oefenvragen uit 2 onderwerpen, bijv. GPU-programmeren, DRAM.

Vakgebied: DRAM

Nu oefenen: vragen over Bank

Welke uitspraak over bank conflicts van CUDA shared memory is juist?

  1. AEen probleem waarbij twee GPU's dezelfde bankrekening gebruiken
  2. BEen probleem waarbij de capaciteit van shared memory tekortschiet en het programma stopt
  3. CShared memory is verdeeld in 32 banks, en als meerdere threads van een warp tegelijk verschillende adressen in dezelfde bank lezen, worden de toegangen na elkaar uitgevoerd en daalt de snelheid
Antwoord en toelichting tonen

Antwoord: C. Shared memory is verdeeld in 32 banks, en als meerdere threads van een warp tegelijk verschillende adressen in dezelfde bank lezen, worden de toegangen na elkaar uitgevoerd en daalt de snelheid

Shared memory bestaat uit 32 banks waaraan om de 4 bytes opeenvolgend adressen zijn toegewezen, en elke bank kan per keer slechts één adres lezen of schrijven. Als de 32 threads van een warp verschillende banks gebruiken, volstaat één keer, maar als twee threads verschillende adressen in dezelfde bank gebruiken, wordt het in twee keer gesplitst. Bij het lezen van bijvoorbeeld elke 32 elementen komt iedereen op dezelfde bank terecht en splitst het zich in 32 keer. Als iedereen hetzelfde adres leest, wordt het in één keer aan allen uitgedeeld en is er geen conflict.

Een tabel van 32×32 floats staat in shared memory en de 32 threads van een warp lezen in de kolomrichting (verticaal), waardoor een bank conflict ontstaat. Welke maatregel wordt veel toegepast?

  1. ADe tabel als 32×32 laten en de leesvolgorde willekeurig maken
  2. BGeen shared memory meer gebruiken en alles uit global memory lezen
  3. CDe tabel als 32×33 reserveren, dus met één kolom extra, zodat de positie van de bank per rij verschuift
Antwoord en toelichting tonen

Antwoord: C. De tabel als 32×33 reserveren, dus met één kolom extra, zodat de positie van de bank per rij verschuift

Als een rij uit 32 floats (128 bytes) bestaat, begint elke rij bij dezelfde bank, dus alle elementen van dezelfde kolom komen in dezelfde bank terecht en 32 threads die verticaal lezen concentreren zich in één bank. Bij 33 elementen per rij verschuift de bank bij elke volgende rij met één, zodat de 32 elementen van dezelfde kolom over verschillende banks verspreid liggen en in één keer kunnen worden gelezen. Het is een eenvoudige maatregel waarbij alleen geheugen van één ongebruikte kolom wordt toegevoegd.

“Bank” in de toelichting

Vragen met “Bank” (6)

  1. Welke uitspraak over bank conflicts van CUDA shared memory is juist?
  2. Een tabel van 32×32 floats staat in shared memory en de 32 threads van een warp lezen in de kolomrichting (verticaal), waardoor een bank conflict ontstaat. Welke maatregel wordt veel toegepast?
  3. Waarom is bij DRAM periodiek verversen (refresh) nodig?
  4. Wat is het belangrijkste doel van het verdelen van het DRAM-inwendige in meerdere banken?
  5. Welk probleem ten aanzien van refresh doet zich gemakkelijk voor naarmate de DRAM-capaciteit groter wordt?
  6. Wat is het belangrijkste doel van het laten lopen via shared memory bij het transponeren van een grote matrix op een GPU (b[j][i] = a[i][j])?

Verwante termen

Shared memory Refresh CUDA Precharge Via GPU Numerieke apertuur (NA) 1T1C-cel Bitlijn CAS-latency

Naar de woordenlijst