2010-01-25 11 views
5

क्या यह फ़ंक्शन कॉल (ओं), युक्त समांतर समानांतर लूप है या यह लूप के अधिक सुविधाजनक समांतरता है जो अंदर मूल संचालन कर रहा है।फंक्शन कॉल युक्त पैरालेलाइजिंग लूप

उदाहरण के लिए यह समानांतर निर्देशों को नीचे रखना उचित है?

main(){ 
.. 
#omp paralel .. 
for (i=0;i<100;i++){ 
a[i] = foo(&datatype , ...); 
... 
} 
.. 
} 

int foo(datatype *a,...){ 
//doing complex operations here 
//calling other functions etc. 
} 

आप रिचर्ड और Phkahler, कि टिप्पणियों मददगार थे विल धन्यवाद और मैं किताब rchrd लिए एक गहरी नजर का सुझाव दिया था होगा। लेकिन दिन के अंत से पहले, यह संभव है कि मैं मौजूदा सी कोड (वास्तव में एक बड़ा लूप जो प्रोग्राम के शीर्ष पर रहता है) को संभवतः ओपनएमपी के साथ समांतर बनाया जाए।

इस बिंदु पर मुझे लूप समांतर के कम से कम कुछ हिस्सों को बनाने के बारे में कुछ मदद चाहिए। चीजों को सरल बनाने के लिए, के बजाय पूरे पाश सामग्री मैं कैसे कर सकते हैं parellelezing का केवल इसे का एक हिस्सा काम समानांतर

जानकारी के
for(i to N){ 
    work1() --(serial) 
    work2() --(serial) 
    Work3() --(PARALLEL) 
    work4() --(serial) 
} 

//does it make sense adding critical sections except work3 

#omp parallel for private(Ptr) 
for(i to N){ 
#omp single 
{ 
    work1() --(serial) 
    work2() --(serial) 
} 
    Work3(Ptr) --(PARALLEL) 
#omp single 
{ 
    work4() --(serial) 
} 
} 
+1

बीटीडब्ल्यू- अगर कोई भी आपकी समस्या को हल करता है तो उत्तर स्वीकार करना न भूलें। आप इसके आगे हरे रंग की टिक चिह्नित करके एक जवाब स्वीकार कर सकते हैं। – Kos

उत्तर

1

तीन बिट्स में जाना जाने की जरूरत है:

  1. यह आदेश फर्क पड़ता है कि आप foo निष्पादित कर रहे हैं?
  2. foo() साझा स्थिति को प्रभावित करता है, और यदि ऐसा उचित लॉकिंग है?
  3. लूप को ओपनएमपी के बिना कितना समय लगता है?

आप कार्य है कि एक लंबा समय लगता है - कई सेकंड या उससे अधिक है - और यह स्वतंत्र भागों (कभी कभी रिफैक्टरिंग द्वारा, नौकरियों में विभाजित और संयोजन से पहले हर काम के लिए परिणाम को एकत्र करने पर जैसे) में तोड़ा जा सकता तो यह समानांतर करने की कोशिश करने लायक हो सकता है।

प्रोफ़ाइल!

0

इस तरह के सवालों के जवाब एमआईटी प्रेस बुक में, ओपनएमपी का उपयोग करके पाया जा सकता है, जो ओपनएमपी विनिर्देशों को विकसित करने वाले कुछ लोगों द्वारा लिखे गए थे।

ओपनएमपी विशेषज्ञों के साथ एक मंच सहित openmp.org वेबसाइट पर आप अधिक जानकारी प्राप्त कर सकते हैं। http://openmp.org/

संबंधित मुद्दे