लोग अधिक विशिष्ट चिप के बजाय उच्च-प्रदर्शन संगणना के लिए GPU का उपयोग क्यों करते हैं?


105

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

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

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

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

संपादित करें:

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

मैंने केवल यह देखा कि ऐसे उपकरणों की मांग है जो जल्दी से समानांतर गणना कर सकते हैं। मैं सोच रहा था कि ऐसा क्यों लगता है कि इस तरह की डिवाइस ग्राफिक्स प्रोसेसिंग यूनिट है, इस उद्देश्य के लिए डिज़ाइन किए गए डिवाइस के विपरीत।


66
क्योंकि वे इस प्रकार की चीज़ के लिए विशिष्ट हैं ; यह मूल रूप से एक ही प्रकार का गणित है। और एनवीडिया ने लोगों के लिए इस प्रकार के बड़े पैमाने पर समानांतर क्रंचिंग करने के लिए जीपीयू-केवल बोर्ड का निर्माण और बिक्री की है।
3

7
ध्यान रखें कि हमारे पास चिप्स में विशेष "इकाइयां" हैं। एईएस सीपीयू पर हार्डवेयर (मुझे लगता है) में किया जाता है। AVX को हार्डवेयर में भी लागू किया जाता है। हालाँकि, आप कहाँ रुकते हैं? चिपमेकर को यह नहीं पता होता है कि आपको क्या चाहिए और अधिकांश लोगों के पास अपने विशिष्ट कार्य के लिए तैयार किए गए चिप्स को रखने की क्षमता (तकनीकी या वित्तीय) नहीं है। ग्राफिक्स कार्ड हैं - जैसा कि अन्य ने कहा - एक प्रकार की विशेष वास्तुकला, जो कुछ कार्यों के लिए अच्छी तरह से उधार देती है। वे सब कुछ के लिए अच्छे नहीं हैं - लेकिन कुछ विशिष्ट कार्यों के लिए और इस प्रकार वहां उपयोग किया जाता है।
डेट्रेलसीएम

4
एक अधिक सटीक सादृश्य 100-मीटर चौड़ी खेती के साथ बॉक्स प्रशंसकों को बदल देगा।
मोसेबॉयस

6
मेरा पीसी पहले से ही GPU का उपयोग करने के लिए तैयार है, एक समर्पित चिप का डिजाइन और निर्माण मुझे लाखों लोगों को वापस सेट करेगा।
प्लाज़्मा एचएच

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

जवाबों:


109

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


एक आधुनिक जीपीयू को मुख्य रूप से कुछ अतिरिक्त ग्राफिक्स हार्डवेयर (और कुछ फिक्स्ड-फंक्शन एक्सेलेरेटर, जैसे एन्कोडिंग और डिकोडिंग वीडियो के लिए) स्ट्रीम स्ट्रीम के रूप में देखा जा सकता है । GPGPU प्रोग्रामिंग इन दिनों विशेष रूप से इस उद्देश्य के लिए डिज़ाइन किए गए APIs (OpenCL, Nvidia CUDA, AMD APP) का उपयोग करता है।

पिछले एक या दो दशक में, GPU एक फिक्स्ड-फंक्शन पाइपलाइन (केवल बहुत सारे ग्राफिक्स) से एक प्रोग्रामेबल पाइपलाइन तक विकसित हो गया है ( shaders आपको कस्टम निर्देश लिखने की अनुमति देता है) OpenCL जैसे अधिक आधुनिक APIs जो बिना shader corder को डायरेक्ट एक्सेस प्रदान करते हैं ग्राफिक्स पाइपलाइन के साथ।

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

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


मूल रूप से, विकल्प नीचे आते हैं:

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

16
ASICs भी समझ में आता है जब कंप्यूटिंग शाब्दिक रूप से स्वयं के लिए भुगतान करता है (क्रिप्टो माइनिंग)
शाफ़्ट फ्रीक

