प्रोफ़ाइल-निर्देशित अनुकूलन

From alpha
Jump to navigation Jump to search

प्रोफ़ाइल-निर्देशित अनुकूलन (पीजीओ, जिसे कभी-कभी पोगो के रूप में उच्चारित किया जाता है)[1]), जिसे प्रोफ़ाइल-निर्देशित फीडबैक (पीडीएफ) के रूप में भी जाना जाता है,[2] और फीडबैक-निर्देशित अनुकूलन (एफडीओ)[3] कंप्यूटर प्रोग्रामिंग में एक संकलक अनुकूलन तकनीक है जो प्रोग्राम कार्यक्रम अनुकूलन को बेहतर बनाने के लिए प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) का उपयोग करती है।

विधि

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

1957 में फोरट्रान स्वचालित कोडिंग प्रणाली के रूप में पेश किए गए पहले उच्च-स्तरीय कंपाइलर ने कोड को ब्लॉकों में तोड़ दिया और मोंटे कार्लो विधि फैशन में कोड के सिम्युलेटेड निष्पादन के माध्यम से प्रत्येक ब्लॉक को निष्पादित करने की आवृत्ति की एक तालिका तैयार की, जिसमें परिणाम सशर्त स्थानान्तरण (के माध्यम से) IF-प्रकार कथन) एक यादृच्छिक संख्या जनरेटर द्वारा निर्धारित किया जाता है जो कि किसी भी चीज़ द्वारा उचित रूप से भारित होता है FREQUENCY प्रोग्रामर द्वारा कथन प्रदान किए गए थे।[4] प्रोग्रामर द्वारा प्रदत्त आवृत्ति जानकारी के बजाय, प्रोफ़ाइल-निर्देशित अनुकूलन अंतिम मशीन कोड को अनुकूलित करने के लिए इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग) के प्रोफाइलिंग परीक्षण रन के परिणामों का उपयोग करता है।[5] [6][7] कंपाइलर एक प्रतिनिधि इनपुट सेट पर प्रोग्राम के सैंपल रन से प्रोफ़ाइल डेटा तक पहुंचता है। परिणाम दर्शाते हैं कि कार्यक्रम के किन क्षेत्रों को अधिक बार निष्पादित किया जाता है, और किन क्षेत्रों को कम बार निष्पादित किया जाता है। सभी अनुकूलन प्रोफ़ाइल-निर्देशित फीडबैक से लाभान्वित होते हैं क्योंकि संकलन निर्णय लेते समय वे अनुमान पर कम निर्भर होते हैं। हालाँकि, चेतावनी यह है कि प्रोफाइलिंग चरण के दौरान प्रोग्राम को खिलाए गए डेटा का नमूना सांख्यिकीय रूप से विशिष्ट उपयोग परिदृश्यों का प्रतिनिधि होना चाहिए; अन्यथा, प्रोफ़ाइल-निर्देशित फीडबैक में अंतिम निर्माण के समग्र प्रदर्शन में सुधार के बजाय उसे नुकसान पहुंचाने की क्षमता है।

बिल्कुल सही समय पर संकलन अधिक कुशल मूल कोड उत्पन्न करने के लिए निष्पादित कोड के हिस्सों को गतिशील रूप से पुन: संकलित करने के लिए निष्पादन (कंप्यूटिंग) जानकारी का उपयोग कर सकता है। यदि निष्पादन के दौरान डायनामिक प्रोफ़ाइल बदलती है, तो यह पिछले मूल कोड को डी-ऑप्टिमाइज़ कर सकती है, और नई प्रोफ़ाइल से जानकारी के साथ अनुकूलित एक नया कोड उत्पन्न कर सकती है।

दत्तक ग्रहण

पीजीओ का उपयोग करके फ़ायरफ़ॉक्स के निर्माण के लिए समर्थन उपलब्ध है।[8] भले ही पीजीओ प्रभावी है, लेकिन इसके थकाऊ दोहरे-संकलन मॉडल के कारण इसे सॉफ्टवेयर परियोजनाओं द्वारा व्यापक रूप से नहीं अपनाया गया है।[9]हार्डवेयर प्रदर्शन काउंटरों का उपयोग करके प्रोफ़ाइल एकत्र करके उपकरण के बिना पीजीओ करना भी संभव है।[9] इस नमूना-आधारित दृष्टिकोण में बहुत कम ओवरहेड होता है और इसके लिए विशेष संकलन की आवश्यकता नहीं होती है।

