2017-12-19 120 views
7

यह एक बेवकूफ सवाल प्रतीत हो सकता है या यहां तक ​​कि एक बेवकूफ सवाल भी हो सकता है: जब मैं PGO (या एटीएलएएस या मुझे विश्वास है कि एफएफटीडब्ल्यू भी करता है) के साथ पाइथन जैसे कुछ आत्म-ट्यूनिंग बनाते हैं, तो कंप्यूटर को अन्यथा निष्क्रिय होना पड़ता है (मापों में हस्तक्षेप नहीं करना) या क्या मैं डूम खेलने का समय पास कर सकता हूं?प्रोफ़ाइल निर्देशित अनुकूलन के साथ पायथन निर्माण करते समय मुझे कंप्यूटर को अकेला छोड़ना होगा?

पायथन स्रोत वितरण से जुड़ा हुआ README ऐसा उल्लेख करने के लिए बहुत मामूली लगता है, लेकिन मैं वास्तव में इसके बारे में अनिश्चित हूं।

+2

डूम ठीक है, बहुत सी CPU नहीं खाएगा :) –

+0

संदेह में, क्षमा से बेहतर सुरक्षित: अपने अन्य कंप्यूटर पर खेलें –

+0

एक जाना और पता लगाएं। ;-) –

उत्तर

3

पीजीओ माप करने के दौरान आप अपने कंप्यूटर पर क्या करते हैं, इसका अनुकूलन के परिणाम पर अब तक कोई प्रभाव नहीं पड़ता है। किसी दिए गए डेटा सेट के लिए कोड में गर्म पथ खोजने के लिए माप का उपयोग करने के लिए पीजीओ क्या करता है और इस डेटा का उपयोग इस डेटा सेट के लिए यथासंभव तेज़ी से प्रोग्राम बनाने के लिए करें और कौन सा पथ गर्म है और जो अन्य प्रोग्रामों से स्वतंत्र नहीं है कंप्यूटर पर चल रहा है।

चीजों को थोड़ा सा समझाने के लिए, कोड को अनुकूलित करते समय व्यापार बंद होते हैं। कोड के कुछ हिस्सों में सुधार अधिक होगा और दूसरों के निचले स्तर पर निर्भर करता है कि किस कोड ट्रांसफॉर्म का उपयोग किया जाता है और जहां वे लागू होते हैं। एक बेहतर अंतिम परिणाम प्राप्त करने के लिए आप कोड में उच्च सुधार चाहते हैं जिसे बहुत अधिक निष्पादित किया जाता है (कंपाइलर लिंगो में गर्म कोड) जबकि आप कोड में छोटे सुधारों के साथ रह सकते हैं जो कम बार (ठंडा कोड) निष्पादित होता है। आम तौर पर कार्यक्रम के इन गर्म हिस्सों की पहचान करने के लिए हेरिस्टिक्स का एक सेट उपयोग किया जाता है और अनुकूलन को इस तरह से लागू करता है जो इन हिस्सों को जितनी जल्दी हो सके बनाता है। इस दृष्टिकोण के साथ समस्या यह है कि हेरिस्टिक्स इस बात के बारे में कुछ भी नहीं जानता कि इस कार्यक्रम का अभ्यास कैसे किया जाएगा और ठंड के रूप में गर्म कोड को गलत तरीके से पहचान सकता है।

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

+0

धन्यवाद, आपके उत्तर के लिए @Johan। मैं आपकी विशेषज्ञता का सम्मान करता हूं। लेकिन इस अवसर पर आप इसे थोड़ा उबाल सकते हैं और हमें गैर कंपाइलर विशेषज्ञों को कपास का मौका दे सकते हैं? हो सकता है कि "गर्म" वास्तव में क्या मतलब है या उस मामले के लिए "पथ" पर एक पंक्ति या दो? मुझे पता है कि मैंने तकनीकी रूप से क्यों और कैसे नहीं पूछा था, लेकिन किसी को हाथ में स्पष्ट रूप से जानबूझ कर रखने के लिए यह थोड़ा सा ज्ञान मांगने के लिए लापरवाह होगा। –

+0

@ पॉलपेंजर मैंने पीजीओ के बारे में कुछ स्पष्टीकरण जोड़ा। अगर यह अभी भी अस्पष्ट है तो कृपया मुझे बताएं। – Johan

+0

अब मैं जवाब से काफी खुश हूं। दिलचस्प और जानकारीपूर्ण। धन्यवाद! –

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

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