surf3Dwrite与CUDA 5

surf3Dwrite与CUDA 5,cuda,Cuda,我正试图在CUDA5中编译一个使用表面对象的内核。然而,这似乎并不像手册中所描述的那样有效 __global__ void kernel_reset(cudaSurfaceObject_t surf) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; int z = blockIdx.z * blockDim.z + threadI

我正试图在CUDA5中编译一个使用表面对象的内核。然而,这似乎并不像手册中所描述的那样有效

__global__ void kernel_reset(cudaSurfaceObject_t surf)
{
    int x = blockIdx.x * blockDim.x + threadIdx.x;
    int y = blockIdx.y * blockDim.y + threadIdx.y;
    int z = blockIdx.z * blockDim.z + threadIdx.z;
    surf3Dwrite(0u, surf, x * sizeof(unsigned int), y, z, cudaBoundaryModeTrap);
}
无法通过以下方式编译:

error : no instance of overloaded function "surf3Dwrite" matches the argument list
我想要的重载列在surface_indirect_functions.h中,如下所示:

static __forceinline__ __device__ void surf3Dwrite(unsigned int data, cudaSurfaceObject_t surfObject, int x, int y, int z, cudaSurfaceBoundaryMode boundaryMode = cudaBoundaryModeTrap)
有人能告诉我我做错了什么吗


谢谢

我发现了这个问题的原因

代码还可以-问题在于编译器参数:由于纹理对象需要2.0或更高的计算能力,我不得不将NVCC编译器设置从“compute_10,sm_10”更改为“compute_20,sm_20”。这解决了问题


谢谢。

我发现了这个问题的原因

代码还可以-问题在于编译器参数:由于纹理对象需要2.0或更高的计算能力,我不得不将NVCC编译器设置从“compute_10,sm_10”更改为“compute_20,sm_20”。这解决了问题


谢谢。

简单的问题:你们都包括正确的吗?我发现了这个问题的原因。代码正常-问题出在编译器参数中。由于纹理对象需要2.0或更高的计算能力,我不得不将NVCC编译器设置从“compute_10,sm_10”更改为“compute_20,sm_20”。这解决了问题。感谢您回答您的问题,您可以关闭它:)@TobySharp请发布您的答案并接受它(可能需要等待一天才能接受您自己的答案)。简单问题:您是否都包括正确的答案?我发现了此问题的原因。代码正常-问题出在编译器参数中。由于纹理对象需要2.0或更高的计算能力,我不得不将NVCC编译器设置从“compute_10,sm_10”更改为“compute_20,sm_20”。这解决了问题。谢谢你回答你的问题,你可以关闭它:)@TobySharp请发布你的答案并接受它(可能需要等待一天才能接受你自己的答案)。