编译特定代码将我的纹理设为 NULL
一个非常奇怪的错误:如果我向我的项目添加一些特定的代码,我使用的任何纹理都只包含 0。即使我没有运行任何添加的代码。
这里的具体代码是 nVidia CUDA 示例 [1] 的内核,双三次纹理过滤示例,特别是 CatMulRom 内核。我已将其追溯到其中一个子功能。如果我在那里重置变量,一切都会恢复正常。这真的非常非常奇怪,我不知道它会是什么。添加和使用双三次内核不会产生任何问题。
以下是“修复”问题的更改:
__host__ __device__
float catrom_w1(float a)
{
a = 1; // Fix
return 1.0f + a*a*(-2.5f + 1.5f*a);
}
如果我重置变量,那么如果我不使用 CatMulRom,它就会起作用。如果我尝试使用它,纹理又会为零。有问题的纹理定义如下:
texture<uchar1, 2, cudaReadModeNormalizedFloat> tex;
我已经编辑掉了模板,希望它能解决问题,但它仍然存在。
[1] http://developer.download.nvidia.com /compute/cuda/sdk/website/samples.html
A very strange error: if I add some specific code to my project, any textures I use contain nothing but 0. Even when I'm not running any of the code that was added.
The specific code here is the kernels of an nVidia CUDA sample [1], the Bicubic Texture Filtering sample, in specific the CatMulRom kernel. I've traced it down to one of the subfunctions. If I reset a variable there, everything returns to normal. It's really, really strange and I have no idea anymore what it could be. Adding and using the bicubic kernel causes no problems.
Here's the change that "fixes" the problem:
__host__ __device__
float catrom_w1(float a)
{
a = 1; // Fix
return 1.0f + a*a*(-2.5f + 1.5f*a);
}
If I reset the variable, it works if I'm not using CatMulRom. If I do try to use it the textures are zero again. The textures in question are defined as follows:
texture<uchar1, 2, cudaReadModeNormalizedFloat> tex;
I've edited away the template, hoping it would solve the problem, but it persists.
[1] http://developer.download.nvidia.com/compute/cuda/sdk/website/samples.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你已经耗尽了你的筹码。
You've busted your stack.