CUDA纹理内存程序不工作

CUDA纹理内存程序不工作,cuda,Cuda,我正在通过简单的例子学习使用CUDA中的纹理。我尝试了下面的示例,但它不起作用。它显示的值为0 #include "cuPrintf.cu" texture<int,1,cudaReadModeElementType> ref; __global__ void kernel(int *a) { int b=tex1D(ref,0); cuPrintf("value is %d",b); } int main() { int *a

我正在通过简单的例子学习使用CUDA中的纹理。我尝试了下面的示例,但它不起作用。它显示的值为0

#include "cuPrintf.cu"
texture<int,1,cudaReadModeElementType> ref;
__global__ void kernel(int *a)  
{  
    int b=tex1D(ref,0);  
    cuPrintf("value is %d",b);  

}  

int main()  
{  
    int *a;  
    cudaMalloc((void**)&a,32000*sizeof(int));  
    cudaMemset(a,1,32000*sizeof(int));  
    cudaChannelFormatDesc bit = cudaCreateChannelDesc<int>();  
    cudaBindTexture(0,ref,a,bit,32000*sizeof(int)); 
    kernel<<<1,1>>>(a);  
}
#包括“cuPrintf.cu”
纹理参考;
__全局无效内核(int*a)
{  
intb=tex1D(参考文献,0);
cuPrintf(“值为%d”,b);
}  
int main()
{  
int*a;
Cudamaloc((void**)和a,32000*sizeof(int));
Cudamenset(a,132000*sizeof(int));
CUDAChannel FormatDesc位=cudaCreateChannelDesc();
cudaBindTexture(0,参考,a,位,32000*sizeof(int));
内核(a);
}

您已经使用
cudamaloc
功能分配了内存。如果将纹理绑定到使用
cudamaloc
分配的内存,则可以使用内核中的函数
tex1Dfetch()
访问纹理。使用
tex1D
将返回零


但是,如果将纹理绑定到由
cudamallocitch
cudaArray
分配的内存,则可以使用内核中的
tex1D
tex2D
函数访问它。

此代码不完整,并且根本不包含API错误检查。发帖时请再努力一点。