4
दरअसल, FPGA अक्सर GPU की तुलना में खराब होते हैं। समस्या यह है कि एफपीजीए बहुत लचीले हैं; वे कई विभिन्न कार्यों को लागू कर सकते हैं। हालांकि, गणना आम तौर पर गणित का एक रूप है, और वास्तव में बल्क सिर्फ दो ऑपरेशन हैं: इसके अलावा और गुणा (घटाव और विभाजन ऊपर के वेरिएंट हैं)। GPU दो, उन दो ऑपरेशनों में बहुत अच्छा है, FPGA की तुलना में बहुत अधिक है।
MSalters

19
आपको FPGA के बारे में अधिक स्पष्ट करने की आवश्यकता है। यह विचार कि "स्टेप अप" थोड़ा भ्रामक है। वे एक कदम बग़ल में अधिक हैं।
यक

6
अंतिम एक के उदाहरण के रूप में, Google के पास मशीन सीखने के लिए अपनी "टेन्सर प्रोसेसिंग यूनिट्स" हैं। वे किस डिग्री के लिए अनुकूलित हैं यह स्पष्ट नहीं है, लेकिन ASICs के रूप में वर्णित हैं।
म्बिग

4
@MSalters GPUs पर FPGAs के मुख्य विक्रय बिंदुओं में से एक प्रदर्शन / वाट है, जो कि अधिक महत्वपूर्ण हो रहा है क्योंकि डेटा सेंटर बिजली की दीवार से टकराना शुरू कर देते हैं (FPGAs आमतौर पर अधिक शक्ति कुशल होते हैं)। जहाँ तक गणित की बात है, FPGAs फिक्स्ड-पॉइंट और पूर्णांक अंकगणित में GPU की तुलना में हैं, और केवल फ्लोटिंग-पॉइंट गणित में पिछड़ जाते हैं।
विल्क्रॉफ्ट

32

मेरा पसंदीदा सादृश्य:

  • सीपीयू : एक पॉलीमैथ जीनियस। एक समय में एक या दो काम कर सकते हैं लेकिन वे चीजें बहुत जटिल हो सकती हैं।
  • GPU : कम कुशल श्रमिकों का एक टन। उनमें से प्रत्येक बहुत बड़ी समस्याएं नहीं कर सकता है, लेकिन सामूहिक रूप से आप बहुत कुछ कर सकते हैं। आपके प्रश्न के लिए, हाँ कुछ ग्राफिक्स ओवरहेड हैं, लेकिन मेरा मानना ​​है कि यह मामूली है।
  • ASIC / FPGA : एक कंपनी। आप कम कुशल श्रमिकों या प्रतिभाओं के एक जोड़े, या कम कुशल श्रमिकों और प्रतिभाओं के संयोजन को रख सकते हैं।

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

सीधे आपके सवाल पर: ASIC / FPGA पर एक GPU क्यों? आम तौर पर लागत। आज के फुले हुए GPU की कीमतों के साथ, यह अभी भी (आमतौर पर) आपकी आवश्यकताओं को पूरा करने के लिए ASIC डिजाइन करने की तुलना में GPU का उपयोग करने के लिए सस्ता है। जैसा कि @ user912264 बताते हैं, ऐसे विशिष्ट कार्य हैं जो ASICs / FPGAs के लिए उपयोगी हो सकते हैं। यदि आपके पास एक अद्वितीय कार्य है और आप पैमाने से लाभान्वित होंगे, तो एएसआईसी / एफपीजीए को डिजाइन करने के लिए इसके लायक हो सकता है। वास्तव में, आप विशेष रूप से इस उद्देश्य के लिए FPGA डिजाइन / डिजाइन / खरीद सकते हैं। यह उदाहरण के लिए उच्च परिभाषा टीवी में पिक्सेल को पावर करने के लिए किया जाता है।


7
टिप्पणियाँ वैसे भी जवाब देने के लिए नहीं हैं, और यह मेरे लिए एक उचित जवाब की तरह लगता है।
रायमुंड क्रमर

1
@BustheMogicMoose लेकिन यह जीनोमिक विश्लेषण के लिए एक कस्टम FPGA का उपयोग करने के लिए तेजी से परिमाण के आदेश हो सकते हैं, जिसमें एक GPU में समतुल्य कोड हो। जब आप परिणामों के इंतजार में बैठने के लिए वैज्ञानिकों को भुगतान कर रहे हैं, तो FPGA तेजी से अपने लिए भुगतान करता है।
doneal24

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

