首先是错误: 分段错误(在突出显示的 cudaMalloc 行,如果我创建 > 大约 61432)
unsigned int xarray[a];
unsigned int *dev_a;
int result[33*a];
int *dev_result;
**cudaMalloc((void **)&dev_a,a * sizeof(unsigned int));**
cudaMemcpy(dev_a,xarray,a*sizeof(int),cudaMemcpyHostToDevice);
kernel<<<a,66>>>(dev_a,dev_result);
cudaMemcpy(result,dev_result,33*a*sizeof(int),cudaMemcpyDeviceToHost);
我在上面提到“大约”的原因是因为有时它在 a = 61432 时有效,有时则无效。我无法理解为什么。
此外,这仅适用于 1D 网格块的启动。我的意图是启动一个 3D 网格 [a*a*a]。