最近私はcudaを試していますが、次のcudaカーネルに問題がありました。このcudaカーネル内のローカル変数?
__global__ void addKernel(float *c, const float *a, const float *b, int nsize)
{
int blockID = blockIdx.x + blockIdx.y*gridDim.x;
int i = blockID*blockDim.x+threadIdx.x;
if (i < nsize){
c[i] = a[i] + b[i];
}
float k = c[i];
}`
このカーネルは、単純なベクターの追加に使用されます。最後の文float k = c[i];
がなければ正常に動作します。しかし、私はこのステートメントを追加した後、コードを実行するとunspecified launch failure
エラーが表示されます。誰にでもこのカーネルの何が問題なのか教えてくれますか?
ありがとうございます!私は間違いを今理解しています。 – andy90
例外として、デバッグスイッチ( '-G')でコードをコンパイルしている場合は、この特定の場合のこのエラーは/それ自身を明示すべきです。リリースモードでは、コンパイラはカーネル内の最後のステートメントがグローバルステートに影響を与えないことを認識し、最適化します。それにもかかわらず、コードは書かれたとおりに破られます。 –
はい、そうです。私はそれを確認しました。@ Robert – andy90