मैं एक ट्यूटोरियल यहाँ स्थित के साथ अनुसरण कर रही हूं:ओपनसीएल - क्या कर्नेल के भीतर से किसी अन्य फ़ंक्शन को आमंत्रित करना संभव है?
__kernel void vector_add_gpu (__global const float* src_a,
__global const float* src_b,
__global float* res,
const int num)
{
/* get_global_id(0) returns the ID of the thread in execution.
As many threads are launched at the same time, executing the same kernel,
each one will receive a different ID, and consequently perform a different computation.*/
const int idx = get_global_id(0);
/* Now each work-item asks itself: "is my ID inside the vector's range?"
If the answer is YES, the work-item performs the corresponding computation*/
if (idx < num)
res[idx] = src_a[idx] + src_b[idx];
}
1) कहो: http://opencl.codeplex.com/wikipage?title=OpenCL%20Tutorials%20-%201
गिरी वे सूचीबद्ध किया है इस है, जो उत्पादन चर में दो नंबर और यह भंडार की राशि की गणना करता है उदाहरण के लिए कि ऑपरेशन किया गया ऑपरेशन एक सारांश से कहीं अधिक जटिल था - कुछ ऐसा जो अपने कार्य को वारंट करता है। आइए इसे कॉम्प्लेक्सऑप (इन 1, इन 2, आउट) कहते हैं। मैं इस फ़ंक्शन को कार्यान्वित करने के बारे में कैसे जाउंगा जैसे vector_add_gpu() कॉल कर सकते हैं और इसका उपयोग कर सकते हैं? क्या आप उदाहरण कोड दे सकते हैं?
2) अब चलिए चरम पर उदाहरण लें, और अब मैं एक सामान्य कार्य को कॉल करना चाहता हूं जो दो संख्याओं पर चलती है। मैं इसे कैसे सेट अप करूं ताकि कर्नेल को इस फ़ंक्शन में पॉइंटर पास किया जा सके और इसे आवश्यकतानुसार कॉल किया जा सके?
बस एक टिप्पणी। यह ओपनसीएल सीयूडीए नहीं है। आपको वर्कग्रुप आकार के गुणकों का उपयोग करने के लिए मजबूर नहीं किया जाता है। मैं अक्सर बकवास बदसूरत 'अगर (idx
DarkZeros