हमने CAD COMPASS-3D → भाग 1 को कैसे ओवरक्लॉक किया

KOMPAS - V5.11 के पहले 3 डी संस्करण की रिलीज के 20 साल बीत चुके हैं। इस समय के दौरान, हमने महसूस किया कि हमारे उपयोगकर्ताओं की ज़रूरतें KOMPAS-3D की क्षमताओं के अनुपात में बढ़ रही हैं, जिस तरह KOMPAS की कार्यक्षमता उपयोगकर्ताओं की आवश्यकताओं के अनुपात में बढ़ रही है। केवल एक रोड़ा: कई वर्षों के लिए तकनीकी भाग का निर्माण, हम जटिल बड़ी परियोजनाओं के साथ काम करते समय उत्पादकता की समस्या में भाग गए। अब यह रेखा दूर हो गई है, और हम यह बताने के लिए तैयार हैं कि कैसे हम 30 से अधिक बुनियादी कार्यों में कोमपस -3 डी को गति देने में कामयाब रहे।



धैर्य को तेज नहीं किया जा सकता है


हम कैसे समझ गए कि यह "गति" का समय था?


यदि 12 साल पहले कई हजार घटकों के असेंबली के साथ पर्याप्त काम था, तो अब कोमपास उपयोगकर्ता एक विधानसभा में 300,000 घटकों से जुड़े जटिल प्रोजेक्ट करना चाहते हैं, और कुछ मिलियन कुछ ही होंगे।



KOMPAS-3D उपयोगकर्ता परियोजनाओं का विकास: K-700A, K-703MBA ट्रैक्टरों के लिए बाईं ओर स्नो-रिमूविंग मिलिंग और रोटर उपकरण, दाईं ओर स्टीम-गैस इंस्टॉलेशन PGU-410 MW यदि यह देखना कठिन है, तो चित्र पर क्लिक करें।

ServiceDesk - तकनीकी सहायता में - हमें "मैं अपना कारखाना सुबह नहीं खोल सकता" और "मॉडल खुल गया है," की शैली में अनुरोध प्राप्त हुआ, लेकिन यह घूमता नहीं है।

केवल एक निष्कर्ष है - कम्पास को गंभीर संशोधन की आवश्यकता है।

पहले बदलता है


प्राथमिक कार्य बड़ी विधानसभाओं के साथ काम करते समय सिस्टम प्रदर्शन को बढ़ाना है। और सशर्त 10-30% तक बढ़ाने के लिए, लेकिन कई बार नहीं।

इन समस्याओं को हल करने के लिए, 2015 में हमने KOMPAS-3D को तेज करने के लिए एक कार्यदल बनाया। प्रोग्रामर्स, परीक्षकों और विश्लेषकों का त्वरित प्रतिक्रिया दस्ता।

हमारी गति टीम

सहायता: हम पहले त्वरण पर काम कर रहे हैं - ये दोनों अनुकूलन और नए कार्य हैं जो हमें बड़ी विधानसभाओं के साथ काम करते समय कुछ समस्याओं को हल करने की अनुमति देते हैं। हालाँकि, वे कार्य अब जितने महत्वाकांक्षी नहीं थे, और कार्य इतने अधिक नहीं थे।


आपने त्वरण के लिए मापदंड कैसे चुने?


हमने त्वरण के लिए 5 दिशाएँ चुनी हैं:

  • प्रतिपादन (रोटेशन, आंदोलन और मॉडल छवि की ज़ूमिंग),
  • एक बड़ी सभा में घटक जोड़ना
  • विधानसभा का उद्घाटन
  • विधानसभाओं में संपादन,
  • प्रक्षेपण।

इन क्षेत्रों को चुनते समय, हम कई स्रोतों पर निर्भर थे:

  • खुद का अनुभव और शोध,
  • तकनीकी सहायता के लिए अनुरोधों का विश्लेषण और त्रुटि आधार के विश्लेषण (हमारे उपकरणों में एक विशेष लेबल "प्रदर्शन" है, जहां प्रदर्शन के लिए महत्वपूर्ण समस्याएं नोट की गई हैं),
  • उपयोगकर्ता सर्वेक्षण परिणाम (उपयोगकर्ता आमतौर पर ASCON घटनाओं में ऐसे प्रश्नावली भरते हैं),
  • उच्च शक्तियाँ


यहां हम कुछ पर चर्चा कर रहे हैं।

कार्य समूह के गठन के साथ, हमने अपना स्वयं का सूचना स्थान बनाया - एक ज्ञान का आधार - हमने त्वरण के संभावित क्षेत्रों में विचारों को एकत्रित और व्यवस्थित करने के लिए सभी कार्यों को नीचे लिखा। नतीजतन, आगे के काम के लिए परिदृश्यों के साथ आवश्यकताओं का निर्माण शुरू हुआ, जिसके लिए प्रदर्शन को नियंत्रित करना संभव था।

