सवाल हम अभी भी GPUs के बजाय CPUs का उपयोग क्यों कर रहे हैं?


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


355
2017-07-10 13:31


मूल


मुझे कैसे पता चलेगा कि कौन से उत्तरों में सही जानकारी है? क्या मुझे दूसरों को वोट जवाबों को ऊपर / नीचे तक इंतजार करना चाहिए? मुझे लगता है कि मैं जवाब स्वीकार करने में बहुत जल्दबाजी में था: ओ - ell
अभी कुछ हालिया उत्तरों @ell हैं, जिनमें "गलत जानकारी" नहीं है। आश्चर्यजनक रूप से डिज़ाइन किए गए स्टैक एक्सचेंज के कुशल बाजार तंत्र के कारण वे धीरे-धीरे वोटों के साथ शीर्ष पर बढ़ रहे हैं ;-) मैं जवाब स्वीकार करने से पहले थोड़ा अधिक इंतजार करना चाहता हूं। ऐसा लगता है कि आप बहुत बुद्धिमानी से ऐसा कर रहे हैं। वैसे, यह एक अच्छा सवाल है। शायद स्पष्ट प्रतीत हो सकता है, लेकिन यह बिल्कुल नहीं है। यह पूछने के लिए धन्यवाद! - Ellie Kesselman
पूछने की तरह "अगर बोइंग 747 तेज और अधिक ईंधन कुशल है, तो हम अभी भी कार क्यों चलाते हैं"? - vartec
नहीं, क्योंकि यह आरआईएससी बनाम सीआईएससी नहीं है। यह एक अन्य कंप्यूटर विज्ञान मौलिक सिद्धांतों में से एक है, थोड़ा छिपा हुआ है। आईटी इस "हम केंद्रीय प्रोसेसर से आई / ओ प्रोसेसर पर काम क्यों बंद कर देते हैं?"। - JdeBP
@vartec: मुझे लगता है कि बसों और टैक्सीकैब के बीच थोड़ा बेहतर सादृश्य हो सकता है। यदि चालीस लोग हैं जो सभी एक ही स्थान से उसी स्थान पर जाना चाहते हैं, तो बस अधिक कुशल होगी। यदि चालीस लोग हैं जिनकी वांछित उत्पत्ति और गंतव्य व्यापक रूप से बिखरे हुए हैं, यहां तक ​​कि एक टैक्सिकैब बस के रूप में उतना ही अच्छा हो सकता है, और बस की लागत के लिए कई टैक्सिकैब हो सकते हैं। - supercat


जवाब:


टीएल; डीआर उत्तर: जीपीयू के पास सीपीयू की तुलना में कहीं अधिक प्रोसेसर कोर होते हैं, लेकिन चूंकि प्रत्येक जीपीयू कोर सीपीयू कोर की तुलना में काफी धीमी गति से चलता है और आधुनिक ऑपरेटिंग सिस्टम के लिए आवश्यक सुविधाओं की आवश्यकता नहीं है, इसलिए वे रोजमर्रा की कंप्यूटिंग में अधिकांश प्रोसेसिंग करने के लिए उपयुक्त नहीं हैं। वे वीडियो प्रोसेसिंग और भौतिकी सिमुलेशन जैसे गणना-गहन संचालन के लिए सबसे उपयुक्त हैं।


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

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

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

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

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

फिर भी, पीसी ऑपरेटिंग सिस्टम और अनुप्रयोगों द्वारा किए गए कई कार्यों को अभी भी CPUs के लिए बेहतर अनुकूल है, और GPU का उपयोग करके प्रोग्राम को तेज़ करने के लिए बहुत अधिक काम की आवश्यकता है। चूंकि इतना मौजूदा सॉफ़्टवेयर x86 आर्किटेक्चर का उपयोग करता है, और क्योंकि GPU को विभिन्न प्रोग्रामिंग तकनीकों की आवश्यकता होती है और ऑपरेटिंग सिस्टम के लिए आवश्यक कई महत्वपूर्ण विशेषताओं को याद किया जाता है, इसलिए हर रोज कंप्यूटिंग के लिए CPU से GPU तक एक सामान्य संक्रमण बहुत मुश्किल होता है।


375
2017-07-10 14:00



