Tôi đang cố gắng đồng bộ hóa cuda thường trình của tôi bằng cách sử dụng cudaStreamAddCallback(), nhưng tôi không thể thực hiện nó, cũng vì tài liệu không rõ ràng. The-C-lập trình hướng CUDA nói rằng callback phải được định nghĩa là:làm thế nào tôi có thể sử dụng cudaStreamAddCallback() với một phương pháp thành viên lớp học?
void CUDART_CB MyCallback(void *data){}
và đang nói về cờ như cudaStreamCallbackBlocking mà cần phải được thiết lập; trong khi Cuda_Toolhit_Reference_Manual và cuda_runtime_api.h đòi hỏi một thực hiện khác của callback:
void CUDART_CB MyCallback (cudaStream_t stream, cudaError_t status, void *userData){}
và nhắc rằng lá cờ là để sử dụng trong tương lai và yêu cầu 0 như là đối số. Hơn nữa, gọi hàm như sau:
cudaStreamAddCallback(GpuStream, MyCallback, &BufSwitchParams, 0);
và làm việc sử dụng VS 2010 cố gắng để biên dịch cho 64bit Tôi nhận được thông báo: đối số kiểu “void (__ stdcall CMyClass :: *) (cudaStream_t suối, cudaError_t status, void * userData) ”không tương thích với tham số kiểu" cudaStreamCallback_t ".
Có ai đó đã triển khai chức năng này và có thể giúp tôi thoát khỏi tình huống khó xử của tôi, trong khi đăng một đoạn trích ở đây không?
Bạn có thể quan tâm đến [mẫu mã] có liên quan (http://docs.nvidia.com/cuda/cuda- samples/index.html # simple-cuda-callbacks). –
Robert tnx rất nhiều. Tôi không tìm thấy ví dụ này trong khi tìm kiếm google của tôi. Tôi sẽ điều tra nó vào ngày mai. – GregPhil