हाँ, मुझे लगता है कि वहाँ भी FPGA शौक किट हैं जो एक arduino रास्पबेरी-पाई की तुलना में हैं। मुझे अभी भी लगता है कि FPGAs की प्रोग्रामिंग कहीं अधिक महंगी है जो अधिक विकसित आर्किटेक्चर है।
BobtheMagicMoose

10

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

आर एंड डी लागत और एक विशेष चिप के लिए संभावित प्रदर्शन लाभ एक बनाने को सही ठहराने के लिए बहुत अधिक है।

उस ने कहा, मुझे एनवीडिया के बारे में पता है, विशेष रूप से सामान्य प्रयोजन कंप्यूटिंग के लिए कुछ जीपीयू डालने - उनके पास कोई वीडियो आउटपुट नहीं था - पहले से हटाए गए पिंजरों के साथ बॉक्स प्रशंसकों को बेचने जैसा थोड़ा सा।


9

बेशक, आप विशेष चिप्स का उपयोग कर सकते हैं, या तो ऊर्जा-दक्षता या गणना गति के लिए। मैं आपको बिटकॉइन माइनिंग का इतिहास बताता हूं:

  • बिटकॉइन नया है, उनके CPU के साथ geeks की खान।
  • बिटकॉइन कुछ नया है, स्मार्ट geeks उनके GPU के साथ मेरा है।
  • बिटकॉइन अब (थोड़े) प्रसिद्ध है, लोग FPGAs खरीदते हैं।
  • बिटकॉइन अब प्रसिद्ध है (2013), यहां तक ​​कि newbies कुशलता से खदान करने के लिए ASIC ("एप्लिकेशन विशिष्ट एकीकृत सर्किट") खरीदते हैं।
  • इनाम की बूँदें (समय-समय पर), यहां तक ​​कि पुराने एएसआईसी भी लाभदायक नहीं हैं।

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

TL; DR बेशक आप अधिक विशिष्ट चिप्स का उपयोग कर सकते हैं।


1
"बेशक आप अधिक विशिष्ट चिप्स का उपयोग कर सकते हैं" - लेकिन बिटकॉइन (SHA-256) के लिए विशेष चिप्स हैं, फिर लिटिकोइन (स्क्रिप्ट) के लिए और यह बहुत ज्यादा है। अन्य समस्याओं के लिए उच्च-प्रदर्शन कंप्यूटिंग हार्डवेयर मौजूद नहीं है। (यानी, वर्तमान उच्च अंत GPU से अधिक प्रदर्शन के साथ)
Agent_L

8

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

नतीजा अच्छा रहा और गेंद लुढ़कने लगी। GPU सामान्य मांग वाले स्थितियों में सहायता के लिए सामान्य-उद्देश्य संगणना का समर्थन करने के लिए केवल-ग्राफिक्स डिवाइस से गया था।

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

इसलिए निष्कर्ष रूप में, आपके द्वारा प्रस्तुत पहली व्याख्या सबसे सटीक है:

  • इस तरह के एक विकल्प को विकसित करना बहुत महंगा होगा जब GPU पहले से ही एक अच्छा विकल्प है।

जीपीयू जहां पहले से ही हैं, वे सभी के लिए आसानी से उपलब्ध हैं और उन्होंने काम किया।


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

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

5

विशेष रूप से, जीपीयू "कार्य समानता" के अर्थ में "कोर" नहीं हैं। अधिकांश भाग के लिए, यह "डेटा समानांतरवाद" के रूप में है। SIMD "सिंगल इंस्ट्रक्शन मल्टीपल डेटा" है। इसका मतलब यह है कि आप ऐसा नहीं करेंगे:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

इसका मतलब यह होगा कि आपके पास 1024 निर्देश बिंदु हैं जो सभी अलग-अलग कार्यों को अलग-अलग दरों पर प्रगति कर रहे हैं। SIMD, या "वेक्टर कंप्यूटिंग" इस तरह से एक साथ सभी सरणियों में निर्देश प्रदर्शित करेगा:

