extern “C” void caculate_kernel(unsigned char* pixels,unsigned char* gpudata,int lWidth, int lHeight, float fA, float fB)
{
unsigned int size = lWidth * lHeight * sizeof(unsigned char);
cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(8, 0, 0, 0,cudaChannelFormatKindUnsigned);
cudaArray* cu_array;
cudaMallocArray( &cu_array, &channelDesc, lWidth, lHeight);
cudaMemcpyToArray( cu_array, 0, 0, pixels, size, cudaMemcpyHostToDevice);
tex.addressMode[0] = cudaAddressModeWrap;
tex.addressMode[1] = cudaAddressModeWrap;
tex.filterMode = cudaFilterModeLinear;
tex.normalized = 0;
cudaBindTextureToArray( tex, cu_array, channelDesc);
dim3 threads(16,16);
dim3 blocks((lWidth+threads.x-1)/threads.x,(lHeight+threads.y-1)/threads.y);
calKernel<<<blocks,threads>>>(gpudata, lWidth, lHeight, fA, fB);
}运行结果h_odata里的所有数据都是0,不知道是哪里错了,应该是没绑定好,这个问题折腾我很久了,高手请帮帮忙看看
[ 本帖最后由 siheng303 于 2010-6-2 19:53 编辑 ]