मैं डिफ़ॉल्ट रूप से उच्च प्रदर्शन GPU पर चलने के लिए अपना आवेदन कैसे निर्धारित कर सकता हूं?


12

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

Milcho

जवाबों:


7

NVIDIA के पास कुछ रणनीतियों को रेखांकित करने वाला एक दस्तावेज है जो आपके लिए उपयोगी हो सकता है: http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolurities.pdf - दुर्भाग्य से, एक जो मैं अन्यथा सुझाव देता हूं - NvOptimusEnablement निर्यात - केवल C ++ के लिए प्रलेखित है; सी # के साथ भी ऐसा करना संभव हो सकता है लेकिन किसी को जो वास्तव में जानता है उसे जानकारी के साथ झंकार करना होगा।

मुझे एएमडी के लिए कुछ भी समान नहीं है।

इसलिए दुर्भाग्य से ऐसा लगता है कि ऐसा करने का कोई विक्रेता-अज्ञेय तरीका नहीं है (यहां तक ​​कि प्रदर्शन उपकरणों की गणना भी आपको अपने ड्राइवर नियंत्रण पैनल के माध्यम से सेटिंग्स को मजबूर करने वाले उपयोगकर्ताओं की दया पर छोड़ देगी, जो उपयोगकर्ताओं को अधिकतम करने के लिए एक दुर्भाग्यपूर्ण प्रवृत्ति है। खेल जो पूरी तरह से विन्यास ग्राफिक्स सेटिंग्स के साथ नहीं आते हैं)। इस तरह की अनुपस्थिति में आपको एक रीडमी पर भरोसा करना पड़ सकता है और आशा है कि लोग वास्तव में इसे पढ़ेंगे!


+1: मुझे यह ऑप्टिमस NvOptimusEnablementट्रिक नहीं पता थी , लेकिन मेरे पास होनी चाहिए। ऐसा लगता है कि यह हाल की बात है (ड्राइवर 302.x +) धन्यवाद।
सीन मिडिलिचच

1
stackoverflow.com/questions/17458803/… एएमडी समकक्षों के बारे में उत्सुक किसी और के लिए, मैंने यह पूछा (एसओ के बाद से खेल-विशिष्ट नहीं)।
शॉन मिडिलडविच

1
आप अंतिम उपाय के रूप में, पी / इनवोक का उपयोग करके C # से C ++ फ़ंक्शन को कॉल कर सकते हैं।
ब्लूराजा - डैनी पफ्लुघोटे जुले

@ BlueRaja-DannyPflughoeft - यह C ++ फ़ंक्शन नहीं है; यह एक निर्यातित वैश्विक चर है।
मैक्सिमस मिनिमस

5

सामान्य तौर पर, आप नहीं कर सकते।

डुअल-जीपीयू ड्राइवर एकल इंटरफेस के पीछे दो जीपीयू को छुपाता है, इसलिए नाथन रीड की तरह के समाधान आम तौर पर अधिकांश उच्च गति / कम-शक्ति दोहरे जीपीयू सेटअप में काम नहीं करते हैं।

जीपीयू चयन को किसी तरह से चालक द्वारा नियंत्रित किया जाना चाहिए। NVIDIA ऑप्टिमस के साथ, आप आमतौर पर ऑप्टिमस प्रोफाइल को अपडेट करते हैं जो एप्लिकेशन को उन अनुप्रयोगों की सूची में जोड़ते हैं जो असतत GPU का उपयोग करते हैं, आमतौर पर EXE पर राइट-क्लिक करके और गुण पर क्लिक करके। आप कुछ बहुत विशिष्ट-से-ऑप्टिमस कॉल का भी उपयोग कर सकते हैं। m0101 के उत्तर के अनुसार। एएमडी सेटअप के साथ, यह पूरी तरह से अलग है।

अभी तक अन्य प्रणालियों पर, यह तय करने के लिए एक हार्डवेयर स्विच या एक ओएस फ्लैग है जो GPU सक्रिय है। फिर से, एप्लिकेशन का कोई नियंत्रण नहीं है जिस पर GPU का उपयोग किया जाता है।

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


आह, दिलचस्प। मैंने इन दोहरे-GPU सिस्टमों में से एक का उपयोग नहीं किया है, इसलिए मुझे नहीं पता था कि ड्राइवर दिखावा करते हैं कि वे समान हैं। आपको लगता है कि ड्राइवर किसी दिए गए ऐप के लिए GPU उपयोग के स्तर की निगरानी कर सकता है और यदि आवश्यक हो तो इसे उच्च-पूर्ण पर स्विच कर सकता है।
नाथन रीड 21

1
यह नहीं कर सकता। हार्डवेयर में अलग-अलग क्षमताएं हैं। कल्पना कीजिए कि यदि आप GPU से 2048 के अधिकतम बनावट आकार के साथ अधिकतम 1024, या किसी अन्य विशेषता के साथ स्विच करते हैं - तो आपका पूरा ऐप टूट जाएगा। अगर हर रास्ते में अधिक सक्षम GPU पर जा रहा है, तो बफ़र्स को माइग्रेशन (समय लेने और अवांछित फ्रेम अड़चन पैदा करने की आवश्यकता होगी) और शेड्स को recompilaton की आवश्यकता होगी। एप्लिकेशन को इस प्रक्रिया के प्रभारी होने और किसी भी स्विच से ऑप्ट इन या ऑप्ट आउट करने की आवश्यकता है। इसके लिए एपीआई वास्तव में अभी तक दुर्भाग्यपूर्ण नहीं है, दुर्भाग्य से।
शॉन मिडिलडविच

1
यह इस तथ्य से जटिल है कि उपयोगकर्ता अक्सर अपने लैपटॉप पर GPU स्विचिंग को ओवरराइड करना चाहते हैं, शायद बैटरी को बचाने के लिए। यह एक कारण है कि मैं ओएस पर जीपीयू-स्विचिंग को सौंपना पसंद करता हूं, क्योंकि यह लैपटॉप की शक्ति-स्थिति को भी जानता है।
नकली नाम

4

आपको सिस्टम पर जीपीयू की गणना करने में सक्षम होना चाहिए और जब आपका आवेदन शुरू हो जाता है, तो उसे चुनना होगा। आपने उल्लेख नहीं किया है कि आप किस API का उपयोग कर रहे हैं, लेकिन उदाहरण के लिए D3D11 में आप IDXGIFactory का उपयोग करेंगे :: EnumAdapters GPU की सूची प्राप्त करने और जिसे आप D3D11CreateDevice करना चाहते हैं उसे पास करने के लिए ।

DXGI आपको GPU के बारे में कुछ सीमित जानकारी दे सकता है, जैसे विवरण स्ट्रिंग, विक्रेता आईडी और डिवाइस आईडी। मुझे लगता है कि आप इस जानकारी का उपयोग यह बताने के लिए कर सकते हैं कि कौन सा जीपीयू उच्च-प्रदर्शन वाला है, लेकिन आपको जीपीयू के किसी प्रकार के डेटाबेस का निर्माण करना होगा, या अनुमान लगाने के लिए कुछ हेयूरिस्टिक्स का उपयोग करने का प्रयास करना होगा। या आप उपयोगकर्ता को स्टार्टअप पर उपयोग करने के लिए कौन सा GPU चुनने दे सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.