Próbuję zsynchronizować moją procedurę cuda za pomocą funkcji cudaStreamAddCallback(), ale nie mogę jej zaimplementować, również dlatego, że dokumentacja nie jest jednoznaczna. CUDA-C-programowanie-przewodnik mówi, że zwrotna musi być zdefiniowany jako:Jak mogę użyć metody cudaStreamAddCallback() z metodą członka klasy?
void CUDART_CB MyCallback(void *data){}
i mówi o flagi takich jak cudaStreamCallbackBlocking, który musi być ustawiony; natomiast Cuda_Toolhit_Reference_Manual i cuda_runtime_api.h wymagające innego realizację callback:
void CUDART_CB MyCallback (cudaStream_t stream, cudaError_t status, void *userData){}
i wspomnieć, że flaga jest do wykorzystania w przyszłości i wymagają 0 jako argumentu. Ponadto wywołanie funkcji następujące:
cudaStreamAddCallback(GpuStream, MyCallback, &BufSwitchParams, 0);
i pracy przy użyciu VS 2010 próbuje skompilować dla 64bit dostaję komunikat: argument typu „void (__ stdcall CMyClass :: *) (strumień cudaStream_t, cudaError_t status, void * userData) "jest niekompatybilny z parametrem typu" cudaStreamCallback_t ".
Czy ktoś już zaimplementował tę funkcję i byłby w stanie pomóc mi wyjść z mojego dylematu, publikując tutaj krótki opis?
Możesz być zainteresowany odpowiednim [przykładowym kodem] (http://docs.nvidia.com/cuda/cuda- samples/index.html # simple-cuda-callbacks). –
Robert tnx dużo. Nie znalazłem tych przykładów podczas wyszukiwania w Google. Zbadam to jutro. – GregPhil