Surface Objects を使用する CUDA 5 でカーネルをコンパイルしようとしています。ただし、これはマニュアルに記載されているとおりには機能しないようです。
__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)
ここで私が間違っていることを誰かに教えてもらえますか?
ありがとう。