c = a * b

"छोरों" निर्देशों के बाहर के बजाय "*" और "=" निर्देशों में हैं। उपरोक्त सभी 1024 तत्वों के लिए एक ही समय में, उन सभी के लिए एसएएमई अनुदेश सूचक पर किया जाएगा। यह ए, बी और सी के लिए तीन विशाल रजिस्टर होने जैसा है। SIMD कोड बेहद विवश है, और केवल उन समस्याओं के लिए अच्छी तरह से काम करता है जो अत्यधिक "ब्रांडी" नहीं हैं।

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

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

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


5

यहाँ अन्य उत्तर बहुत अच्छे हैं। मैं अपने 2 सेंट में भी फेंक दूँगा।

सीपीयू के इतने व्यापक होने का एक कारण यह है कि वे लचीले होते हैं। आप उन्हें विभिन्न प्रकार के कार्यों के लिए फटकार सकते हैं। इन दिनों यह उन कंपनियों के लिए सस्ता और तेज़ है जो किसी चीज़ में छोटे सीपीयू या माइक्रोकंट्रोलर को चिपकाने के लिए उत्पाद बनाते हैं और उसी कार्य को करने के लिए कस्टम सर्किटरी विकसित करने की तुलना में इसकी कार्यक्षमता है।

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

यदि आप एक नए उपकरण प्रकार को खरोंच से बनाना चाहते हैं, तो एक जीपीयू के लिए कुछ विकल्प, यहां तक ​​कि शुरुआती गोद लेने वालों के लिए वास्तव में इसे प्राप्त करने के तरीके जानने में भी सालों लग जाएंगे। यदि आप अपने CPU में ASIC संलग्न करते हैं, तो आप उस डिवाइस पर ऑफ़लोडिंग संगणना को कैसे अनुकूलित करते हैं?

कंप्यूटर वास्तुकला समुदाय इस विचार के साथ कई वर्षों से घृणा कर रहा है (जाहिर है कि यह पहले भी लोकप्रिय रहा है, लेकिन हाल ही में एक पुनर्जागरण देखा गया है)। इन 'एक्सीलरेटर' (उनके शब्द) में रिप्रोग्रामेबिलिटी की अलग-अलग डिग्री होती हैं। समस्या यह है कि आप उस समस्या के दायरे को कितनी आसानी से परिभाषित करते हैं जिससे आपका त्वरक निपट सकता है? मैंने कुछ लोगों से भी बात की है, जो अंतर समीकरणों की गणना करने के लिए op-amps के साथ एनालॉग सर्किट का उपयोग कर एक त्वरक बनाने का काम कर रहे थे। महान विचार, लेकिन बेहद संकीर्ण गुंजाइश।

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

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

संपादित करें: मेरे उत्तर पर थोड़ा विस्तार करते हुए, अब जब मैं बस से उतर गया हूं।

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

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

लोगों ने FPGAs के लिए लॉजिक सिंथेसिस को संकलक में एकीकृत करने की कोशिश की है, ताकि आप अपने FPGA त्वरक के लिए कोड स्वतः उत्पन्न कर सकें। वे अच्छी तरह से काम नहीं करते।

एक जगह जो त्वरक के लिए वास्तव में उपजाऊ मिट्टी लगती है, या जीपीयू के लिए अन्य विकल्प, बादल है। पैमाने की अर्थव्यवस्था जो Google, अमेज़ॅन, और Microsoft जैसी बड़ी कंपनियों में मौजूद है, वैकल्पिक कम्प्यूटेशन योजनाओं में निवेश को सार्थक बनाता है। किसी ने पहले ही Google की टेनर प्रोसेसिंग इकाइयों का उल्लेख किया था। Microsoft के पास पूरे बिंग और Azure बुनियादी ढांचे में FPGAs और अन्य सामान हैं। अमेज़न के साथ एक ही कहानी। यह बिल्कुल समझ में आता है कि क्या पैमाना आपके निवेश को समय, धन और इंजीनियर के आंसुओं से भर सकता है।

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

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

