kernel无法运行

[indent]



__global__ void holoKernel(float *d_xx, float *d_yy, float *d_zz, int N,float *d_x,float *d_y, float *d_Result)
{
// Each thread computes a single element in holography
int row = blockIdx.y*blockDim.y + threadIdx.y;
int col = blockIdx.x*blockDim.x + threadIdx.x;
float sum = 0.f;
float dis = 0.f; //点距离全息图上当前点的距离
for (int n = 0; n < N; ++n)
{
  dis = (d_xx[row*N+col] - d_x[row*N+col])*(d_xx[row*N+col] - d_x[row*N+col]) + (d_yy[row*N+col] - d_y[row*N+col] )*(d_yy[row*N+col] - d_y[row*N+col] ) + d_zz[row*N+col]*d_zz[row*N+col] ;
  sum = sum + 1.0/dis;
}
d_Result[row*512+col] = sum;
}

现在的问题是d_Result里传回host之后没有值。之前Memcpy 之后都用checkCUDAError(“memcpy”);检测过,没发现问题。
但执行kernel后checkCUDAError(“kernel invocation”); 就会报错。invalid configuration argument

是不是kernel写得不正确?
[/indent]

您看看是不是d_Result数组的问题,还有就是dis有没有可能等于零!

已经解决了。。。之前设置block里thread数超过1024了。。。

谢谢了啊!!!
我Google了下invalid configuration argument,第一条就有解释。。。百度搞学术还是有点吃力。

不客气,我也是刚刚起步,呵呵……共同学习!

恭喜LZ解决问题,以及度娘还是不靠谱的,建议谷哥。

祝您好运~

以及,您可以在CUDA Toolkit Reference Manual(CUDA API Reference Manual)里面找到CUDA Error Types的对应解释。

5.0版本的手册中在5.30.33章节。

您可以参阅每个error类型后面的解释。
以及google搜索一下也是不错的习惯。

祝您好运~

谢谢版主了!版主真是热心肠啊,赞!

不客气的,欢迎您常来论坛!

祝您好运~