我们认为纹理记忆是全局记忆的一部分,这是真的吗?如果是这样,你能分配多少钱? (间接地,有多少?)
并且所有多处理器都可以同时从纹理内存中读取吗?
答案 0 :(得分:3)
纹理数据包含在CUDA数组中,而CUDA数组则从全局内存中分配;所以无论多少全局内存仍然是免费的(您可以调用cuMemGetInfo()来查看剩余的可用内存量)可用于分配为纹理。
无法知道给定CUDA阵列消耗了多少内存 - 显然它必须至少为Width * Height * Depth * sizeof(Texel),但可能需要更多,因为驱动程序必须做一个符合硬件对齐要求的分配。
答案 1 :(得分:0)
可以在NVIDIA CUDA website的CUDA编程指南中找到不同计算功能的纹理限制。
对于给定设备,可以使用cudaGetDeviceProperties函数查询设备功能,包括纹理限制。
分配取决于可用的全局内存量和内存分段,因此没有简单的方法来判断给定的分配是否成功,尤其是在处理大型纹理时。