जीपीयू में दिलचस्पी वैसे ही शुरू हुई जब लोगों को पता चला कि इंटेल / एचपी ईपीआईसी परियोजना द्वारा दिए गए वादे काफी हद तक समाप्त हो गए थे (90 के दशक की शुरुआत में 2000 के दशक के अंत में)। संकलक संकलक के लिए कोई सामान्य समाधान नहीं था। इसलिए यह कहने के बजाय "हम कहां अधिक प्रसंस्करण शक्ति पाते हैं, ओह हम जीपीयू की कोशिश कर सकते हैं", मुझे लगता है कि यह अधिक था "हमारे पास कुछ है जो समानांतर गणनाओं में अच्छा है, क्या हम इसे और अधिक सामान्यतः प्रोग्राम कर सकते हैं"। इसमें शामिल बहुत से लोग वैज्ञानिक कंप्यूटिंग समुदाय में थे, जिनके पास पहले से ही समानांतर फोरट्रान कोड था जिसे वे क्रे या तेरा मशीनों पर चला सकते थे (तेरा एमटीए में 128 हार्डवेयर थ्रेड्स थे)। शायद दोनों दिशाओं से आंदोलन था, लेकिन मैंने केवल इस दिशा से GPGPU की उत्पत्ति का उल्लेख सुना है।


"त्वरक" द्वारा क्या आप कम पावर कंप्यूटिंग नोड्स के कस्टम निर्मित हार्डवेयर या सुपर क्लस्टर की बात कर रहे हैं? क्या आप कुछ उदाहरण त्वरक हार्डवेयर के संदर्भ प्रदान करके विस्तृत कर सकते हैं।
मानव मात्र

क्षमा करें, मुझे लगा कि मैंने संदर्भ से स्पष्ट कर दिया है। त्वरक एक कोप्रोसेसर या ऑफलोड कार्ड के लिए सिर्फ एक छत्र शब्द है। फ्लोटिंग पॉइंट मूल रूप से एक कोप्रोसेसर में था और मुख्य सीपीयू में नहीं था, और इसे एक त्वरक माना जाता था। GPU, DSPs, Xeon Phi, FPGAs जब वे PCIe कार्ड या कुछ इसी तरह के होते हैं, तो मैंने जो अंतर अंतर समीकरण चीज का उल्लेख किया है, वे उपकरण हैं जो वर्चुअलाइजेशन में सहायता करते हैं, तंत्रिका नेटवर्क त्वरक में वर्तमान शोध है। वे सभी त्वरक के उदाहरण हैं।
NerdPirate

4

यहाँ छवि विवरण दर्ज करें

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

तो GPU क्यों?

90 के दशक के मध्य में, 3DFX ने महसूस किया कि 3D-रेंडरिंग कार्य इतने विशिष्ट थे कि एक कस्टम ASIC एक CPU की तुलना में MUCH बेहतर प्रदर्शन करेगा। उन्होंने एक कंप्यूटर सह-प्रोसेसर बनाया, जिसने सीपीयू से 3 डी रेंडरिंग कार्यों को इस सह-प्रोसेसर के लिए ऑफलोड किया, जिसे उन्होंने "जीपीयू" करार दिया। प्रतिस्पर्धा और बाजार की मांग ने इस स्थान पर नवाचार को एक ऐसे स्थान पर पहुंचा दिया जहां GPU CPU की तुलना में तेजी से MUCH प्रदर्शन कर रहे थे, इसलिए यह प्रश्न उत्पन्न हुआ, "मैं CPU के बजाय अपने नंबर को क्रंच करने के लिए GPU का उपयोग क्यों नहीं कर सकता?" GPU निर्माताओं ने एक मांग और अधिक पैसा बनाने का एक तरीका देखा, इसलिए उन्होंने डेवलपर्स को अपने हार्डवेयर का उपयोग करने की अनुमति देने के लिए अपने प्लेटफार्मों को बदलना शुरू कर दिया। लेकिन हार्डवेयर हार्डवेयर इतना उद्देश्य-विशिष्ट था कि वहाँ थे, और अभी भी सीमाएं हैं, जो आप GPU को करने के लिए कह सकते हैं। मैं क्यों यहाँ पर बारीकियों में नहीं जाऊँगा।

