हम अभी भी GPU के बजाय CPU का उपयोग क्यों कर रहे हैं?


373

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


3
मुझे कैसे पता चलेगा कि कौन से उत्तरों में सही जानकारी है? क्या मुझे दूसरों के वोट के जवाब तक इंतजार करना चाहिए? मुझे लगता है कि मैं एक उत्तर स्वीकार करने में बहुत जल्दबाजी कर रहा था: O
ell

14
अभी कुछ हाल के उत्तर @ell हैं, जिनमें "गलत सूचना" नहीं है। वे धीरे-धीरे शानदार ढंग से डिजाइन किए गए StackExchange के कुशल बाजार तंत्र के कारण वोटों के साथ शीर्ष पर पहुंच रहे हैं ;-) मैं एक उत्तर स्वीकार करने से पहले थोड़ी देर प्रतीक्षा करने का सुझाव दूंगा। लगता है कि आप बहुत समझदारी से बस ऐसा कर रहे हैं। यह एक अच्छा सवाल है, वैसे। स्पष्ट प्रतीत हो सकता है, लेकिन यह बिल्कुल नहीं है। यह पूछने के लिए धन्यवाद!
ऐली केसलमैन

124
पूछने की तरह "अगर बोइंग 747 तेज और अधिक ईंधन कुशल है, तो हम अभी भी कार क्यों चलाते हैं"?
vartec

7
नहीं, क्योंकि यह RISC बनाम CISC नहीं है। यह अन्य कंप्यूटर विज्ञान के मूल सिद्धांतों में से एक है, थोड़ा प्रच्छन्न। यह "हम I / O प्रोसेसर पर केंद्रीय प्रोसेसर से काम क्यों छोड़ते हैं?"
JdeBP

5
@vartec: मुझे लगता है कि बसों और टैक्सी के बीच थोड़ा बेहतर सादृश्य हो सकता है। यदि चालीस लोग हैं जो सभी एक ही स्थान से एक ही स्थान पर जाना चाहते हैं, तो एक बस बहुत अधिक कुशल होगी। यदि चालीस लोग हैं, जिनकी वांछित उत्पत्ति और गंतव्य व्यापक रूप से बिखरे हुए हैं, तो भी एक एकल टैक्सी बस के रूप में अच्छी हो सकती है, और बस की लागत के लिए एक से अधिक टैक्सी हो सकती हैं।
सुपरकैट

जवाबों:


388

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


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

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

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

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

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

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


39
इस जवाब की तरह, मुझे लगता है कि इसका मुख्य कारण यह है कि हमारे पास इस तरह के समानांतर आर्किटेक्चर से निपटने के लिए अच्छी मेन स्ट्रीम प्रोग्रामिंग लैंग्वेज नहीं हैं। हमने मल्टी थ्रेडेड प्रोग्रामिंग को आगे बढ़ाने के लिए दशकों तक संघर्ष किया है, और लोग अभी भी कॉल कर रहे हैं, मल्टी थ्रेडिंग "बुराई" कर रहे हैं। इसके बावजूद कि मल्टी-कोर सीपीयू और जीपीयू एक वास्तविकता है, और हमें इससे निपटने के लिए नए प्रोग्रामिंग प्रतिमानों के साथ आना होगा।
सोरेन

वर्थ ने ध्यान दिया कि इंटेल लार्बी आर्किटेक्चर पर काम कर रहा है (वैसे भी बहुत लंबा) जो अनिवार्य रूप से एक बड़ी संख्या में x86 कोर के साथ एक चिप है।
क्रिस एस

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

3
"हमारे पास इस तरह के समानांतर आर्किटेक्चर से निपटने के लिए अच्छी मेन स्ट्रीम प्रोग्रामिंग लैंग्वेज नहीं हैं।" - Haskell, OCaml, स्कीम, F #, Erlang, और बहुत अधिक किसी भी अन्य कार्यात्मक प्रोग्रामिंग लैंगगॉउ को बहुत अच्छी तरह से मल्टीथ्रेडिंग के साथ सौदा करते हैं। मेरे द्वारा उल्लिखित सभी मुख्य धाराएं हैं।
ब्लूराजा - डैनी पफ्लुगुएफ्ट