इस उत्तर की तरह, मुझे लगता है कि मुख्य कारण यह है कि हमारे पास समानांतर आर्किटेक्चर से निपटने के लिए अच्छी मुख्य स्ट्रीम प्रोग्रामिंग भाषा नहीं है। हमने बहु थ्रेड प्रोग्रामिंग को आगे बढ़ाने के लिए दशकों तक संघर्ष किया है, और लोग अभी भी कॉल कर रहे हैं, बहु थ्रेडिंग "बुराई"। इसके बावजूद कि बहु-कोर CPUs और GPU एक वास्तविकता हैं, और इसके साथ निपटने के लिए हमें नए प्रोग्रामिंग प्रतिमानों के साथ आना होगा। - Soren
यह ध्यान देने योग्य है कि इंटेल काम कर रहा है Larrabee आर्किटेक्चर (जिस तरह से बहुत लंबा है) जो अनिवार्य रूप से चिप पर बड़ी संख्या में x86 कोर के साथ एक चिप है। - Chris S
हार्डवेयर कारणों पर चर्चा करने और एपीयू पर चर्चा करने और वे इसे कैसे बदलेंगे, इसके बारे में महान उत्तर। हालांकि, @ सोरेन सॉफ्टवेयर पक्ष पर एक बहुत अच्छा मुद्दा देता है। हकीकत में, यह हार्डवेयर मुद्दों, सॉफ़्टवेयर मुद्दों का संयोजन है, और तथ्य यह है कि सीपीयू काम करते हैं और जब कुछ काम करने के लिए जाना जाता है, तो लोगों को इसे बदलने के लिए मुश्किल होती है। - Nich Del
"हमारे पास समानांतर आर्किटेक्चर से निपटने के लिए अच्छी मुख्य स्ट्रीम प्रोग्रामिंग भाषा नहीं है।" - हास्केल, ओकैमल, स्कीम, एफ #, एरलांग, और मल्टीथ्रेडिंग के साथ बहुत अच्छा कोई अन्य कार्यात्मक प्रोग्रामिंग लैंगेज सौदा बहुत अच्छी तरह से। मैंने जो भी उल्लेख किया है वह मुख्यधारा है। - BlueRaja - Danny Pflughoeft
@ ब्लूराजा - हम इन भाषाओं से अवगत हैं, मुख्य धारा की आपकी परिभाषा मेरे से अलग होना चाहिए :-) - Soren


जीपीयू को सीपीयू की तुलना में इतना तेज़ बनाता है?

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

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

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

कारण हम अभी भी सीपीयू का उपयोग कर रहे हैं नहीं क्योंकि x86 सीपीयू आर्किटेक्चर का राजा है और विंडोज x86 के लिए लिखा गया है, कारण है कि हम अभी भी सीपीयू का उपयोग कर रहे हैं क्योंकि ओएस को ऐसा करने की ज़रूरत है, यानी निर्णय लेने के लिए, सीपीयू आर्किटेक्चर पर अधिक कुशलता से चल रहा है। एक ओएस को 100 प्रकार के विभिन्न प्रकार के डेटा देखने और विभिन्न निर्णय लेने की आवश्यकता होती है जो सभी एक-दूसरे पर निर्भर करते हैं; इस प्रकार की नौकरी कम से कम एक सिम वास्तुकला में समानांतर नहीं होती है।

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


246
2017-07-10 20:22