एक अन्य स्वयंसिद्ध है जिसे हमने संस्करण पर काम करते समय अपनाया था: उत्पादकता को बस नहीं लिया जा सकता है और सुधार किया जा सकता है, और फिर इसके बारे में भूल गया। वर्तमान स्थिति को मापना और रिकॉर्ड करना आवश्यक था, जिसमें से हम फिर से पीछे हट सकते थे। उस समय, शुरुआती बिंदु V16 था (हमारी कहानी अभी भी 2015 में है), जिसे हमारे टीके से लिपियों द्वारा नियंत्रित करने की आवश्यकता है। कई मुख्य बिंदुओं के प्रदर्शन को मैन्युअल रूप से नियंत्रित किया गया था, लेकिन अब यह प्रक्रिया POI के लिए स्वचालित है।
एंटोन सिदकिन, प्रोग्रामर, टीमलीड:

“हमने शुरू की गई प्रणाली - POI (रुचियों के बिंदुओं) के लिए प्रक्रियाओं को स्वचालित किया। ये विशेष टैग हैं जो स्रोत कोड में स्थित हैं। उनके अनुसार, उपयोगकर्ता भाषा द्वारा वर्णित KOMPAS-3D में स्क्रिप्ट निष्पादित करते हुए, आप एक रिपोर्ट प्राप्त कर सकते हैं जो न केवल प्रोग्रामर के लिए, बल्कि परीक्षकों के साथ विश्लेषकों के लिए भी समझ में आता है और यह पता लगाने में मदद करता है कि KOMPAS-3D एक निश्चित समय पर क्या करता है और इस पर कितना समय खर्च होता है। फिर इस जानकारी को स्वचालित रूप से संसाधित किया जा सकता है और स्रोत डेटा के साथ तुलना की जा सकती है। "


स्वचालित प्रदर्शन परीक्षण के परिणाम। वैसे, जो इस जगह पर पढ़ चुके हैं, अब जानते हैं कि केडीपीवी स्लैब हमारी त्वरक टीम का प्रतीक है। वे धीमे कोड को धीमा कोड मानते हैं)


तुलना के लिए कौन से मॉडल का उपयोग किया गया था?


हमने वास्तविक उपयोगकर्ता मॉडल पर ध्यान केंद्रित करने का निर्णय लिया, जो "बड़ी असेंबली" के मानदंडों को फिट करते हैं।

कंप्यूटर 3 डी-मॉडलिंग इक्के प्रतियोगिता के मॉडल के डेटाबेस को बहुत लाभ हुआ था।

नीचे हमारे पसंदीदा मॉडल के स्क्रीनशॉट हैं। बेशक, यह सब नहीं है, और, इसके अलावा, हमें विश्वास है कि हाल के वर्षों के शीर्ष मॉडल जल्द ही परिचित हो जाएंगे और KOMPAS उनके साथ सीमा पर नहीं, बल्कि इसके नियमित, उच्च गति मोड में काम करेंगे।

ट्रॉली बसस्टीम-गैस यूनिट CCP-410 MW
समुद्री बिजली संयंत्र गियरबॉक्सवैक्यूम तकनीकी स्थापना


जब इन मॉडलों के अलावा, सिस्टम को और भी अधिक लोड करना आवश्यक था, तो अजीब "पूर्वनिर्मित हॉजपोज" का भी उपयोग किया गया था, उदाहरण के लिए:



हमने सिंथेटिक मॉडल का भी उपयोग किया: कुछ मामलों में, कुछ समस्याएं उन पर अधिक स्पष्ट हैं और वे डिबगिंग और परीक्षण के लिए उपयोग करने के लिए अधिक सुविधाजनक हैं।

विकास और प्राप्त परिणामों के बारे में


ड्राइंग


सबसे पहले, उन्होंने प्रतिपादन को गति देने की कोशिश की (यह सर्वेक्षण में भाग लेने वाले अधिकांश उपयोगकर्ताओं द्वारा भी अनुरोध किया गया था)।

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

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

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

कार्य का परिणाम दो प्रतिपादन विकल्पों का कार्यान्वयन था:
  • बेसिक - ओपन जीएल 2.0 एक्सटेंशन को सक्षम करता है। वीडियो कार्ड के प्रदर्शन पर कम मांग। अच्छा प्रतिपादन त्वरण देता है,
  • "बेहतर" - OpenGL 4.5 के आधुनिक एक्सटेंशन का उपयोग करता है। वीडियो कार्ड की विशेषताओं पर मांग। आधुनिक मानचित्रों पर अधिकतम प्रतिपादन त्वरण देता है


संकेत:

V18 के लिए रेंडर सेटिंग्स।

डिफ़ॉल्ट रूप से, "ऑटो डिटेक्ट" काम करता है - वांछित विकल्प को ओपन ओपन एक्सटेंशन के आधार पर चुना जाता है।


यूरी कोर्चगिन, प्रोग्रामर:

“बड़े दृश्यों को प्रदर्शित करने के प्रदर्शन की समस्या में, यह स्पष्ट है कि बहुत सारे संसाधन दृश्य के चारों ओर जाने और उन मापदंडों की गणना करने पर खर्च किए जाते हैं जिनके साथ आदिम प्रदर्शित किया जाना चाहिए।