1
@BlueRaja - हम इन भाषाओं से अवगत हैं, मुख्य धारा की आपकी परिभाषा मेरी से भिन्न होनी चाहिए :-)
सोरेन

252

सीपीयू की तुलना में जीपीयू इतना तेज क्या करता है?

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

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

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

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

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


23
यह शायद यहाँ सबसे अच्छा जवाब है। दो प्रतिमानों के बीच मूलभूत अंतरों को समझना महत्वपूर्ण है। सीपीयू से आगे निकलने के लिए GPUs, आज के वर्कलोड को देखते हुए, इसका मतलब है कि GPU को CPU में बदलना चाहिए। और इस प्रकार प्रश्न का उत्तर है।
सर्फस

2
इसके लिए +1 सबसे अच्छा जवाब है। यह और स्वीकृत उत्तर दोनों सही हैं, लेकिन यह बहुत स्पष्ट रूप से समझाता है।

मुझे आश्चर्य है कि इस थ्रेड में किसी ने भी GPU को डेटा भेजने के ओवरहेड का उल्लेख नहीं किया है - PCI-Express बसों पर सीमित बैंडविड्थ सीपीयू पर प्रदर्शन किए जाने की तुलना में GPU पर कुछ समानांतर संचालन करता है। एक साधारण मामला देखा जा सकता है जहां एक एफएफटी के आकार में भिन्नता ने डेटा भेजने के ओवरहेड, संदर्भ स्थापित करने, पीछे पढ़ने के परिणाम के कारण जीपीयू बनाम सीपीयू पर प्रदर्शन में महत्वपूर्ण अंतर किया है: stackoverflow.com/a/8687732/303612 सीपीयू पर इन-कैश के छोटे ऑपरेशन किए जा सकते हैं, और मेमोरी बैंडविड्थ वर्तमान पीसीआई-ई आर्किटेक्चर से बहुत बेहतर है
डॉ। एंड्रयू बर्नेट-थॉम्पसन

1
@ Dr.AndrewBurnett-Thompson: ऐसा इसलिए है क्योंकि यह सवाल अप्रासंगिक है। वर्तमान में, GPU को एक सहायक प्रसंस्करण इकाई माना जाता है, इसीलिए / GPU से डेटा को स्थानांतरित करना आवश्यक और महंगा है। यदि हम GPU को प्रथम श्रेणी के प्रसंस्करण इकाई के रूप में मानते हैं, तो मुख्य मेमोरी और GPU मेमोरी के बीच डेटा को मार्शल करने की कोई आवश्यकता नहीं होगी।
रेयान

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

75

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

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

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

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

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

* कुछ GPU दोहरे परिशुद्धता अंकगणित में धीमा नहीं होते हैं, जैसे कि NVidia की Quadro या Tesla लाइनें (Fermi जनरेशन या नई), या AMD की FirePro लाइन (GCN पीढ़ी या नई)। लेकिन ये ज्यादातर उपभोक्ताओं की मशीनों में नहीं हैं।


@ सिकदा: क्या आपके पास इसके लिए कोई संदर्भ है? किसी भी मामले में, भले ही वह सच हो, यहां तक ​​कि हाल ही में हार्डवेयर भी उस मामले में अच्छा प्रदर्शन नहीं कर रहा है। (उदाहरण के लिए एक सीपीयू पर अधिक संपूर्ण लाभ नहीं होगा - और बिजली की खपत में कमी)
बिली

3
हां, जैसा कि आपने फरमा उपकरणों (CUDA 4.0 और sm_20 के साथ) कहा, अप्रत्यक्ष कूद (और इसलिए C ++ वर्चुअल तरीके, इनहेरिटेंस आदि) का समर्थन करते हैं।
एंग्री लेट्यूस

544 GigaFLOPS से $ 300 2 वर्ष पुराना GPU धीमा है?
बेन वोइगट

