मैं 1000000 x 100 के एक दो आयामी वैश्विक काम आकार और 1 x 100.ओपनसीएल में स्थानीय मेमोरी कैसे घोषित करें?
__kernel void myKernel(
const int length,
const int height,
and a bunch of other parameters) {
//declare some local arrays to be shared by all 100 work item in this group
__local float LP [length];
__local float LT [height];
__local int bitErrors = 0;
__local bool failed = false;
//here come my actual computations which utilize the space in LP and LT
}
हालांकि यह संकलित करने के लिए मना कर दिया की एक स्थानीय काम के आकार के साथ नीचे OpenCL गिरी चल रहा हूँ, मापदंडों के बाद से length
और height
संकलन समय पर ज्ञात नहीं हैं। लेकिन यह बिल्कुल सही नहीं है कि यह सही तरीके से कैसे करें। क्या मुझे मेमॉलोक के साथ पॉइंटर्स का उपयोग करना चाहिए? इसे इस तरह से कैसे संभालें कि मेमोरी केवल पूरे वर्क ग्रुप के लिए आवंटित की जाती है और एक बार प्रति कार्य आइटम नहीं?
सभी है कि मैं जरूरत तैरता के 2 सरणियों, 1 पूर्णांक और 1 बूलियन कि पूरे कार्यसमूह (ताकि सभी 100 काम आइटम) के बीच साझा कर रहे हैं।
kernel void myKernel(const int length, const int height, local float* LP,
local float* LT, a bunch of other parameters)
फिर आप एक value
के साथ kernelargument सेट: लेकिन मैं किसी भी विधि का यह सही है ...
http://stackoverflow.com/questions/2541929/how-do-i-use-local-memory-in-opencl –