एक अन्य समस्या बड़ी संख्या में ड्रॉ कॉल (ओपनजीएल एपीआई पर कॉल से जुड़ी है, जो ज्यामिति के आउटपुट से फ्रेम बफर तक ले जाती है)।

प्रारंभिक स्थिति ने रैम से वीडियो कार्ड के सभी डेटा को स्थानांतरित कर दिया। और ये एक बड़ी विधानसभा के मामले में लाखों त्रिकोण हैं।

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

पहला कदम वीडियो मेमोरी को ड्रॉइंग डेटा (ट्राइंगुलेशन, वायरफ्रेम, चेहरे) को कैश करने के लिए उपयोग करना था। इस डेटा को GPU में ले जाकर, हम FPS में 2-3 गुना वृद्धि प्राप्त करने में सफल रहे।

इसके बाद विज़ुअलाइज़ेशन के लिए अनुकूलित एक डेटा मॉडल का निर्माण किया गया। यही है, हमें एक 3D मॉडल के लिए अनुरोधों से छुटकारा मिला, जो काफी संसाधन गहन हो सकता है, जिसने इसका सकारात्मक प्रभाव भी दिया।

अगला कदम त्रिकोणासन की गुणवत्ता और मात्रा का अध्ययन करना था। अक्सर छोटे विवरण अत्यधिक सटीकता के साथ प्रदर्शित किए जाते थे, और इसके विपरीत - कुछ स्थितियों में, चिकनी सतहों के बजाय, उपयोगकर्ता ने स्क्रीन पर "कटा हुआ" मॉडल देखा।

हमने विस्तार के कई स्तरों का उपयोग करने का निर्णय लिया और कोणीय विचलन को ध्यान में रखते हुए प्राइमेटिस के सन्निकटन को लागू किया। इस तरह, एक पत्थर के साथ दो पक्षी मारे गए: उन्होंने गुणवत्ता में सुधार किया और GPU पर अत्यधिक भार को समाप्त कर दिया। "

Spoiler: त्रिकोणासन के बारे में

एक विश्लेषणात्मक इंजीनियर निकिता बट्यानोव द्वारा निर्दिष्ट:

“मॉडलों के अधिक सही और आम तौर पर सुखद प्रदर्शन के लिए, हमने अधिकतम कोणीय विचलन के साथ त्रिकोणीय मापदंडों को पूरक करने का निर्णय लिया। पहले, हमने केवल अधिकतम रैखिक विचलन पैरामीटर का उपयोग किया था।

मुझे आपको याद दिलाना है: वस्तुओं के हमारे सैद्धांतिक प्रतिनिधित्व को खींचने के लिए वीडियो कार्ड के लिए, उन्हें त्रिकोणों में तोड़ना आवश्यक है। इस तरह के जितने अधिक त्रिभुज होंगे, उतनी ही छवि "आदर्श" की तरह दिखेगी, लेकिन वीडियो कार्ड पर लोड जितना मजबूत होगा।

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

"हम उन वस्तुओं को आकर्षित कर सकते हैं जो पूरे मॉडल के आयामों के सापेक्ष छोटे हैं, जबकि त्रिकोणों की संख्या से थोड़ा अधिक है।"


यूरी कोर्चगिन, प्रोग्रामर:

“ठीक है, मॉडल प्रदर्शित करना तेज़ हो गया है, लेकिन उतना नहीं जितना हम चाहते हैं। इस स्तर पर, हमने महसूस किया कि हम इस दृष्टिकोण से बाहर नहीं निकल सकते।

दूसरी ओर, नवीनतम दृष्टिकोण के उपयोग के लिए सबसे अद्यतित वीडियो कार्ड की आवश्यकता होगी, जो संगतता आवश्यकताओं के विपरीत है और कुछ उपयोगकर्ता स्पष्ट रूप से इसे पसंद नहीं करेंगे। इसलिए, ऊपर वर्णित सुधार "मूल" प्रतिपादन विकल्प के रूप में उपलब्ध हो गए हैं।

और फिर मज़ा शुरू हुआ ... "


अगले भाग में, हम रेंडरिंग के बारे में अपनी कहानी जारी रखते हैं, और असेंबली रोटेशन, एमटीसी गणना के दौरान रेंडरिंग गति को मापने के परिणाम भी दिखाते हैं, असेंबली में घटक जोड़ते हैं, और एक आंशिक लोड प्रकार की उपस्थिति के बारे में बताते हैं।

और मिठाई के लिए, उन्होंने आपके लिए एक समुद्री जहाज संयंत्र के रेड्यूसर के रोटेशन, स्केलिंग और शिफ्टिंग के दौरान रेंडरिंग गति की तुलना करने के लिए एक वीडियो छोड़ दिया।



पहले भाग का अंत। जारी रखा जाए

Source: https://habr.com/ru/post/hi444714/


All Articles