2011-06-15 13 views
45
#pragma omp parallel 
{ 
    int x; // private to each thread ? 
} 

#pragma omp parallel for 
for (int i = 0; i < 1000; ++i) 
{ 
    int x; // private to each thread ? 
} 

धन्यवाद!ओपनएमपी: स्थानीय चर स्वचालित रूप से निजी हैं?

पीएस यदि स्थानीय चर स्वचालित रूप से निजी होते हैं, तो निजी खंड का उपयोग करने का क्या मतलब है?

+4

हां, वे स्वचालित रूप से निजी हैं – Eamorr

उत्तर

4

समांतर क्षेत्र के भीतर डेटा प्रत्येक धागे के लिए निजी है।

कृपया http://en.wikipedia.org/wiki/OpenMP#Data_sharing_attribute_clauses [डेटा साझा विशेषता खंड] उल्लेख

+1

मुझे लगता है कि समानांतर क्षेत्र के बाहर घोषित चर के लिए ओपनएमपी क्लॉज लागू होते हैं। मेरा प्रश्न स्थानीय चर से संबंधित है। – pic11

37

निजी खंड के लिए कारण तो यह है कि you don't have to change your code है।

एक ही रास्ता निजी कारण

int i,j; 
#pragma omp parallel for private(j) 
for(i = 0; i < n; i++) { 
    for(j = 0; j < n; j++) { 
     //do something 
    } 
} 

कोड बदलने के लिए है बिना निम्नलिखित कोड parallelize करने। इस तरह उदाहरण के लिए:

int i 
#pragma omp parallel for 
for(i = 0; i < n; i++) { 
    int j; 
    for(j = 0; j < n; j++) { 
     //do something 
    } 
} 

पूरी तरह से वैध C89/C90 कोड लेकिन OpenMP के लक्ष्यों में से एक को छोड़कर pragma बयान जो सक्षम या संकलन समय पर निष्क्रिय किया जा सकता जोड़ने के लिए अपने कोड बदलने की जरूरत नहीं है यही कारण है कि।

+3

यह प्रश्न का वास्तविक उत्तर है। – emsr

+0

@Z बोसन मैंने 1 99 6 में स्नातक की उपाधि प्राप्त की। टॉम कोहेन मेरे सलाहकार थे। मैं वहां एक अच्छा समय था - 1 986-96 के साथ पिछले चार वर्षों में अंशकालिक। – emsr

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