कुछ ऐसा है जो मुझे कभी समझ नहीं आया। GTA IV की तरह एक बड़ा बड़ा पीसी गेम मेरे CPU का 50% कैसे उपयोग कर सकता है और 60fps पर चल सकता है जबकि घूर्णन चायदानी @ 60fps का डीएक्स डेमो एक 30% का उपयोग करता है?
कुछ ऐसा है जो मुझे कभी समझ नहीं आया। GTA IV की तरह एक बड़ा बड़ा पीसी गेम मेरे CPU का 50% कैसे उपयोग कर सकता है और 60fps पर चल सकता है जबकि घूर्णन चायदानी @ 60fps का डीएक्स डेमो एक 30% का उपयोग करता है?
जवाबों:
सामान्य तौर पर, यह इसलिए है क्योंकि
उदाहरण के लिए, एक आसान अनुकूलन जिसे आप शामिल कर सकते हैं वास्तव में उन चीजों को आकर्षित करने की कोशिश नहीं कर सकते हैं जिन्हें देखा नहीं जा सकता है। ग्रैंड थेफ्ट ऑटो IV से सिटीस्केप जैसे जटिल दृश्य पर विचार करें । रेंडरर वास्तव में सभी भवनों और संरचनाओं का प्रतिपादन नहीं कर रहा है। इसके बजाय, यह केवल वही प्रस्तुत कर रहा है जो कैमरा देख सकता है। यदि आप उन्हीं इमारतों के पीछे भाग सकते हैं, जो मूल कैमरे का सामना कर रहे हैं, तो आपको एक आधा-निर्मित खोखला-आउट शेल संरचना दिखाई देगी। प्रत्येक बिंदु जो कैमरा नहीं देख सकता है, उसका प्रतिपादन नहीं किया गया है - चूंकि आप इसे देख नहीं सकते हैं, इसलिए आपको इसे दिखाने का प्रयास करने की कोई आवश्यकता नहीं है।
इसके अलावा, अनुकूलित निर्देश और विशेष तकनीक मौजूद हैं जब आप हार्डवेयर के किसी विशेष सेट के खिलाफ विकसित कर रहे हैं, ताकि बेहतर स्पीडअप भी सक्षम हो सके।
आपके प्रश्न का दूसरा भाग यही है कि डेमो इतना CPU उपयोग क्यों करता है:
... जबकि एक घूर्णन Teapot @ 60fps का डीएक्स डेमो 30% का उपयोग करता है?
जब आप अपने हार्डवेयर को एक सुंदर उदाहरण दिखाने के लिए आवश्यक सभी सुविधाओं का समर्थन नहीं करते हैं, तो यह dxdemo
एक सॉफ्टवेयर रेंडरर कहलाने के लिए ग्राफिक्स एपीआई (जैसे ) के डेमो के लिए सामान्य है । इन विशेषताओं में छाया, परावर्तन, किरण-अनुरेखण, भौतिकी, वगैरह जैसी चीजें शामिल हो सकती हैं।
यह पूरी तरह से पूरी तरह से चित्रित हार्डवेयर डिवाइस के कार्य की नकल करता है, जो कि एपीआई की सभी विशेषताओं को दिखाने के लिए मौजूद नहीं है। लेकिन चूंकि हार्डवेयर वास्तव में मौजूद नहीं है, इसलिए यह आपके सीपीयू पर चलता है। यह एक ग्राफिक्स कार्ड को सौंपने की तुलना में बहुत अधिक अक्षम है - इसलिए आपका उच्च CPU उपयोग।
धैर्य, तकनीकी कौशल और धीरज।
पहला बिंदु यह है कि डीएक्स डेमो मुख्य रूप से एक शिक्षण सहायता है इसलिए यह स्पष्टता के लिए किया जाता है कि निष्पादन की गति नहीं।
यह एक बहुत बड़ा विषय है, लेकिन खेल विकास मुख्य रूप से आपके डेटा और आपके निष्पादन पथ को लगभग पैथोलॉजिकल डिग्री समझने के बारे में है।
3 डी गेम आपकी आंखों को चकमा देने में महान हैं। उदाहरण के लिए, स्क्रीन स्पेस एंबिएंस ओप्टिफ़िकेशन (SSAO) नामक एक तकनीक है, जो किसी दृश्य के उन हिस्सों को छायांकित करके अधिक यथार्थवादी अनुभूति देगा, जो सतह की असामान्यता के करीब हैं। यदि आप अपनी दीवार के कोनों को देखते हैं, तो आप देखेंगे कि वे ज्यादातर मामलों में केंद्रों की तुलना में थोड़ा गहरा दिखाई देते हैं।
बहुत ही प्रभाव रेडियोसिटी का उपयोग करके प्राप्त किया जा सकता है, जो कि सटीक सिमुलेशन पर आधारित है। रेडियोसिटी भी उछलती रोशनी आदि के अधिक प्रभावों को ध्यान में रखेगी, लेकिन यह कम्प्यूटेशनल रूप से महंगा है - यह एक किरण अनुरेखण तकनीक है।
यह तो केवल एक उदाहरण है। रियल टाइम कंप्यूटर ग्राफिक्स के लिए सैकड़ों एल्गोरिदम हैं और वे अनिवार्य रूप से अच्छे अनुमानों पर आधारित हैं और आमतौर पर बहुत सारी धारणाएं बनाते हैं। उदाहरण के लिए, स्थानिक छंटाई को बहुत सावधानी से चुना जाना चाहिए, कैमरे की विशिष्ट स्थिति, साथ ही दृश्य ज्यामिति में परिवर्तन की मात्रा।
ये 'अनुकूलन' बहुत बड़े हैं - आप एक एल्गोरिथ्म को कुशलतापूर्वक कार्यान्वित कर सकते हैं और इसे 10 गुना तेज गति से चला सकते हैं, लेकिन एक समान परिणाम ("धोखा") पैदा करने वाले स्मार्ट एल्गोरिदम को चुनने से आप O (N ^ 4) से O () तक जा सकते हैं लॉग (एन))।
वास्तविक कार्यान्वयन का अनुकूलन वही है जो खेलों को और भी अधिक कुशल बनाता है, लेकिन यह केवल एक रैखिक अनुकूलन है।
Eeeeek!
मुझे पता है कि यह सवाल पुराना है, लेकिन इसका रोमांचक यह है कि किसी ने भी वीसिन्यू का उल्लेख नहीं किया है ????
आपने 60fps पर गेम के CPU उपयोग की तुलना 60fps पर चायदानी डेमो के CPU उपयोग से की।
क्या यह स्पष्ट नहीं है, कि दोनों 60fps पर बिल्कुल (कम या ज्यादा) चले? कि जवाब की ओर जाता है ...
दोनों ऐप्स vsync सक्षम के साथ चलते हैं! इसका मतलब है (डंबड-डाउन) कि रेंडरिंग फ्रामर्ट आपके मॉनिटर के "वर्टिकल ब्लो इंटरवल" पर लॉक हो जाता है। ग्राफिक्स हार्डवेयर (और / या ड्राइवर) केवल अधिकतम पर प्रस्तुत करेगा। 60fps। 60fps = 60 हर्ट्ज (प्रति हर्ट्ज = प्रति सेकंड) ताज़ा दर। तो आप शायद एक पुराने, टिमटिमाते CRT या एक सामान्य एलसीडी डिस्प्ले का उपयोग करते हैं। 100Hz पर चलने वाले CRT पर आपको संभवतः 100Hz तक के फ्रैमरेट्स दिखाई देंगे। वीएसक्यूएन भी एलसीडी डिस्प्ले के समान तरीके से लागू होता है (उनके पास आमतौर पर 60Hz की ताज़ा दर होती है)।
तो, चायदानी डेमो वास्तव में बहुत अधिक कुशल चला सकते हैं! यदि यह 30% CPU समय (GTA IV के लिए 50% CPU समय की तुलना में) का उपयोग करता है, तो यह संभवतः प्रत्येक फ्रेम में कम सीपीयू समय का उपयोग करता है, और बस अगले ऊर्ध्वाधर रिक्त अंतराल के लिए लंबे समय तक इंतजार करता है। दोनों ऐप की तुलना करने के लिए, आपको vsync को अक्षम करना चाहिए और फिर से मापना चाहिए (आप दोनों ऐप के लिए बहुत अधिक एफपीएस मापेंगे)।
कभी-कभी vsync को अक्षम करने के लिए इसका ठीक है (अधिकांश गेम इसकी सेटिंग्स में एक विकल्प है)। जब आप vsync को अक्षम कर दिया जाता है, तो कभी-कभी आपको "आंसू आंसू" दिखाई देंगे।
आप इसका विवरण पा सकते हैं और इसका उपयोग विकिपीडिया पर क्यों किया जाता है: http://en.wikipedia.org/wiki/Vsync
जब कि यहाँ कई उत्तर इस बात के उत्कृष्ट संकेत प्रदान करते हैं कि मैं इसके बजाय क्यों के सरल प्रश्न का उत्तर दूंगा
शायद सबसे अच्छा उदाहरण (निश्चित रूप से सबसे प्रसिद्ध में से एक) आईडी सॉफ्टवेयर है। वे के दिनों में बहुत जल्दी एहसास हुआ, कमांडर उत्सुक (अच्छी तरह से 3 डी से पहले) है कि एक चालाक रास्ता के साथ आ कुछ प्राप्त करने के लिए 1 , भले ही यह आधुनिक हार्डवेयर पर भरोसा (इस मामले में एक ईजीए ग्राफिक्स कार्ड!) था कि रेखांकन के लिए बेहतर प्रतियोगिता है कि यह आपके खेल को बाहर खड़ा कर देगा। यह सच था, लेकिन उन्होंने आगे महसूस किया कि तब तक नए गेम और सामग्री के साथ आने के लिए वे खुद को प्रौद्योगिकी का लाइसेंस दे सकते थे, इस प्रकार इंजन की अगली पीढ़ी को विकसित करने में सक्षम होने के लिए दूसरों से आय प्राप्त करना और इस तरह फिर से प्रतियोगिता मेंढक मेंढक होना ।
इन प्रोग्रामर्स की क्षमताओं (व्यवसाय प्रेमी के साथ मिलकर) ने उन्हें समृद्ध बनाया है।
यह कहा कि यह जरूरी नहीं है कि पैसा ऐसे लोगों को प्रेरित करे। यह सिर्फ हासिल करने की इच्छा के रूप में ज्यादा है, पूरा करने की इच्छा है। शुरुआती दिनों में उन्होंने जो पैसा कमाया, उसका मतलब है कि अब उनके पास वह समय है जो वे आनंद लेते हैं। और जब तक कई बाहरी हित हैं लगभग सभी अभी भी कार्यक्रम करते हैं और पिछले पुनरावृत्ति से बेहतर करने के तरीकों पर काम करने की कोशिश करते हैं।
बस उस व्यक्ति को रखो जिसने चायदानी डेमो लिखा है, निम्नलिखित मुद्दों में से एक या अधिक था:
आखिरी कठोर 2 लग सकता है लेकिन स्पष्ट रूप से कुछ ऐसे हैं जो दूसरों की तुलना में बेहतर हैं, घंटी के घुमावों में कभी-कभी अत्यधिक छोर होते हैं और वे उस कौशल के साथ किए गए चरम छोरों की ओर आकर्षित होते हैं।
कम लक्ष्य एक वास्तव में मुख्य कारण होने की संभावना है। चायदानी डेमो का लक्ष्य सिर्फ एक डेमो था। लेकिन प्रोग्रामर कौशल 3 का डेमो नहीं । यह इस मामले में DX प्रतिपादन के एक (बड़े) ओएस के एक छोटे पहलू का एक डेमो होगा।
उन डेमो को देखने वालों के लिए यह मैटर नहीं करता था, जिससे यह आवश्यकता से अधिक सीपीयू का उपयोग करता था जब तक कि यह पर्याप्त रूप से अच्छा लग रहा था। जब कोई लाभार्थी नहीं होगा तो कचरे को खत्म करने के लिए कोई प्रोत्साहन नहीं होगा। एक खेल की तुलना में बेहतर एआई, बेहतर ध्वनि, अधिक बहुभुज, अधिक प्रभाव के लिए अतिरिक्त चक्र होना पसंद करेंगे।
कुछ कारणों की वजह से
EDIT: कुछ नंबर देने के लिए
2.8 Ghz एथलॉन -64 NV-6800 GPU के साथ। परिणाम हैं:
कभी-कभी ऐसा प्रतीत होता है कि एक दृश्य अधिक हो सकता है। उदाहरण के लिए, हजारों चक्कर, पर्यावरण मानचित्रण, टक्कर मानचित्रण, और अन्य जटिल पिक्सेल शेड्स के साथ एक घूर्णन चायदानी जो एक साथ पूरी प्रसंस्करण के लिए एक साथ प्रदान की जाती है। कई बार ये चायदानी डेमो किसी विशेष प्रभाव को दिखाने के लिए होते हैं। जब हमेशा पूर्ण प्रदर्शन लक्ष्य नहीं होता है तो वे हमेशा GPU का सर्वोत्तम उपयोग नहीं कर सकते हैं।
एक खेल में आप समान प्रभाव देख सकते हैं, लेकिन वे आमतौर पर फ्रेम दर को अधिकतम करने के प्रयास में एक समझौता फैशन में किया जाता है। ये अनुकूलन आपके खेल में दिखाई देने वाली हर चीज़ तक विस्तृत होते हैं। मुद्दा यह बन जाता है, "हम कम से कम प्रसंस्करण शक्ति के साथ सबसे शानदार और यथार्थवादी दृश्य कैसे बना सकते हैं?" यह वही है जो गेम प्रोग्रामर्स को कुछ बेहतरीन ऑप्टिमाइज़र बनाता है।
दिए गए सभी योग्य और अच्छे उत्तरों से, वह मामला अभी भी गायब है: विंडोज का सीपीयू उपयोग काउंटर बहुत विश्वसनीय नहीं है। मुझे लगता है कि यह साधारण चायदानी डेमो बस बेकार लूप में रेंडरिंग फ़ंक्शन को कॉल करता है, बफर स्वैप पर अवरुद्ध करता है।
अब विंडोज सीपीयू उपयोग काउंटर केवल यह देखता है कि प्रत्येक प्रक्रिया के भीतर कितना सीपीयू समय खर्च किया जाता है, लेकिन यह नहीं कि यह सीपीयू समय कैसे उपयोग किया जाता है। जोड़ने का प्रयास करें
Sleep(0);
रेंडरिंग फंक्शन से लौटने के बाद, और तुलना करें।
इसके अलावा, कम्प्यूटेशनल पावर को बचाने के लिए एक कलात्मक दृष्टिकोण से कई कई चालें हैं। कई खेलों में, विशेष रूप से पुराने वाले, छायाएं पूर्वनिर्मित होती हैं और नक्शे के बनावट में "बेक" होती हैं। कई बार, पेड़ों और विशेष प्रभावों जैसी चीजों का प्रतिनिधित्व करने के लिए कलाकारों ने विमानों (दो त्रिकोणों) का उपयोग करने की कोशिश की, जब यह ज्यादातर समान दिखते थे। खेल में कोहरा दूर की वस्तुओं को प्रदान करने से बचने का एक आसान तरीका है, और अक्सर, खेल में दूर, मध्य और निकट के विचारों के लिए हर वस्तु के कई संकल्प होते हैं।
किसी भी उत्तर का मूल यह होना चाहिए - 3D इंजन जो परिवर्तन करते हैं वे ज्यादातर परिवर्धन और गुणन (रैखिक बीजगणित) (कोई शाखा या कूदता) में निर्दिष्ट नहीं होते हैं, एक एकल फ्रेम के ड्राइंग का संचालन अक्सर एक तरह से निर्दिष्ट किया जाता है जिसमें एकाधिक इस तरह के ऐड-मुल का काम समानांतर में किया जा सकता है। GPU कोर बहुत अच्छा ऐड-मॉल है, और उनके पास दर्जनों या सैकड़ों ऐड-मुल कोर हैं।
सीपीयू को साधारण सामान - जैसे एआई और अन्य गेम लॉजिक के साथ छोड़ दिया जाता है।
GTA IV की तरह एक बड़ा बड़ा पीसी गेम मेरे CPU का 50% कैसे उपयोग कर सकता है और 60fps पर चल सकता है जबकि घूर्णन चायदानी @ 60fps का डीएक्स डेमो एक 30% का उपयोग करता है?
जबकि जीटीए डीएक्स डेमो की तुलना में अधिक कुशल होने की संभावना है, सीपीयू दक्षता को मापना इस तरह अनिवार्य रूप से टूट गया है। दक्षता को परिभाषित किया जा सकता है जैसे आप दिए गए समय के अनुसार कितना काम करते हैं। एक सरल प्रतिधारण: एक तार्किक सीपीयू प्रति एक धागा स्पॉन करें और उस पर एक सरल अनंत लूप चलने दें। आपको 100% CPU उपयोग मिलेगा, लेकिन यह कुशल नहीं है, क्योंकि कोई उपयोगी कार्य नहीं किया गया है।
यह भी एक उत्तर की ओर जाता है: कोई खेल कैसे कुशल हो सकता है? जब "महान बड़े खेल" की प्रोग्रामिंग होती है, तो सभी पहलुओं में खेल को अनुकूलित करने के लिए एक बड़ा प्रयास समर्पित होता है (जो आजकल आम तौर पर मल्टी-कोर आशावादी भी शामिल है)। डीएक्स डेमो के लिए, इसका बिंदु तेजी से नहीं चल रहा है, बल्कि अवधारणाओं का प्रदर्शन कर रहा है।
मुझे लगता है कि आपको सीपीयू के बजाय GPU के उपयोग पर एक नज़र डालनी चाहिए ... मुझे यकीन है कि ग्राफिक कार्ड जीटीए IV में चायदानी नमूने की तुलना में बहुत अधिक व्यस्त है (यह व्यावहारिक रूप से निष्क्रिय होना चाहिए)।
शायद आप इस मॉनिटर की तरह कुछ का उपयोग करने के लिए जाँच कर सकते हैं:
http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html
इसके अलावा फ्रैमरेट पर विचार करने के लिए कुछ है, हो सकता है कि चायदानी का नमूना पूरी गति से चल रहा हो (शायद 1000fps) और अधिकांश गेम मॉनिटर की ताज़ा आवृत्ति (लगभग 60fps) तक सीमित हैं।
Vsync पर जवाब को देखो; यही कारण है कि वे एक ही फ्रेम दर पर चल रहे हैं।
दूसरे, CPU एक खेल में अग्रणी है। एक सरल स्पष्टीकरण यह है कि मुख्य गेम लूप सिर्फ एक अनंत लूप है:
while(1) {
update();
render();
}
यहां तक कि अगर आपका खेल (या इस मामले में, चायदानी) बहुत कुछ नहीं कर रहा है तो भी आप अपने लूप में सीपीयू खा रहे हैं।
जीटीए में 50% सीपीयू "अधिक उत्पादक" है फिर डेमो में 30%, क्योंकि संभावना से अधिक यह बिल्कुल भी नहीं कर रहा है; लेकिन GTA विवरणों को अपडेट कर रहा है। यहां तक कि डेमो में "स्लीप (10)" जोड़ने से संभवतः एक टन तक सीपीयू गिर जाएगा।
अंत में GPU के उपयोग को देखें। डेमो शायद एक आधुनिक वीडियो कार्ड पर <1% ले रहा है जबकि जीटीए शायद गेम खेलने के दौरान बहुमत ले जाएगा।
संक्षेप में, आपके बेंचमार्क और माप सटीक नहीं हैं।
डीएक्स चायदानी डेमो उपयोगी काम करने वाले सीपीयू के 30% का उपयोग नहीं कर रहा है। यह व्यस्त-प्रतीक्षा है क्योंकि इसके पास करने के लिए और कुछ नहीं है।
मैं अवास्तविक श्रृंखला के बारे में जो कुछ भी जानता हूं उससे कुछ सम्मेलनों को एनकैप्सुलेशन की तरह तोड़ा जाता है। कोड को गेम के आधार पर बाईटेकोड या सीधे मशीन कोड में संकलित किया जाता है। इसके अलावा, वस्तुओं को एक जाल के रूप में प्रदान किया जाता है और पैक किया जाता है और बनावट, प्रकाश और छाया जैसी चीजों को पहले से निर्धारित किया जाता है जबकि शुद्ध 3 डी एनीमेशन के लिए इस वास्तविक समय की आवश्यकता होती है। जब खेल वास्तव में चल रहा होता है तो कुछ अनुकूलन भी होते हैं जैसे किसी वस्तु के केवल दिखाई देने वाले भागों को प्रस्तुत करना और केवल ऊपर जाने पर बनावट का विस्तार प्रदर्शित करना। अंत में, यह संभावना है कि वीडियो गेम एक निश्चित समय पर एक मंच से सर्वश्रेष्ठ प्राप्त करने के लिए डिज़ाइन किए गए हैं (उदा: Intelx86 MMX / SSE, DirectX, ...)।
मुझे लगता है कि यहां उत्तर का एक महत्वपूर्ण हिस्सा गायब है। अधिकांश उत्तर आपको "आपका डेटा पता है" बताते हैं। तथ्य यह है कि आपको उसी तरह और उसी डिग्री के महत्व के साथ, अपने को भी जानना चाहिए:
लेकिन , उस समय के शीर्ष पर, वर्तमान आधुनिक कंप्यूटरों के साथ, आप कभी भी एक वास्तविक 1080p वीडियो नहीं बना पाएंगे >> 30ftp (64 बिट्स में एक एकल 1080p छवि 15 000 Ko / 14.9 MB लेगी)। इसका कारण नमूना / परिशुद्धता के कारण है। एक वीडियो गेम कभी भी पिक्सेल, चित्र, डेटा, आदि ... के लिए एक दोहरी परिशुद्धता (64 बिट्स) का उपयोग नहीं करेगा ... बल्कि एक कम कस्टम परिशुद्धता (~ 4-8 बिट्स) का उपयोग करें और कभी-कभी कम परिशुद्धता उचित कम्प्यूटेशन की अनुमति देने के लिए प्रक्षेप तकनीकों के साथ rescaled होता है। समय।
अन्य तकनीकों के साथ-साथ डेटा को क्लिप करना भी है (दोनों OpenGL मानक और सॉफ्टवेयर कार्यान्वयन के साथ), डेटा संपीड़न, आदि यह भी ध्यान रखें, कि वर्तमान GPUs हार्डवेयर क्षमता की अवधि में वर्तमान CPU की तुलना में 300 गुना तेज हो सकते हैं। हालांकि, एक अच्छे प्रोग्रामर को 10-20x का कारक मिल सकता है, जब तक कि आपकी समस्या पूरी तरह से अनुकूलित न हो और पूरी तरह से समानांतर (विशेष रूप से कार्य समानांतर) हो।
अनुभव से, मैं आपको बता सकता हूं कि अनुकूलन एक घातीय वक्र की तरह है। इष्टतम प्रदर्शन तक पहुंचने के लिए, आवश्यक समय अविश्वसनीय रूप से महत्वपूर्ण हो सकता है।
इसलिए चायदानी पर वापस जाने के लिए, आपको यह देखना चाहिए कि ज्यामिति / बनावट और सबसे महत्वपूर्ण, विवरण (परिशुद्धता, नमूनाकरण, आदि) में ज्यामिति का प्रतिनिधित्व, नमूना और जीटीए 5 में क्या सटीकता के साथ देखा जाता है।