Texture Memory !

Hi,

I would like to get some information on texture memory. This is what I know about it:

1.) It is an off-chip cache memory
2.) There is one cache memory for every TPC (Texture Processing Cluster).

Here is what I want to know:

1.) What is the capacity of a texture memory (like for example shared mem is 16KB per SM)
2.) When we bind an array to a texture, does it mean that the array resided in global memory till then and it is copied to texture memory ?

Texture memory is not a separate physical entity. Cuda arrays occupy the same memory as global memory. No copying is done when binding an array (or global memory) to a texture reference. The memory layout of an array is different than the linear ordering of global memory.

With regards to question 1 - are you asking what the texture cache sizes are?

I think you might have misunderstood a few things. There is no dedicated “texture memory”. Textures are stored in global memory. There is an on die read cache for each TPC, which is 24kb L1 and 32 kb L2 on the GT200, according to this.

Yes, I meant about the texture cache sizes.

According to the above two statements and the article link provided by ‘avidday’, I think the following is what I understood:

Texture Memory is a cache that is used while accessing the data from global memory. The reason behind using this cache is for efficient global memory access (since global memory itself is not cached). Binding is a procedure by which the 2D arrays residing in global memory are accessed via texture cache memory, because of the simple reason that transfer via a cache is more efficient than transfer without a cache. And this binding is done to texture memory because it is a multi-dimensional memory access unlike the linear global memory access.

Also, according to the following diagram, it may be assumed that L1 and/or L2 caches might be used when an array is accessed from global memory via texture (after the binding procedure is done).

Please,

1.) Let me know how can I quantitatively calculate the bandwidth/speed increase that I might achieve when I use texture memory.

2.) Correct me and add anything if I am wrong or missed something.