Beginner questions on memory spaces


I went through some tutorials that described CUDA and different memory spaces, but when I tried to retrieve the related properties from my graphics board (G210M) I got results that I don’t understand.

So I have global memory of 536084480: what I expected.

Shared memory per block: 16,384. I have read that I can have a maximum of 65,535 blocks. 1GB of on-chip memory??? Or how much of shared memory is actually available (16K in total?).

MaxTexture2D and MaxTexture3D: here I expected values that are not greater than the value for the global memory (assuming I have 8 Bit data and that we are talking about uncompressed textures). What I got for the maximum dimension were 65,536 * 32768 (2D) and 2048 * 2048 * 2048 (3D), both are higher than what I expected. Are these values just theoretical values about what I can address at a maximum (as opposed to actually having that memory available?).

Any help would be appreciated.


That means you can schedule a maximum of 65535 blocks, where each of them has access to 16k shared mem, so that does not mean you have 1GB of on-chip memory (the term ‘shared’ sort of implies that ;) ).

These values tell you maximum texture size along each dimension. You are right that your memory will not allow you to create 2k x 2k x 2k 3d texture, but it allows you to create 1 x 1 x 4024 3d texture, but it will not work since max dimention of 3d texture along Z coordinate for your card is 2048.

Ah, thanks! I thought “shared” in this context means shared by all the threads of an individual block, hence the confusion. Thanks for the clarifications.