कितने प्रत्यक्ष / कम्प्यूट / कॉपी क्यू सार्थक हैं?


11

DirectX 12 या तो ग्राफिक्स ("डायरेक्ट" कहा जाता है) के लिए कमांड कतार को उजागर करता है, कार्यों की गणना या कॉपी करता है। प्रदान की गई कार्यक्षमता के संदर्भ में, प्रत्येक एक निम्नलिखित में से एक सुपर-सेट है। विनिर्देश कहा गया है कि आदेश कतारों समवर्ती डिवाइस के द्वारा निष्पादित किया जा सकता। हालांकि, एपीआई किसी भी तरह से कमांड कतार की संख्या को सीमित नहीं करता है (कम से कम मुझे कोई सीमा नहीं है)।

जाहिर है, विभिन्न विक्रेताओं यह बहुत अलग संभाल:

  • इंटेल एक हालिया प्रस्तुति (स्लाइड 23) में बताता है कि वर्तमान में उनके GPU समानांतर में ग्राफिक्स और कम्प्यूट को संभालने में सक्षम नहीं हैं और कॉपी इंजन में एक कमजोर प्रवाह है। वे कई ग्राफिक्स / कम्प्यूट कतारों के उपयोग के खिलाफ सलाह देते हैं।
  • एएमडी मेंटल और वर्तमान जीन कंसोल के साथ शुरू होने वाली कतारों / "अतुल्यकालिक रंगों" के उपयोग का विज्ञापन करने के लिए एएमडी ने बहुत पहले शुरू किया था। कुछ डेवलपर्स ( उदाहरण ) भी हैं जो समानांतर में गणना और ग्राफिक्स कार्यों को निष्पादित करके महत्वपूर्ण प्रदर्शन लाभ की पुष्टि करते हैं।
  • एनवीडिया के बारे में हाल ही में कुछ उपद्रव हुआ है जो हार्डवेयर में अतुल्यकालिक छायादार का समर्थन नहीं करता है: अलग-अलग ग्राफिक्स और कंप्यूट कतार का उपयोग करके एक बार चीजों को धीमा करने के लिए लगता है जो चालक अनुकरण का संकेत देता है। दूसरी ओर, समानांतर कॉपी ऑपरेशन को बहुत लंबे समय से CUDA द्वारा समर्थित किया गया है, जो यह स्पष्ट करता है कि DMA इंजन स्वतंत्र रूप से काम कर सकता है।

क्या रनटाइम पर निर्णय लेने का कोई तरीका है यदि एक के बजाय कई कमांडक्यूएल के लिए कमांडलिस्ट को प्रतिबद्ध करना सार्थक है? (यह देखते हुए कि पूर्व के मामले में इंजीनियरिंग-ओवरहेड शामिल नहीं है)

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


1
मुझे नहीं लगता कि फिलहाल इस तरह का निर्णय लेने का कोई सार्थक तरीका है कि जीपीयू बनाने वाले को जाँचने से अलग रखा जाए। अंततः "एक साथ कई कतारों से हार्डवेयर निष्पादित कर सकते हैं" की तुलना में अधिक कारक हैं, और उन विवरणों को डी 3 डी 12 सार। वास्तव में डी 3 डी 12 हार्डवेयर के बीच भी अंतर नहीं करता है जो कतारों को समवर्ती रूप से निष्पादित कर सकता है और जो इसे क्रमिक रूप से कर सकते हैं, डॉक्स सिर्फ यह कहते हैं कि उनका अमूर्त समवर्ती निष्पादन की अनुमति देता है
एमजेपी

1
अच्छा प्रश्न ! मुझे यह भी लगता है कि समवर्ती और छायांकन को निष्पादित करने के लिए पूर्ण लाभ प्राप्त करना विशेष होगा। शायद लाभ उन्हीं तथ्यों की बदौलत हो सकता है जो हाइपरथ्रेडिंग को किसी भी तरह तेज कर देते हैं। जब कुछ इकाइयाँ दूसरी कतार के लिए व्यस्त होती हैं तो इंटरलेविंग ऑपरेशन। जैसे कि बनावट इकाइयाँ, जो कंप्यूट चरण द्वारा उपयोग नहीं की जाती हैं, जो स्वयं FPU या DPU को रोकती हैं, क्लॉगिंग करते हैं।
v.oddou

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

1
आप बस इस मामले के महत्व (वास्तव में महत्व) में थोड़ा वजन उठाना जानते हैं। PS4 SDK में एक बग है जो कि किसी भी अन्य कतार में कतार से बाहर निकलने की अनुमति नहीं देता है। 0. मुझे लगता है कि अगर यह इतना महत्वपूर्ण होता तो यह तेजी से तय हो जाता।
v.oddou

जवाबों:


1

वास्तविक प्लेटफ़ॉर्म के परीक्षण बेंचमार्किंग अनुक्रम के साथ अपने आवेदन को शिप करें। (मुझे लगता है कि कई सवालों के संभावित जवाब ...)

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

"... डिवाइस द्वारा कमांड कतार को समवर्ती रूप से निष्पादित किया जा सकता है ..."

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

हार्डवेयर पर्याप्त रूप से वूडू है क्योंकि यह हमारे लिए डेवलपर्स है।


AMD की GCN ग्राफिक्स निष्पादित करेगी और समवर्ती रूप से गणना करेगी, जब दोनों ग्राफिक्स कतार पर जारी किए जाते हैं, लेकिन आम तौर पर कई कमांड बफ़र्स में नहीं होते हैं (कई ड्रा कॉल स्केच भी हो सकते हैं)। ड्राइवर (या अनुप्रयोग - मुझे लगता है कि डीएक्स 12 या वल्कन में) डेटा निर्भरता के लिए जांच करनी चाहिए और यदि आवश्यक हो तो ड्रॉ (ग्राफिक्स) और प्रेषण (गणना) के बीच ब्लॉक करें। यदि आप गणना करते हैं कि ग्राफिक्स से वास्तव में अतुल्यकालिक है (जैसे कि अगले फ्रेम के लिए भौतिकी), तो कई कमांड कतार उपयोगी होगी, लेकिन मुझे इसके साथ कोई प्रत्यक्ष अनुभव नहीं है।
डैनियल एम गेसल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.