CUDA の機能をテストするための単純なカーネルを作成しました__syncthreads
。カーネルでは、更新された値が他のスレッドに表示されない場合、各スレッドから印刷することができました。理想的には、Not visible to me
エラー メッセージを出力するスレッドはありませんが、一部のスレッドはこのメッセージを出力してしまいます。これがカーネルです。
__device__ int a=0;
__global__ void kernel()
{
isItOK=false;
if(threadIdx.x==0 && blockIdx.x==0)
{
atomicAdd(&a,1);
__threadfence();
}
__syncthreads();
if(atomicAdd(&a,0)==0)
{
cuPrintf("Not Visible to me\n");
}
}
int main()
{
int *a;
cudaPrintfInit();
kernel<<<16,16>>>();
cudaPrintfDisplay(stdout,true);
cudaPrintfEnd();
}
この非常に単純なテスト プログラムで私を助けてください。設定するコンパイラ フラグが必要ですか。