2011-08-24 14 views
6

मेरे पास एक लूप है जिसे ओपनएमपी द्वारा समांतर किया गया है, लेकिन कार्य की प्रकृति के कारण, 4 critical क्लॉज हैं।ओपनएमपी बाधाओं को कैसे प्रोफाइल करें

गति को प्रोफाइल करने और महत्वपूर्ण खंडों (या शायद गैर-महत्वपूर्ण (!)) लूप के अंदर सबसे अधिक समय लेने का सबसे अच्छा तरीका क्या होगा?

मैं जी ++ 4.4.3

+0

मैंने अतिरिक्त पोस्ट – Mikhail

+1

के साथ मूल पोस्ट को संशोधित किया है, मैंने ओएमपी लाइब्रेरी स्रोतों को संशोधित करने और उन्हें जोड़ने के लिए ऐसा कार्य किया है, एक rdtsc का – osgx

उत्तर

2

OpenMP समय प्रदर्शन (docs here) को मापने के लिए कार्य omp_get_wtime() और omp_get_wtick() भी शामिल है के साथ उबंटू 10.04 का उपयोग करें, मैं इन का उपयोग कर की सिफारिश करेंगे।

अन्यथा एक प्रोफाइलर आज़माएं। मैं Google सीपीयू प्रोफाइलर पसंद करता हूं जिसे here मिल सकता है।

this उत्तर में वर्णित मैनुअल तरीका भी है।

4

Scalasca ओपनएमपी (और एमपीआई) कोडों को प्रोफाइल करने और परिणामों का विश्लेषण करने के लिए एक अच्छा टूल है। Tau भी बहुत अच्छा है लेकिन उपयोग करने में बहुत कठिन है। इंटेल टूल्स, जैसे vtune, भी अच्छे हैं लेकिन बहुत महंगा हैं।

+0

इंटेल vtune एक बहुत अच्छा उत्पाद है। स्केलस्का या ताऊ की तुलना में उपयोग बहुत आसान है। यह निश्चित रूप से पैसे के लायक है। – tune2fs

+0

वीट्यून वास्तव में गैर-वाणिज्यिक सॉफ्टवेयर के लिए मुफ्त में उपयोग किया जा सकता है। http://software.intel.com/en-us/non-commercial-software-development – SaiyanGirl

+0

इंटेल ने मुफ्त में vtune की पेशकश बंद कर दी है। अकादमिक उपयोग के लिए अब केवल एक पेशकश है। –

3

Arm MAP में ओपनएमपी और पाथ्रेड प्रोफाइलिंग हैं - और आपके स्रोत कोड को वाद्य या संशोधित करने के बिना काम करता है। आप सिंक्रनाइज़ेशन समस्याएं देख सकते हैं और जहां थ्रेड स्रोत लाइन स्तर पर समय व्यतीत कर रहे हैं। OpenMP profiling ब्लॉग एंट्री पढ़ने लायक है।

एमएपी व्यापक रूप से उच्च प्रदर्शन कंप्यूटिंग के लिए उपयोग किया जाता है क्योंकि यह एमपीआई जैसे मल्टीप्रोसेस अनुप्रयोगों का भी प्रोफाइल करता है।

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