I’d like clarification on the GPU memory. The document I have is confusing and appears contradictory.
Global memory in the GPU is DRAM based or SRAM based?
Shared memory is DRAM or SRAM?
Local memory is DRAM or SRAM?
Where does ‘constant’ memory reside? (Grid, block, or thread level?)
Is ‘constant’ memory DRAM or SRAM?
‘Global’ memory is DRAM. Since ‘local’ and ‘constant’ memory are just different addressing modes for global memory, they are DRAM as well. All on-chip memory (‘shared’ memory, registers, and caches) most likely is SRAM, although I’m not aware of that being documented.
What does “on-chip” mean? Global memory is in the GPU, so it would be on-chip, no?
According to the above image, local, register, and shared memory are all in a block. Shared memory is common to the block. register & local mem are common to the threads. So, is local, register and shared SRAM based? (Local is not global as was stated above.)
It looks like global, constant and texture memory are all DRAM memory space. i.e. The same memory, just labeled differently?
Is the image correct?
Global memory is actually physically located in chips surrounding the GPU on the circuit board. See this picture of a GTX 580 with the heatsink removed:
The silver chip labeled “GTX 580” is the actual GPU chip, and the small black chips surrounding it in a U-pattern are the DRAM chips.
Global, local, constant and texture memory data are all physically located in those DRAM chips. The only reason these “types” of memory are distinguished in the CUDA documentation is because the data is laid out and cached in different ways depending on whether the address you are accessing is in the global, local, constant, or texture memory spaces.
Shared memory and registers are definitely on the GPU itself, and therefore probably SRAM based (as are the various caches).