关于纹理存储器的容量问题

书上有说,纹理存储器不是一块专门的存储器,而是牵涉到显存、两级纹理缓存、纹理拾取单元的纹理流水线。纹理存储器是从global memory分配的一部分显存,那其容量是固定的(2的27次方?)?还是说根据输入数据量的大小而动态分配?如果是固定的,那其容量大小应该是多少,如何可以查询。如果是动态分配的,那它最大能分配多大的显存?
如果输入的数据超出了纹理的最大容量,那多余的输入数据会被怎么处理?
还有就是surface memory除了能写以外,其它的是不是跟texture memory一样的性质?谢谢:)

关注。surface memory是什么…

1, 纹理缓存是显存上的空间,大小和显存一致,每个sm中有12kb的纹理cache,缓存丢失的话就读取global。
2,texture mem一旦加载到kernel中就不能写,surface mem可以写。其它性质和texture类似。

谢谢:),还有一个问题想请教,cuda数组相对于线性内存的纹理功能的有哪些优势,仅仅是因为cuda数组的纹理特殊功能多吗?还是说读取速度上有优势?:slight_smile:

cuda数组没用过,但是感觉你说的可能对吧,cuda数组重点可能是纹理的特殊功能,比如随机性和插值。

谢谢你的回答:)

纹理存储物理上就是显存。所以也是通过cudaMalloc等来动态分配的。但纹理的大小有一个限制,具体数值可以看编程指南的附录F。

Surface memory的理解是正确的。