最初のエラー: セグメンテーション違反 (強調表示された 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] を起動することです。