【发布时间】:2012-02-14 06:08:22
【问题描述】:
我们认为纹理内存是全局内存的一部分,这是真的吗?如果是这样,你可以分配多少? (间接地,有多少?)
所有多处理器都可以同时从纹理内存中读取是真的吗?
【问题讨论】:
标签: memory cuda textures gpgpu nvidia
我们认为纹理内存是全局内存的一部分,这是真的吗?如果是这样,你可以分配多少? (间接地,有多少?)
所有多处理器都可以同时从纹理内存中读取是真的吗?
【问题讨论】:
标签: memory cuda textures gpgpu nvidia
纹理数据包含在CUDA数组中,CUDA数组在全局内存之外分配;因此,无论多少全局内存仍然可用(您可以调用 cuMemGetInfo() 来查看剩余多少可用内存)都可以作为纹理分配。
不可能知道给定 CUDA 数组消耗了多少内存 - 显然它必须至少为 Width*Height*Depth*sizeof(Texel),但它可能需要更多,因为驱动程序必须进行分配符合硬件的对齐要求。
【讨论】:
可以在NVIDIA CUDA website 上的 CUDA 编程指南中找到不同计算能力的纹理限制。
对于给定的设备,可以使用cudaGetDeviceProperties 函数查询设备功能,包括纹理限制。
分配取决于可用全局内存的数量和内存的分段,因此没有简单的方法来判断给定的分配是否会成功,尤其是在处理大型纹理时。
【讨论】: