क्या ओपनएमपी एक चर के अनुपात में कमी का समर्थन करता है जो एक सरणी का प्रतिनिधित्व करता है?क्या ओपनएम के साथ सरणी में कमी करना संभव है?
यह निम्नलिखित की तरह कुछ काम करेगा ...
float* a = (float*) calloc(4*sizeof(float));
omp_set_num_threads(13);
#pragma omp parallel reduction(+:a)
for(i=0;i<4;i++){
a[i] += 1; // Thread-local copy of a incremented by something interesting
}
// a now contains [13 13 13 13]
आदर्श रूप में, वहाँ के लिए एक omp समानांतर के लिए कुछ इसी तरह होगा, और यह समझ बनाने के लिए के लिए आप धागे का एक बड़ा पर्याप्त संख्या है, संचय बाइनरी पेड़ के माध्यम से होगा।
केवल फोर्टन – Anycorn
में हो सकता है कि आप थोड़ा और समझा सकें कि आप वास्तव में क्या करना चाहते हैं। सीरियल कोड प्रदान करने में मदद मिल सकती है। – FFox
थोड़ा और अधिक खोदना, ऐसा लगता है कि "केवल फोर्ट्रान में" जवाब है।मैंने लूप के बाहर स्थानीय प्रतियों की एक बड़ी श्रृंखला को आवंटित कर दिया, जिससे धागे लूप के भीतर अपनी प्रतियों में जमा हो जाते हैं, फिर लूप के बाद एक वैश्विक सरणी में जमा हो जाते हैं, फिर भी समानांतर क्षेत्र के अंदर, महत्वपूर्ण अनुभाग। –