मैं cudaStreamAddCallback() का उपयोग करके अपने cuda routine को सिंक्रनाइज़ करने का प्रयास कर रहा हूं, लेकिन मैं इसे कार्यान्वित नहीं कर सकता, क्योंकि दस्तावेज़ भी स्पष्ट नहीं है। CUDA-सी-प्रोग्रामिंग गाइड का कहना है कॉलबैक के रूप में परिभाषित किया जाना है कि:मैं कक्षा सदस्य विधि के साथ cudaStreamAddCallback() का उपयोग कैसे कर सकता हूं?
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 बिट मुझे संदेश मिल रहा के लिए संकलित करने के लिए कोशिश कर काम कर रहे: प्रकार की "शून्य तर्क (__ stdcall CMyClass :: *) (cudaStream_t धारा, cudaError_t स्थिति, शून्य * उपयोगकर्ता डेटा) "प्रकार" पैरामीटर के साथ असंगत है "cudaStreamCallback_t"।
क्या कोई इस फ़ंक्शन को पहले से ही कार्यान्वित कर चुका है और यहां एक स्निपेट पोस्ट करते समय मुझे मेरी दुविधा से बाहर निकलने में सक्षम होगा?
आप प्रासंगिक [नमूना कोड] में रुचि (हो सकता है http://docs.nvidia.com/cuda/cuda-: आप आवरण समारोह है कि विधि फोन करेगा लागू करना चाहिए आप वर्ग विधि का उपयोग करना चाहते हैं नमूने/index.html # सरल-CUDA-कॉलबैक)। –
रॉबर्ट टीएनएक्स बहुत कुछ। मुझे मेरी Google खोज के दौरान यह उदाहरण नहीं मिला। मैं कल इसकी जांच करने जा रहा हूं। – GregPhil