Sto provando a sincronizzare la mia routine cuda usando cudaStreamAddCallback(), ma non riesco a implementarlo, anche perché la documentazione non è univoca. CUDA-C-programmazione-guida dice che la richiamata deve essere definito come:come posso utilizzare cudaStreamAddCallback() con un metodo membro della classe?
void CUDART_CB MyCallback(void *data){}
e sta parlando di bandiere come il cudaStreamCallbackBlocking che deve essere impostato; mentre la Cuda_Toolhit_Reference_Manual e cuda_runtime_api.h richiede un'altra attuazione della richiamata:
void CUDART_CB MyCallback (cudaStream_t stream, cudaError_t status, void *userData){}
e ricordare che il flag è per uso futuro e richiedono uno 0 come argomento. Inoltre, chiamando la funzione come segue:
cudaStreamAddCallback(GpuStream, MyCallback, &BufSwitchParams, 0);
e lavorare utilizzando VS 2010 cercando di compilare per 64bit sto ottenendo il messaggio: argomento di tipo “void (__ stdcall CMyClass :: *) (flusso cudaStream_t, cudaError_t status, void * userData) "non è compatibile con il parametro di tipo" cudaStreamCallback_t ".
Qualcuno ha già implementato questa funzione e sarebbe in grado di aiutarmi a uscire dal mio dilemma, pubblicando uno snippet qui?
Potresti essere interessato al corrispondente [codice di esempio] (http://docs.nvidia.com/cuda/cuda- campioni/index.html # semplici-CUDA callback). –
Robert tnx molto. Non ho trovato questo esempio durante la mia ricerca su google. Ho intenzione di indagare domani. – GregPhil