Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CUDA纹理和夹紧_C++_Arrays_Cuda_Textures - Fatal编程技术网

C++ CUDA纹理和夹紧

C++ CUDA纹理和夹紧,c++,arrays,cuda,textures,C++,Arrays,Cuda,Textures,有没有办法将超出范围的纹理地址钳制到某个值?在我的例子中,我希望将它们设置为一个简单的零,但是我需要的地址模式似乎不存在 谢谢 编辑:知道cudaAddressModeBorder设置的作用吗?我不认为有办法指定钳制,但你可以做显而易见的事情,在边缘周围添加一个1像素的黑色(零)边框,并将寻址偏移1。它不应该有更多的数据,它会让你免费夹紧 如果您有一个最大尺寸的2D纹理(对于CUDA 2.x,它是64k x 64k),每像素16字节(最坏情况)然后,对于1像素边框,您只看到4 MB的额外数据,对

有没有办法将超出范围的纹理地址钳制到某个值?在我的例子中,我希望将它们设置为一个简单的零,但是我需要的地址模式似乎不存在

谢谢


编辑:知道cudaAddressModeBorder设置的作用吗?

我不认为有办法指定钳制,但你可以做显而易见的事情,在边缘周围添加一个1像素的黑色(零)边框,并将寻址偏移1。它不应该有更多的数据,它会让你免费夹紧


如果您有一个最大尺寸的2D纹理(对于CUDA 2.x,它是64k x 64k),每像素16字节(最坏情况)然后,对于1像素边框,您只看到4 MB的额外数据,对于PCIe x16卡,复制到该卡大约需要500微秒——即使在最坏的情况下也几乎没有任何数据。

当使用曲面函数访问纹理时,您可以将边界模式设置为返回零。我现在不能测试它,因为你需要一个计算能力2的设备,但是你可以检查英伟达CUDA C程序指南(版本3.2),B.9P.114.

的引用。 我们还可以钳制边界并捕获它(使内核失败),这是使用表面内存时的默认情况


问候

曲面不支持插值,这是使用纹理的一个重要原因。如果你不需要插值,这是个好主意。事实上,在这种情况下,我不需要插值。伟大的谢谢你的回复。