हॉटस्पॉट (वर्चुअल मशीन) जावा वर्चुअल मशीन (जेवीएम) मूल कोड को गतिशील रूप से उत्पन्न करने के लिए प्रोफ़ाइल-निर्देशित अनुकूलन का उपयोग करती है। परिणामस्वरूप, एक सॉफ़्टवेयर बाइनरी को प्राप्त होने वाले वास्तविक लोड परीक्षण के लिए अनुकूलित किया जाता है। यदि लोड बदलता है, तो अनुकूली अनुकूलन नए लोड के लिए इसे अनुकूलित करने के लिए चल रहे सॉफ़्टवेयर को गतिशील रूप से पुन: संकलित कर सकता है। इसका मतलब यह है कि हॉटस्पॉट जेवीएम पर निष्पादित सभी सॉफ़्टवेयर प्रोफ़ाइल-निर्देशित अनुकूलन का प्रभावी ढंग से उपयोग करते हैं।[10] PGO को Google Chrome के Microsoft Windows संस्करण में अपनाया गया है। पीजीओ को क्रोम के 64-बिट संस्करण में संस्करण 53 से शुरू करके और 32-बिट संस्करण के लिए संस्करण 54 में सक्षम किया गया था।[11] Google ने एक पेपर प्रकाशित किया [12] बिल्ड को निर्देशित करने के लिए उत्पादन प्रोफाइल का उपयोग करने के लिए उपयोग में आने वाले टूल का वर्णन किया गया है, जिसके परिणामस्वरूप 10% तक प्रदर्शन में सुधार हुआ है।

कार्यान्वयन

पीजीओ को लागू करने वाले कंपाइलरों के उदाहरण हैं:


यह भी देखें

संदर्भ

  1. 1.0 1.1 "माइक्रोसॉफ्ट विजुअल सी++ टीम ब्लॉग". 12 November 2008.
  2. "प्रोफ़ाइल-निर्देशित फीडबैक (पीडीएफ)". XL C/C++ for AIX. Retrieved 23 November 2013.
  3. Baptiste Wicht; Roberto A. Vitillo; Dehao Chen; David Levinthal (24 November 2014). "हार्डवेयर गणना प्रोफ़ाइल-निर्देशित अनुकूलन". arXiv:1411.6361. Bibcode:2014arXiv1411.6361W. {{cite journal}}: Cite journal requires |journal= (help)
  4. J. W. Backus, R. J. Beeber, et al., The Fortran Automatic Coding System, Proceedings of the Western Joint Computer Conference, February 1957, p. 195
  5. "K. Pettis, R. Hansen, Profile Guided Code Positioning, ACM SIGPLAN Programming Language Design and Implementation Conference 1990" (PDF).
  6. 6.0 6.1 "Intel Fortran Compiler 10.1, Professional and Standard Editions, for Mac OS X". Archived from the original on 28 September 2013.
  7. "Profile-Guided Optimization (PGO) Quick Reference".
  8. Building with Profile-Guided Optimization, mozilla.org, 13 August 2013
  9. 9.0 9.1 Dehao Chen (2010), "Taming hardware event samples for fdo compilation", Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization, pp. 42–52.
  10. Ivanov, Vladimir (25 July 2013). "जेवीएम जेआईटी संकलन अवलोकन". Retrieved 10 September 2016.
  11. Marchand, Sébastien (31 October 2016). "पीजीओ के साथ विंडोज़ पर क्रोम को तेज़ बनाना". Archived from the original on 1 November 2016. Retrieved 1 November 2016.
  12. Chen, Dehao; Li, David Xinliang; Moseley, Tipp (2016). "AutoFDO: Automatic feedback-directed optimization for warehouse-scale applications". Proceedings of the 2016 International Symposium on Code Generation and Optimization. New York, NY, USA. pp. 12–23. doi:10.1145/2854038.2854044. ISBN 978-1-4503-3778-6. S2CID 17473127.
  13. "Profile-guided optimizations[VS 2019]". 18 October 2022.
  14. "Profile-guided optimization [Clang Compiler User's Manual]".
  15. Quintero, Dino; Chabrolles, Sebastien; Chen, Chi Hui; Dhandapani, Murali; Holloway, Talor; Jadhav, Chandrakant; Kim, Sae Kee; Kurian, Sijo; Raj, Bharath; Resende, Ronan; Roden, Bjorn; Srinivasan, Niranjan; Wale, Richard; Zanatta, William; Zhang, Zhi; Redbooks, I. B. M. (1 May 2013). IBM Power Systems Performance Guide: Implementing and Optimizing. IBM Redbooks. ISBN 978-0-7384-3766-8 – via Google Books.
  16. "Optimize a Native Executable with Profile-Guided Optimizations [GraalVM How-to Guides]".
  17. "What's new in .NET 6: Profile-guided optimization". 26 May 2023.
  18. "प्रोफ़ाइल-निर्देशित अनुकूलन".