तो क्यों अधिक उद्देश्य-विशिष्ट सिलिकॉन नहीं था? क्यों सिर्फ ग्राफिक्स?

दो कारण: 1) कीमत। GPU का एक अच्छा बाजार था, और इसे सही ठहरा सकता है, लेकिन फिर भी, यह एक बड़ा जोखिम था। कोई भी वास्तव में नहीं जानता था कि 3 डीएफएक्स एक लाभ कमा सकता है (पता चलता है, वे वास्तव में नहीं कर सकते हैं, और खराब हो गए)। अब भी, GPU बाजार के आकार के साथ, वास्तव में केवल 3 प्रतियोगी हैं। 2) सीपीयू वास्तव में अनुदेश एक्सटेंशन के साथ "कस्टम सिलिकॉन" की आवश्यकता को पूरा कर रहे थे। MMX के बारे में सोचें - यह वास्तव में CPU में ग्राफिक्स को तेज करने का इंटेल का प्रयास था क्योंकि 3DFX गति प्राप्त कर रहा था। तब से, x86 निर्देश सेट इन सभी कस्टम एक्सटेंशन के साथ काफी बड़े पैमाने पर हो गया है। इनमें से कई एक्सटेंशन उस समय समझ में आ गए (जैसे एमएमएक्स), लेकिन अब प्रोसेसर में मोटे तौर पर सिर्फ डेड-वेट हैं। हालाँकि, आप उन्हें हटा नहीं सकते, क्योंकि तब यह मौजूदा सॉफ़्टवेयर को तोड़ देता है। यह वास्तव में एआरएम के लिए विक्रय-बिंदुओं में से एक है - एआरएम एक छीन नीचे अनुदेश सेट है। कई अनुदेश एक्सटेंशन नहीं हैं, लेकिन यह सिलिकॉन को छोटा और निर्माण करने के लिए सस्ता बनाता है।

अगर आप कस्टम सिलिकॉन की लागत को कम कर सकते हैं तो मुझे बहुत अच्छा लगता है। क्या कोई इस पर काम नहीं कर रहा है?

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

FPGA के साथ मुख्य सीमक सिलिकॉन आकार है - आप चिप पर कितना तर्क दे सकते हैं? दूसरा क्लॉक स्पीड है, क्योंकि FPGA में हॉट स्पॉट, लीकेज और क्रॉस-टॉक जैसी चीजों को ऑप्टिमाइज़ करना मुश्किल है। नए निर्माण के तरीकों ने इन मुद्दों को कम कर दिया है, और इंटेल ने Altera के साथ मिलकर एक FPGA प्रदान किया है जिसका उपयोग इंजीनियरों द्वारा "कस्टम सिलिकॉन" के लाभों को सर्वर में सह-प्रोसेसर के रूप में लाभ उठाने के लिए किया जा सकता है। तो यह एक अर्थ में आ रहा है।

क्या FPGA कभी CPU और GPU की जगह लेगा?

शायद कभी भी जल्द नहीं। नवीनतम सीपीयू और जीपीयू मेसिव हैं और थर्मल और इलेक्ट्रिकल प्रदर्शन के लिए सिलिकॉन अत्यधिक ट्यून किए गए हैं। आप FPGA के अनुकूलन नहीं कर सकते उसी तरह से आप एक कस्टम ASIC कर सकते हैं। कुछ ग्राउंड-ब्रेकिंग तकनीक को छोड़कर, सीपीयू संभवतः आपके कंप्यूटर के FPGA और GPU कोप्रोसेसर के साथ बना रहेगा।


