cudaGetTextureReference

cudaGetTextureReference

我正在开发一个小型cuda lib,并被这个烦人的tex ref问题所困扰。

这是Cuda C编程指南第43〜44页的示例代码:

texture<float, cudaTextureType2D,cudaReadModeElementType> texRef;
textureReference* texRefPtr;
cudaGetTextureReference(&texRefPtr, "texRef");
cudaChannelFormatDesc channelDesc;
cudaGetChannelDesc(&channelDesc, cuArray);
cudaBindTextureToArray(texRef, cuArray, &channelDesc);

当我执行它时,cudaGetTextureReference(...)行返回错误代码cudaErrorInvalidTexture
我在互联网上找不到许多其他有关cudaGetTextureReference的示例,其中大多数都遵循与上述示例代码完全相同的过程。

沮丧的是,我后来尝试了高级API:
texture<float, cudaTextureType2D,cudaReadModeElementType> texRef;
cudaBindTextureToArray(texRef, cuArray);

同样的问题。
如果从内核中的那个纹理读取,我得到的都是零值。

我完整的玩具测试代码,100%的重现率:(win7,cuda 5.0)
texture<float, cudaTextureType2D, cudaReadModeElementType> texRef;

int main ()
{
    const textureReference *tref = NULL;
    checkSuccess( cudaGetTextureReference( &tref, "texRef" ) );
    pauseConsole();
    return 0;
}

对于这个问题的任何见解将不胜感激。
谢谢

最佳答案



CUDA Toolkit Reference Manual 5.0中声明,第5.20.2.8节/注。

而是执行以下操作:

cudaGetTextureReference( &tref, &texRef );

07-24 09:48