मैं OpenMP साथ काम कर रहा हूँ एक अदिश पाश के लिए नेस्ट parallelize करने के लिए एक नेस्टेड parallelize कैसे करें:सही ढंग से छोरों
double P[N][N];
double x=0.0,y=0.0;
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
{
P[i][j]=someLongFunction(x,y);
y+=1;
}
x+=1;
}
इस पाश में महत्वपूर्ण बात यह है कि मैट्रिक्स पी दोनों अदिश में ही होना चाहिए और समानांतर संस्करणों:
मेरी संभव परीक्षणों सफल नहीं हुआ सभी ...
ठीक उत्तर के लिए धन्यवाद। क्या मैं आपसे एक और सवाल पूछ सकता हूं? क्या होगा यदि मैं आंतरिक लूप से पहले हर बार वाई = 0 रीसेट करना चाहता हूं? ओपनएमपी कार्यान्वयन कैसे बदलता है? – linello
फिर '(डबल) एन * i + j' से '(डबल) जे' बदलें। यहां कुंजी यह है कि मैंने लूप इंडेक्स के फ़ंक्शन के रूप में 'x' और 'y' के लिए अभिव्यक्तियां प्राप्त की हैं। यह आपको निर्भरताओं को तोड़ने देता है। – Mysticial
आपके उत्तरों के लिए बहुत धन्यवाद, उन्होंने मुझे स्पष्ट किया कि लूप को ओपनएमपी समांतरता के लिए तैयार करने के लिए कैसे डिसेन्ट करें। एक आखिरी सवाल, इस कोड के सीरियल और समानांतर संस्करण मुझे विभिन्न तत्वों का एक बहुत छोटा हिस्सा क्यों देते हैं? 'के लिए (int i = 0; i <एन; i ++) \t { \t \t #pragma आदेश दिया अनुसूची (गतिशील) के लिए omp समानांतर \t (; j
linello