यह शायद यहां सबसे अच्छा जवाब है। दो प्रतिमानों के बीच मौलिक मतभेदों को समझना महत्वपूर्ण है। जीपीयू के लिए सीपीयू से आगे निकलने के लिए, आज के वर्कलोड पर विचार करना, अनिवार्य रूप से इसका मतलब है कि एक जीपीयू को सीपीयू में बदलना चाहिए। और इस प्रकार सवाल जवाब है। - surfasb
यह सबसे अच्छा जवाब होने के लिए +1 है। यह दोनों और स्वीकृत उत्तर सही हैं, लेकिन यह एक और अधिक स्पष्ट रूप से बताता है।
मुझे आश्चर्य है कि इस धागे में जीपीयू में डेटा भेजने के ओवरहेड का उल्लेख नहीं किया गया है - पीसीआई-एक्सप्रेस बसों पर सीमित बैंडविड्थ जीपीयू पर कुछ समानांतर संचालन करता है जो सीपीयू पर किए गए थे। एक साधारण मामला देखा जा सकता है जहां एफएफटी के आकार में भिन्नता ने डेटा भेजने के ओवरहेड के कारण जीपीयू बनाम सीपीयू पर प्रदर्शन में महत्वपूर्ण अंतर बनाया है, एक संदर्भ स्थापित करना, परिणाम पढ़ना: stackoverflow.com/a/8687732/303612 सीपीयू पर छोटे ऑपरेशन इन-कैश में किए जा सकते हैं, और मेमोरी बैंडविड्थ वर्तमान पीसीआई-ई आर्किटेक्चर से काफी बेहतर है - Dr. Andrew Burnett-Thompson
@ डॉ एंड्रयूबर्नेट-थॉम्पसन: ऐसा इसलिए है क्योंकि यह सवाल के लिए अप्रासंगिक है। वर्तमान में, जीपीयू को एक सहायक प्रसंस्करण इकाई माना जाता है, यही कारण है कि जीपीयू से डेटा ले जाना जरूरी और महंगा है। यदि हम जीपीयू को प्रथम श्रेणी प्रसंस्करण इकाई के रूप में देखते हैं, तो मुख्य मेमोरी और जीपीयू मेमोरी के बीच मार्शल डेटा की आवश्यकता नहीं होगी। - Lie Ryan
आशावादी नहीं, यह शून्य बैंडविड्थ ओवरहेड नहीं है। यदि एक जीपीयू आर्किटेक्चर वाला एक प्रोसेसर पूरे शो को चलाता है, तो कुछ भी नहीं है जिसे स्थानांतरित करने की आवश्यकता है, जीपीयू मेमोरी है मुख्य स्मृति पहले स्थान पर बात करने के लिए कोई स्थानांतरण ओवरहेड नहीं है क्योंकि कोई स्थानान्तरण नहीं है। यह वैसे ही कल्पना नहीं है, एएमडी के एपीयू एकीकृत मुख्य स्मृति के साथ एचएसए (हेटरोजेनस सिस्टम आर्किटेक्चर) का उपयोग करते हैं जो सीपीयू और जीपीयू के बीच शून्य प्रतिलिपि की अनुमति देता है। - Lie Ryan


जीपीयू की कमी:

  1. अप्रत्यक्ष स्मृति (!!!)
  2. स्मृति के अलावा अन्य उपकरणों को संबोधित करने का अर्थ (जैसे कीबोर्ड, प्रिंटर, द्वितीयक भंडारण, आदि)
  3. बीच में आता है

आपको आधुनिक ऑपरेटिंग सिस्टम जैसी कुछ भी लागू करने में सक्षम होने की आवश्यकता है।

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

संपादित करें: कृपया ध्यान दें कि यह प्रतिक्रिया 2011 में लिखी गई थी - जीपीयू तकनीक लगातार एक क्षेत्र बदल रही है। जब आप इसे पढ़ रहे हों, तो चीजें बहुत अलग हो सकती हैं: पी

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


75
2017-07-10 21:17



@Cicada: क्या आपके पास इसका संदर्भ है? किसी भी मामले में, भले ही यह सच है, यहां तक ​​कि हालिया हार्डवेयर भी उस मामले में अच्छा प्रदर्शन नहीं करेगा। (उदाहरण के लिए एक सीपीयू पर बहुत अधिक लाभ नहीं होगा - और एक बिजली खपत DISadvantage) - Billy ONeal
हां, जैसा आपने कहा था फर्मि डिवाइस (CUDA 4.0 और sm_20 के साथ), अप्रत्यक्ष कूद (और इसलिए सी ++ वर्चुअल विधियों, विरासत इत्यादि) का समर्थन करते हैं। - Angry Lettuce
544 गीगा फ्लॉप्स एक $ 300 2 साल पुराना जीपीयू धीमा है? - Ben Voigt
@ बेन: आपको डेटा-समांतर अनुप्रयोगों में केवल उस तरह के प्रदर्शन मिलते हैं। सामान्य अनुक्रमिक संचालन एक पूरी तरह से अलग ballgame हैं। (यह केवल उस चिप पर सभी 1600 कोरों के साथ समानांतर में चल रहा है, अनिवार्य रूप से वही निर्देश बार-बार चल रहा है ... और यहां तक ​​कि वास्तविक perf के बजाय सैद्धांतिक भी है) - Billy ONeal
@ बिली: लेकिन यह एक विशेष श्रेणी के एल्गोरिदम पर धीमा है, डबल सटीक अंकगणित (जो आपने दावा किया है) पर धीमा नहीं है। (और सीपीयू आमतौर पर बेंचमार्क थ्रुपुट प्राप्त नहीं करते हैं) - Ben Voigt


