Memory 纹理存储空间
当我将数组绑定到CUDA中的纹理时Memory 纹理存储空间,memory,cuda,hierarchy,texture-mapping,Memory,Cuda,Hierarchy,Texture Mapping,当我将数组绑定到CUDA中的纹理时 数组是否复制到纹理空间?或者 该数组引用是否作为纹理 如果答案是1.,那么我可以绑定一个纹理并安全地从纹理内存空间提取数据,同时将结果写入数组,数组在全局内存中分配 如果答案是2,那么纹理内存是一个全局内存空间,在这里缓存数据并从空间上获取数据 我想知道这个话题,因为我看到了一些与这个话题相关的问题,我现在还不清楚答案 提前感谢。答案是第二个选项,但从那里事情会变得更复杂一些。没有“纹理内存”这类东西,只有通过专用硬件访问的全局内存,包括GPU读缓存(根据卡的
提前感谢。答案是第二个选项,但从那里事情会变得更复杂一些。没有“纹理内存”这类东西,只有通过专用硬件访问的全局内存,包括GPU读缓存(根据卡的不同,每MP 6-8kb,见Cuda编程指南附录F中的表F-2)和许多硬件加速过滤/插值操作。有两种方法可以在CUDA中使用纹理硬件:
您可能会发现值得一读的GT200体系结构概述,以更好地了解实际体系结构如何实现API公开的内存层次结构。惊人的答案:)我想知道的是未记录和传闻;)因此,如果我写入原始数组并从绑定的纹理中获取数据,行为是未定义的,对吗?。谢谢。在CUDA中,纹理和数组是不透明的只读对象。不允许写入(甚至不能保证不同硬件之间的内部纹理布局相同)。如果您有一张费米卡,并且正在使用CUDA 3.2或更高版本,则可以使用曲面。AFIAK提供对“纹理”的读取和写入,尽管目前没有过滤支持。在内核调用中,纹理缓存不保持与底层全局内存存储的一致性,请参阅编程指南第3.2.10.4节。使用过滤的2D纹理不必绑定到不透明cudaArray,也可以绑定到使用cudaMallocPitch()分配的基音线性内存。