2012-05-16 14 views
7

पर ओपनएमपी कोड संकलित करना क्या कोई तरीका है कि मैं ओपनएमपी से सी कोड (ओपनएमपी भाग सादे सी में अनुवाद के साथ) के साथ कोड संकलित कर सकता हूं, ताकि मैं जान सकूं कि ओपनएमपी द्वारा किस प्रकार का कोड उत्पन्न किया जा रहा है। मैं जीसीसी 4.4 कंपाइलर का उपयोग कर रहा हूँ।सी कोड

+2

मुझे लगता है कि यह प्रश्न पूर्व-मानता है कि जीसीसी कंपाइलर ओपनएमपी कॉल को सी में अनुवाद करता है। मुझे संदेह है कि यह, और अधिकांश अन्य ओपनएमपी-जागरूक कंपाइलर्स, सिस्टम फ़ंक्शंस को कॉल सहित असेंबलर में स्रोत का अनुवाद करते हैं। मुझे पूरा यकीन है कि आपका कंपाइलर असेंबलर लिस्टिंग तैयार करेगा; यह हो सकता है कि आपको किसके साथ काम करने की ज़रूरत है। मैं एक उत्तर के लिए ब्याज के साथ देखता हूं जो मेरी अपेक्षाओं को गलत साबित करता है। –

+0

अफैइक, आप जीसीसी कंपाइलर से स्रोत कोड देख सकते हैं उदा। omp.h और पुस्तकालय की संबंधित स्रोत फ़ाइलों (libgomp) यह देखने के लिए कि ये pragmas क्या करते हैं। लेकिन सी संकलक को कॉल करने से पहले कोई प्रतिस्थापन दिनचर्या नहीं है। [यहां] देखें (http://gcc.gnu.org/onlinedocs/libgomp/Implementing-FOR-construct.html#Implementing-FOR-construct) – Bort

उत्तर

3

वहाँ कम से कम http://www2.cs.uh.edu/~openuh/ OpenUH (यहां तक ​​कि http://openmp.org/wp/openmp-compilers/ पर सूचीबद्ध) है, जो

अनुकूलित सी या फोरट्रान 77 कोड है कि अन्य प्लेटफार्मों पर एक देशी संकलक द्वारा संकलित किया जा सकता है उत्सर्जन कर सकते हैं।

भी देखते हैं: http://www.cs.uoi.gr/~ompi/ OMPi:

OMPi संकलक OpenMP #pragmas साथ सी स्रोत कोड लेता है और बहु-सी कोड तब्दील उत्पादन, प्रणाली के मूल संकलक द्वारा संकलित किया जा करने के लिए तैयार।

और OdinMP:

OdinMP/सीसीपी पोर्टेबिलिटी कारणों के लिए जावा में लिखा और OpenMP निर्देशों के साथ एक सी कार्यक्रम लेता है और POSIX धागे के लिए एक सी कार्यक्रम का उत्पादन किया गया था।

मुझे कहना चाहिए कि सादा सी में ओपनएमपी कोड का अनुवाद करना लगभग असंभव है; क्योंकि पुराने सादे सी में धागे का कोई समर्थन नहीं है और मुझे लगता है कि ओपनएमपी स्रोत-से-स्रोत अनुवादकों को अभी तक सी 11 के बारे में पता नहीं है। ओपनएमपी प्रोग्राम को या तो पीओएसईक्स धागे के साथ सी में या सी को कुछ रनटाइम लाइब्रेरी (जैसे libgomp) कॉल के साथ अनुवादित किया जा सकता है। उदाहरण के लिए, ओपनयूएच की अपनी लाइब्रेरी है जो स्वयं pthreads का उपयोग करती है।

6

अन्य टिप्पणीकर्ताओं की तरह जीसीसी सादा सी

को OpenMP निर्देशों अनुवाद नहीं करता है ने कहा लेकिन अपने निर्देशों आप -fdump-tree-optimized विकल्प के साथ संकलन कर सकते हैं के साथ करता है कि तुम क्या जीसीसी के एक विचार प्राप्त करना चाहते हैं। यह कार्यक्रम के मध्यवर्ती प्रतिनिधित्व उत्पन्न करेगा जो कम से कम सी-जैसा है।

, कई चरणों कि फेंक दिया जा सकता है (जीसीसी के लिए आदमी पृष्ठ की जाँच) हैं अनुकूलित चरण में OpenMP निर्देशों GOMP क्रम पुस्तकालय के लिए कॉल के साथ प्रतिस्थापित किया गया है। उस प्रस्तुति को देखते हुए आपको क्या हो रहा है में कुछ अंतर्दृष्टि मिल सकती है।