GPU-programmeren
Welke uitspraak over bank conflicts van CUDA shared memory is juist?
- AEen probleem waarbij twee GPU's dezelfde bankrekening gebruiken
- BEen probleem waarbij de capaciteit van shared memory tekortschiet en het programma stopt
- 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.