2
@ बान: आपको केवल डेटा-समानांतर अनुप्रयोगों में उस तरह का प्रदर्शन मिलता है। सामान्य अनुक्रमिक ऑपरेशन एक पूरे अलग-अलग बॉलगेम हैं। (कि केवल 1600 में उस चिप पर सभी 1600 कोर के साथ समानांतर में चल रहा है, अनिवार्य रूप से एक ही निर्देश बार-बार चल रहा है ... और यहां तक ​​कि यह वास्तविक पूर्णता के बजाय सैद्धांतिक है)
बिली ओपल

@ बिली: लेकिन यह एल्गोरिदम के एक विशेष वर्ग पर सुस्ती है, डबल सटीक अंकगणित (जो आपने दावा किया है) पर सुस्ती नहीं है। (और सीपीयू आमतौर पर बेंचमार्क थ्रूपुट या तो हासिल नहीं करते हैं)
बेन Voigt

37

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

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

कुछ क्रियाओं के लिए, क्लोन बहुत अच्छे होते हैं जैसे कि फर्श को झाड़ू - वे प्रत्येक का एक हिस्सा स्वीप कर सकते हैं।

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


4
मैं भी कर सकता था ... दोनों?
केविन पैंको

22
@ केविन: हाँ, लेकिन आपको सीपीयू और जीपीयू दोनों के साथ एक कंप्यूटर की आवश्यकता होगी ! अगर होती तो ही ऐसी बात होती!
जोकिम सॉर

3
महान सादृश्य। यह याद रहेगा।
मेयो

23

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

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

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

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


मुझे लगता है कि अधिकांश आधुनिक सीपीयू 2, 4, या 8 चीजों को एक साथ करने के लिए डिज़ाइन किए गए हैं।
danielcg

@ danielcg25: और अधिकांश आधुनिक जीपीयू को 256, 512, 1024 चीजों को एक साथ करने के लिए डिज़ाइन किया गया है (GTX 680 में 1536 CUDA कोर है)। प्रत्येक व्यक्ति सीपीयू कोर एक अलग इकाई है, लेकिन यह एक GPU के बारे में सच नहीं है।
फॉशी

@ danielcg25: मैं जागरूक हूं, लेकिन एक मौलिक (यद्यपि जानबूझकर) उत्तर की गलतफहमी के साथ एक टिप्पणी हानिकारक हो सकती है अगर कोई भी इसे पहले से ही विषय को जानने के बिना पढ़ रहा था। इस मायने में "गधा होना" वास्तव में एसई की सराहना नहीं है क्योंकि यह सिग्नल को कम करता है: शोर अनुपात।
फिश

मैं बस कुछ जानकारी प्रदान कर रहा था। आजकल अधिकांश कंप्यूटर वास्तव में एक बार में 2-8 चीजों को संसाधित करने में सक्षम हैं। कुछ प्रोसेसर इससे भी ज्यादा कर सकते हैं। यह अभी भी जीपीयू के करीब नहीं आता है जो एक बार में 100 चीजें करते हैं।
danielcg

@ danielcg25: यह एक अलग तरह का प्रसंस्करण है, हालांकि, यह वही है जो सवाल है। प्रत्येक सीपीयू कोर प्रभावी रूप से अलग है, अपने स्वयं के डेटा और अपनी प्रक्रियाओं के साथ काम कर रहा है। प्रत्येक सीपीयू कोर एक अलग, हर दूसरे को अलग कार्य करता है, और वे रैखिक रूप से ऊपर की ओर स्केल नहीं करते हैं - एक ऑक्टो-कोर दोगुना उपयोगी नहीं है क्योंकि एक दोहरे कोर दोहरे कोर के रूप में उपयोगी नहीं है। दूसरी ओर, GPU कोर, डेटा के विभिन्न टुकड़ों में एक ही कार्य करता है, और बड़े पैमाने पर करता है। यह स्पष्ट है कि मल्टी-कोर सीपीयू मौजूद हैं, लेकिन यह एक ही बात नहीं है
फोशी