एक सीपीयू एक ऐसे कर्मचारी की तरह है जो सुपर फास्ट चला जाता है। एक जीपीयू क्लोन श्रमिकों के समूह की तरह होता है जो तेजी से जाते हैं, लेकिन सभी को एकजुट होने में बिल्कुल वही करना पड़ता है (अपवाद के साथ कि यदि आप चाहें तो कुछ क्लोन निष्क्रिय हो सकते हैं)

आप अपने साथी डेवलपर, एक सुपर फास्ट लड़के, या 100 तेज़ क्लोन के रूप में जो वास्तव में तेज़ नहीं होंगे, लेकिन सभी को एक ही कार्य को एक साथ करना होगा?

कुछ कार्यों के लिए, क्लोन बहुत अच्छे हैं उदा। फर्श को साफ़ करें - वे प्रत्येक इसका एक हिस्सा साफ़ कर सकते हैं।

कुछ कार्यों के लिए, क्लोन डूबते हैं, उदा। साप्ताहिक रिपोर्ट लिखें - सभी क्लोन, लेकिन एक क्लोन निष्क्रिय रहता है जबकि एक क्लोन रिपोर्ट लिखता है (अन्यथा आपको एक ही रिपोर्ट की 100 प्रतियां मिलती हैं)।


37
2017-07-11 15:39



क्या मैं भी ... दोनों हो सकता है? - Kevin Panko
@ केविन: हाँ, लेकिन आपको कंप्यूटर की आवश्यकता होगी दोनों एक सीपीयू तथा एक जीपीयू! अगर केवल ऐसी चीज थी! - Joachim Sauer
महान सादृश्य। यह याद होगा। - Mayo


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

आपका सीपीयू आपके जीपीयू की तुलना में अधिक हैश की गणना कर सकता है - लेकिन आपके सीपीयू को ऐसा करने में लगने वाला समय, आपका जीपीयू कई सौ हैश के माध्यम से हिस्सा हो सकता है। जीपीयू को एक ही समय में बहुत सी चीजें करने के लिए डिज़ाइन किया गया है, और सीपीयू एक समय में एक चीज करने के लिए डिज़ाइन किए गए हैं, लेकिन बहुत तेज़ हैं।

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

एक मामूली साइड नोट, हालांकि, अगर सीपीयू को स्क्रैप करना संभव था और केवल एक GPU है, तो क्या आपको नहीं लगता कि हम इसका नाम बदलेंगे? :)


23
2017-07-10 17:51



मुझे लगता है कि अधिकांश आधुनिक सीपीयू एक बार में 2, 4, या 8 चीजें करने के लिए डिज़ाइन किए गए हैं। - danielcg
@ danielcg25: और अधिकांश आधुनिक जीपीयू 256, 512, 1024 चीजें एक साथ करने के लिए डिज़ाइन किए गए हैं (जीटीएक्स 680 में है 1536 कूडा कोर)। प्रत्येक व्यक्तिगत सीपीयू कोर अवधारणात्मक रूप से एक विशिष्ट इकाई है, लेकिन यह एक GPU के लिए सच नहीं है। - Phoshi
@ danielcg25: मुझे पता है, लेकिन उत्तर की एक मौलिक (यद्यपि जानबूझकर) गलतफहमी के साथ एक टिप्पणी हानिकारक हो सकती है अगर कोई इसे पहले से ही विषय के बिना पढ़ रहा था। उस अर्थ में "गधे होने के नाते" वास्तव में एसई पर सराहना नहीं की जाती है क्योंकि यह सिग्नल को कम करता है: शोर अनुपात। - Phoshi
मैं बस कुछ जानकारी प्रदान कर रहा था। अधिकांश कंप्यूटर आजकल वास्तव में एक बार में 2-8 चीजों को संसाधित करने में सक्षम हैं। कुछ प्रोसेसर इससे भी ज्यादा कर सकते हैं। यह अभी भी जीपीयू के करीब नहीं आता है जो एक साथ 100 चीजें करता है। - danielcg
@ danielcg25: यह एक अलग तरह की प्रसंस्करण है, हालांकि, सवाल यही है। प्रत्येक सीपीयू कोर प्रभावी ढंग से अलग होता है, डेटा के अपने हिस्सों और इसकी अपनी प्रक्रियाओं के साथ काम करता है। प्रत्येक सीपीयू कोर एक-दूसरे के लिए एक अलग, अलग कार्य करता है, और वे रैखिक रूप से ऊपर की ओर स्केल नहीं करते हैं - एक ऑक्टो-कोर क्वाड कोर के रूप में दो बार उपयोगी नहीं होता है जो दोहरी कोर के रूप में दो बार उपयोगी नहीं होता है। दूसरी ओर, जीपीयू कोर, डेटा के विभिन्न टुकड़ों में एक ही कार्य करते हैं, और रैखिक रूप से पैमाने पर करते हैं। यह स्पष्ट है कि बहु-कोर CPU मौजूद हैं, लेकिन यह वही बात नहीं है। - Phoshi


