原因1:cudaBindTexture2D 或 cudaBindTextureToArray的参数有误
cudaError_t CUDARTAPI cudaBindTexture2D(size_t *offset,
const struct textureReference *texref,
const void *devPtr, const struct cudaChannelFormatDesc *desc,
size_t width, size_t height, size_t pitch);
// ::cudaBindTexture2D(size_t*, const struct texture< T, dim, readMode>&, const void*, const struct cudaChannelFormatDesc&, size_t, size_t, size_t) "cudaBindTexture2D (C++ API)",
cudaError_t CUDARTAPI cudaBindTextureToArray(const struct textureReference *texref,
cudaArray_const_t array, const struct cudaChannelFormatDesc *desc);
// ::cudaBindTextureToArray(const struct textureReference*, cudaArray_const_t, const struct cudaChannelFormatDesc*) "cudaBindTextureToArray (C API)"
// ::cudaBindTextureToArray(const struct texture< T, dim, readMode>&, cudaArray_const_t, const struct cudaChannelFormatDesc&) "cudaBindTextureToArray (C++ API)",
根据注释,C++ API的const struct cudaChannelFormatDesc *desc 不能传指针,要传引用
原因2:cudaTextureObject_t必须通过参数的形式传入kernel,不能以全局变量的形式在kernel中使用