14

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

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

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


एक गिरावट क्यों?
जकज

3
मुझे लगता है कि अंतिम पंक्ति है, क्योंकि यह केवल झूठी है। वास्तव में, मैं केवल एक x86- केवल मुख्यधारा ओएस के बारे में सोच सकता हूं; और यहां तक ​​कि एक को अल्फा और एआरएम प्रोसेसर में पोर्ट किया गया है, बस फिलहाल व्यावसायिक रूप से पेश नहीं किया गया है।
जेवियर

ठीक। मुख्य धारा ऑपरेटिंग सिस्टम समर्थन के बारे में मेरी राय को हटा दिया गया था जो नए आर्किटेक्चर में परिवर्तन में बाधा बन रहा था। उत्तर के दायरे में नहीं हो सकता है।
jjj

11

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

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

  • GPU निष्पादन इकाइयाँ कुशलता से शाखा नहीं लगा सकती हैं।

  • GPU निष्पादन इकाइयाँ उसी तरह से हार्डवेयर व्यवधान का समर्थन नहीं करती हैं जिस प्रकार CPUs करते हैं।

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

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

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

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


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

6

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

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

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

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

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

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

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

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


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

1
मैंने आपके लिए इसे ठीक कर दिया है, और एक लिंक भी जोड़ा है।
bwDraco

5

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

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


4

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

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

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


1
मुझे लगता है कि पाइपलाइन ओवरहेड एक मौलिक विवरण है जो उच्च रैंक वाले उत्तर गायब हैं।
स्टीव

2

वहाँ पर एक GPU होने का पूरा बिंदु सीपीयू को महंगे ग्राफिक्स गणना से राहत देना था जो उस समय कर रहा था।
उन्हें एक एकल प्रोसेसर के साथ जोड़कर फिर से वही होगा जहाँ सब शुरू हुआ था।


हाँ, एक कदम आगे, दो कदम पीछे।
1948 में Randolf Richardson

2

एक साधारण कारण के लिए: अधिकांश अनुप्रयोग बहु-थ्रेडेड / वेक्टरकृत नहीं होते हैं।

ग्राफिक कार्ड बहुत से मल्टी थ्रेडिंग पर भरोसा करते हैं, कम से कम अवधारणा में।

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

हालांकि AMD फ्यूजन के साथ, यह बदल जाएगा कि हमें प्रसंस्करण शक्ति का उपयोग करने की आवश्यकता कैसे होगी: या तो वेक्टर, या तो एक धागे के लिए तेजी से।


2

हम अभी भी CPU का उपयोग कर रहे हैं इसका कारण यह है कि CPU और GPU दोनों के अपने अद्वितीय फायदे हैं। ACM कम्प्यूटिंग सर्वे 2015 में स्वीकार किए गए मेरे निम्नलिखित पेपर देखें, जो 'CPU बनाम GPU डिबेट' से 'CPU-GPU सहयोगी कंप्यूटिंग' की ओर बढ़ने पर निर्णायक और व्यापक चर्चा प्रदान करता है।

सीपीयू-जीपीयू हेटरोजेनस कम्प्यूटिंग तकनीक का एक सर्वेक्षण


1

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


1

gpus अच्छे स्ट्रीम प्रोसेसर हैं। क्रमिक रूप से संख्याओं की एक लंबी सरणी को गुणा करने के रूप में आप स्ट्रीम प्रोसेसिंग के बारे में सोच सकते हैं। cpus में भी स्ट्रीम प्रोसेसिंग क्षमताएं हैं (इसे SIMD एक्सटेंशन कहा जाता है) लेकिन आप स्ट्रीम प्रोसेसिंग के रूप में सभी प्रोग्रामिंग लॉजिक को लागू नहीं कर सकते हैं, और कंपाइलर्स के पास बिटकॉइन बनाने का विकल्प होता है जो कि जब भी संभव हो, simd निर्देशों का उपयोग करते हैं।

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

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