क्या आप वास्तव में पूछ रहे हैं हम CPU में आर्किटेक्चर की तरह GPU का उपयोग क्यों नहीं कर रहे हैं?

जीपीयू ग्राफिक्स कार्ड का सिर्फ एक विशेष सीपीयू है। हम GPU गैर ग्राफिक्स गणना को उधार देते हैं क्योंकि सामान्य उद्देश्य सीपीयू समानांतर और फ़्लोटिंग पॉइंट निष्पादन में समान नहीं है।

हम वास्तव में विभिन्न (अधिक GPU-ish) CPU आर्किटेक्चर का उपयोग कर रहे हैं। जैसे नियगारा प्रोसेसर काफी मल्टीटास्किंग हैं। स्पार्क टी 3 512 समवर्ती धागे चलाएगा।


14
2017-07-10 17:57



एक डाउनवोट क्यों? - jkj
मुझे आखिरी पंक्ति का अनुमान है, क्योंकि यह बस झूठा है। असल में, मैं केवल एक x86- केवल मुख्यधारा के ओएस के बारे में सोच सकता हूं; और यहां तक ​​कि उसे अल्फा और एआरएम प्रोसेसर को पोर्ट किया गया है, इस समय वाणिज्यिक रूप से पेश नहीं किया गया है। - Javier
ठीक। मुख्यधारा के ऑपरेटिंग सिस्टम समर्थन के बारे में मेरी राय के आखिरी खंड को हटा दिया गया है जो नए आर्किटेक्चर में बदलाव में बाधा डालता है। जवाब के दायरे में नहीं हो सकता है। - jkj


मैं यहां बहुत गलत हो सकता हूं, और इस विषय पर बहुत कम या कोई अधिकार नहीं बोल रहा हूं, लेकिन यहां जाता है:

  • मेरा मानना ​​है कि प्रत्येक जीपीयू निष्पादन इकाइयों ("कोर") में एक सीपीयू की तुलना में बहुत सीमित पता स्थान होता है।

  • जीपीयू निष्पादन इकाइयां कुशलता से ब्रांचिंग से निपट नहीं सकती हैं।

  • जीपीयू निष्पादन इकाइयां सीपीयू के समान तरीके से हार्डवेयर इंटरप्ट का समर्थन नहीं करती हैं।

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

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

ये "डेटा के ब्लॉक" एक धारा का हिस्सा हो सकते हैं, जैसे किसी गेम की स्टेट टेबल से चरम की सूची, डिस्क से एमपीईजी डेटा इत्यादि।

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


11
2017-07-10 15:55



शाखा भविष्यवाणी अनुकूलन के बारे में अच्छा बिंदु - मैंने कभी ऐसा नहीं माना होगा, लेकिन आप सही हैं। - Jimmy Breck-McKye


ये है कुछ भी तो नहीं घड़ी की गति या उद्देश्य के बारे में। वे सभी कार्यों को पूरा करने में समान रूप से अधिक सक्षम हैं; हालांकि कुछ कुछ कार्यों के लिए थोड़ा बेहतर अनुकूल हैं।

वहां एक था बहुत इस बारे में पुरानी तर्क है कि क्या बहुत सारे गूंगा कोर या बहुत स्मार्ट कोर के छोटे समूह के लिए बेहतर है या नहीं। यह 80 के दशक में आसानी से वापस चला जाता है।

