cudaStreamAddCallback() を使用して cuda ルーチンを同期しようとしていますが、ドキュメントが明確ではないため、実装できません。cuda-C-programming-guide によると、コールバックは次のように定義する必要があります。
void CUDART_CB MyCallback(void *data){}
設定する必要がある cudaStreamCallbackBlocking のようなフラグについて話しています。Cuda_Toolhit_Reference_Manual と cuda_runtime_api.h はコールバックの別の実装を必要とします:
void CUDART_CB MyCallback (cudaStream_t stream, cudaError_t status, void *userData){}
フラグは将来使用するためのものであり、引数として 0 が必要であることに言及します。さらに、次のように関数を呼び出します。
cudaStreamAddCallback(GpuStream, MyCallback, &BufSwitchParams, 0);
VS 2010 を使用して 64 ビット用にコンパイルしようとすると、次のメッセージが表示されます: タイプ「void(__stdcall CMyClass::*)(cudaStream_t stream, cudaError_t status, void *userData)」の引数は、タイプ「cudaStreamCallback_t」のパラメーターと互換性がありません.
誰かがすでにこの機能を実装していて、ここにスニペットを投稿している間、私のジレンマから私を助けることができるでしょうか?