मुझे कैसे पता चलेगा कि मेरा कोड संकलक द्वारा सदिश किया जा रहा है?


9

जैसा कि जेड ब्राउन के जवाबों की तुलना में लागतों की गणना बनाम गणना की गई , गैर-वेक्टरकृत फ्लोटिंग पॉइंट ऑपरेशंस के उपयोग से बहुत तेज़ कोड में परिणाम प्राप्त हुए। कई आधुनिक संकलक दावा करते हैं कि वे स्वचालित वेक्टरकरण कर सकते हैं। मैं अपने कोड के किस हिस्से को सफलतापूर्वक वेक्टर किया जा रहा हूं?

जवाबों:


10

किसी भी आधुनिक पुरानी इंटेल संकलक के साथ, -O3 -vec-report3। अनुकूलन स्तर तीन गारंटी देता है कि यह वेक्टर करने की कोशिश कर रहा है, और वेक्टर रिपोर्ट आपको बताएगी कि यह क्या कर रहा है।

वैश्वीकरण पर GNU पेज कहता है कि यह डिफ़ॉल्ट रूप से अनुकूलन स्तर 3 पर है, लेकिन मैं vec-report के समकक्ष नहीं मिल सकता।


शीघ्र जवाब देने के लिए ध्न्यवाद। -Vec-report3 के बारे में मुझे नहीं पता था। जब आपके पास इस प्रकार की चीज (स्वचालित वैश्वीकरण) की बात आती है, तो आपके पास एक कंपाइलर वरीयता होती है?
मैथ्यू एम्मेट

इंटेल कंपाइलर वास्तव में अच्छे हैं, लेकिन केवल इंटेल चिप्स के लिए। आपको बस सभी सही प्रागमों को जोड़ना होगा (#pragma ivdep सबसे आसान है) जीसीसी 4.7 बहुत बेहतर हो गया है, लेकिन एक सहकर्मी के साथ कुछ कोड की तलाश में यह अभी भी बग (जैसे ओपनगैस प्रैगमास के अंदर कोई वैश्वीकरण नहीं) है।
ऐट्रेल

1
मैं दोहरी जाँच की सलाह दूंगा कि इंटेल संकलक AMD चिप्स पर वैश्वीकरण के साथ कैसे करता है। मुझे 100% यकीन नहीं है कि पुरानी समस्याएं अभी भी मौजूद हैं।
बिल बर्थ

2
@BillBarth हां, अभी भी एक मुद्दा है। ऑप्टिमाइज़ेशन नोटिस (कई जगह, उदाहरण के लिए सॉफ़्टवेयर .intel.com/sites/products/collateral/hpc/ compilers/… ) देखें। एएमडी ने इंटेल को यह बताने के लिए अदालत की लड़ाई जीती कि वे प्रतिस्पर्धी हैं, उन्हें रोकने के लिए नहीं। en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler#Criticism समाधानों पर Agner कोहरा: agner.org/optimize/blog/read.php?i=49
जेड ब्राउन

@JedBrown, यकीन है कि SSE अभी भी अजीब है, लेकिन AVX के साथ कहानी क्या है? उन लिंक से संकेत मिलता है कि चीजें ठीक होनी चाहिए (क्योंकि दोनों कंपनियां एवीएक्स को लागू करती हैं), लेकिन मैंने इसे बुलडोजर मशीन पर परीक्षण नहीं किया है।
बिल बर्थ


5

GNU संकलक के साथ, जोड़ना -Wa,-ahl=asm.sजनरेट असेंबली कोड को डंप कर देगा asm.s

इंटेल कंपाइलर्स के साथ, जोड़ने -fcode-asm -Faasm.sसे उत्पन्न कोड को डंप कर दिया जाएगा asm.s

फिर आप असेंबली कोड का निरीक्षण कर सकते हैं और वेक्टर फ्लोट पॉइंट ऑपरेशंस की तलाश कर सकते हैं।


मैं पूरी तरह से सहमत हूं कि विधानसभा आउटपुट का निरीक्षण करना केवल यह निर्धारित करने का एकमात्र विश्वसनीय तरीका है कि क्या कोड वास्तव में वेक्टरकृत है। कुछ भी नहीं है जो कोड को वेक्टर करने के उनके दावों के बारे में ईमानदार होने की आवश्यकता है।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.