एक सीपीयू के अंदर कई संभावित गणनाएं की जा सकती हैं। स्मार्ट कोर एक ही समय में कई अलग-अलग गणना करने में सक्षम होते हैं (जैसे बहु-कोर की तरह, लेकिन नहीं, यह जटिल है; देखें निर्देश-स्तर समांतरता)। एक स्मार्ट कोर एक ही समय में कई गणना कर सकता है (जोड़ें, घटाएं, गुणा करें, विभाजित करें, मेमोरी ऑपरेशन) लेकिन एक समय में केवल एक ही; इस वजह से, वे शारीरिक रूप से बड़े होते हैं (और इसलिए अधिक महंगा) तो डम्बर कोर।

एक गूंगा कोर बहुत छोटा होता है और इसलिए एक चिप में अधिक जोड़ा जा सकता है लेकिन कई समसामयिक गणना करने में सक्षम नहीं हैं। कई गूंगा कोर और कुछ स्मार्ट कोर के बीच एक बढ़िया संतुलन है।

मल्टी-कोर आर्किटेक्चर ग्राफिक्स के साथ अच्छी तरह से काम करते हैं क्योंकि गणना आसानी से सैकड़ों कोरों पर विभाजित हो सकती है, लेकिन यह कोड की गुणवत्ता पर भी निर्भर है और क्या अन्य कोड एक गणना के परिणाम पर निर्भर है।

यह है एक बहुत इससे अधिक जटिल सवाल दिखाई दे सकता है। अधिक जानकारी के लिए, सीपीयू डिज़ाइन के बारे में इस आलेख को पढ़ें:

आधुनिक माइक्रोप्रोसेसर - एक 90 मिनट गाइड

http://www.lighterra.com/papers/modernmicroprocessors/


6
2017-07-12 04:36



कृपया गरीब व्याकरण और उपरोक्त में उपयोग की जाने वाली सामान्य सब-पैरा लेखन शैली में क्षमा करें, मेरे पास कॉफी नहीं है। यह एक काफी जटिल अवधारणा है और शामिल लिंक वह जगह है जहां आपको और अधिक समझना है तो आपको जाना चाहिए। मेरा बुरा स्पष्टीकरण नहीं - Silverfire
मैंने इसे आपके लिए तय कर लिया है, और एक लिंक भी जोड़ा है। - bwDraco


मैं एक सिंटेक्टिक बिंदु को झुकाव करना चाहता हूं: सीपीयू और जीपीयू शब्द कार्यात्मक नाम हैं जो स्थापत्य नाम नहीं हैं।

यदि एक कंप्यूटर जीपीयू का मुख्य प्रोसेसर के रूप में उपयोग करना था, तो यह आर्किटेक्चरल और डिज़ाइन के बावजूद "केंद्रीय प्रसंस्करण इकाई" (सीपीयू) बन जाएगा।


5
2017-07-15 11:44





यह ध्यान रखना महत्वपूर्ण है कि आर्किटेक्चर स्पेस में कोई जादुई विभाजन रेखा नहीं है जो एक प्रोसेसर को "केंद्रीय" एक और दूसरा "ग्राफिक्स" बनाता है। (ठीक है, कुछ जीपीयू पूरी तरह से सामान्य होने के लिए बहुत अपंग हो सकते हैं, लेकिन वे लोग नहीं हैं जिनके बारे में हम यहां बात कर रहे हैं।)

भेद यह है कि वे बोर्ड पर कैसे स्थापित होते हैं और उन्हें क्या कार्य दिया जाता है। बेशक, हम मुख्य डेटा प्रेमी के लिए एक सामान्य प्रयोजन प्रोसेसर (या सामान्य प्रयोजन प्रोसेसर का सेट) का उपयोग करते हैं, और चीजों (जैसे ग्राफिक्स) के लिए एक विशेष, समांतर, गहराई से पाइप-लाइन वाली इकाई का लाभ उठा सकते हैं ताकि वे इसका लाभ उठा सकें।

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


4
2017-07-10 14:57



मुझे लगता है कि पाइपलाइन ओवरहेड एक मौलिक विवरण है जो उच्च रैंक वाले उत्तरों गुम हैं। - Steve