1
इनमें से कई एक्सटेंशन उस समय समझ में आ गए (जैसे एमएमएक्स), लेकिन अब प्रोसेसर में मोटे तौर पर सिर्फ डेड-वेट हैं। 3D रेंडरिंग SIMD के लिए एकमात्र उपयोग के मामले से दूर है। MMX के अधिकांश "वेट" निष्पादन इकाइयाँ हैं, और जिन्हें SSE2, AVX2 और AVX512 जैसे व्यापक वेक्टर के साथ साझा किया जा सकता है। उन का उपयोग सीपीयू पर उच्च-गुणवत्ता वाले वीडियो-एन्कोडिंग और उच्च-प्रदर्शन कंप्यूटिंग सहित कई अन्य कार्यों के लिए किया जाता है। लेकिन मेमोर्र, स्ट्रलेन और अन्य सामानों के पुस्तकालय कार्यान्वयन भी। उदाहरण के लिए एक बार में 1 से अधिक तत्व फ़िल्टर करना
पीटर कॉर्ड्स

3

वास्तव में हाई-स्पीड कंप्यूटिंग के लिए विशेष बोर्ड हैं, उदाहरण के लिए Xilinx के पास अपने FPGAs का उपयोग करते हुए 178 PCI-e बोर्ड की एक सूची है, और इनमें से एक तिहाई बोर्ड एक या कई शक्तिशाली FPGA चिप्स के साथ "संख्या क्रंचर" हैं और बहुत सारे हैं। बोर्ड डीडीआर मेमोरी। उच्च-प्रदर्शन कंप्यूटिंग कार्यों के उद्देश्य से उच्च-प्रदर्शन डीएसपी बोर्ड ( उदाहरण ) भी हैं।

मुझे लगता है कि GPU बोर्ड की लोकप्रियता एक व्यापक ग्राहक समूह के उद्देश्य से उपजी है। आपको Nvidia CUDA के साथ खेलने के लिए विशेष हार्डवेयर में निवेश करने की आवश्यकता नहीं है, इसलिए जब तक आपके पास कोई कार्य नहीं होता है, जिसके लिए विशेष हार्डवेयर की आवश्यकता होती है, Nvidia GPUs के पास एक प्रतिस्पर्धात्मक बढ़त होगी, जिसमें आप पहले से ही उन्हें प्रोग्राम करना जानते हैं।


2

मुझे लगता है कि आपके प्रश्न का उत्तर इस बात पर निर्भर करता है कि उच्च-प्रदर्शन संगणना को कैसे परिभाषित किया जाए।

सामान्य तौर पर, उच्च-प्रदर्शन संगणना गणना समय से संबंधित होती है। उस स्थिति में, मुझे उच्च-प्रदर्शन कंप्यूटिंग क्लस्टर का लिंक साझा करना पसंद है ।

लिंक GPU के उपयोग का कारण निर्दिष्ट है; ग्रिड कंप्यूटिंग के लिए गणना करने के लिए ग्राफिक्स कार्ड (या बल्कि उनके GPU के) का उपयोग कम सटीक होने के बावजूद, CPU के उपयोग की तुलना में बहुत अधिक किफायती है।


2
हाई-एंड GPGPU में 64 बिट बिट के लिए अच्छा थ्रूपुट है double, न कि केवल सिंगल-प्रिसिजन 32-बिट में float। (कुछ नियमित GPU के लिए HW पर कंजूसी करते हैं double)। प्रमुख विक्रेता सभी IEEE FP गणित का समर्थन करते हैं (मुझे भी denormals के साथ लगता है)। जब तक आप प्रदर्शन के लिए सटीक व्यापार नहीं करना चाहते हैं, तो कोई सटीक नुकसान नहीं है , उदाहरण के लिए 16-बिट आधा-सटीक एफपी के साथ जो कुछ हार्डवेयर पर बेहतर थ्रूपुट है (और निश्चित रूप से आधा मेमोरी बैंडविड्थ)। सीपीयू पर उच्च-प्रदर्शन कोड अक्सर 32-बिट का उपयोग करता है float, सिमड वेक्टर के प्रति दो तत्वों और आधे मेमोरी बैंडविड्थ के रूप में दो बार प्राप्त करने के लिए।
पीटर कॉर्डेस

1
@PeterCordes मैंने अनुमानित कंप्यूटिंग में कुछ काम देखा है जो कि आठ-बिट फ्लोटिंग पॉइंट तक भी जाता है, हालांकि मुझे नहीं लगता कि कई GPU हार्डवेयर में समर्थन करते हैं।
JAB
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.