CUDA纹理内存程序不工作
我正在通过简单的例子学习使用CUDA中的纹理。我尝试了下面的示例,但它不起作用。它显示的值为0CUDA纹理内存程序不工作,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
#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错误检查。发帖时请再努力一点。