क्या फ्री लंच खत्म हो गया है? [बन्द है]


12

2005 के अपने प्रसिद्ध द फ्री लंच इज़ ओवर लेख में, हर्ब सटर ने एक समवर्ती प्रोग्रामिंग क्रांति को ऑब्जेक्ट-ओरिएंटेशन रिवोल्यूशन जितना बड़ा बताया। क्या यह क्रांति वास्तव में वर्ष २००५ - २०१३ में खुश हो गई है?


लेख में मुख्य बातें:

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

  • यदि वे पूरी तरह से सीपीयू थ्रूपुट लाभ प्राप्त करना चाहते हैं तो अनुप्रयोगों को समवर्ती होने की आवश्यकता होगी।

  • "ओह, प्रदर्शन इतना मायने नहीं रखता है, कंप्यूटर बस तेज हो रहा है" बयान गलत होगा।

  • दक्षता और प्रदर्शन अनुकूलन अधिक मिलेगा, कम नहीं, महत्वपूर्ण। वे भाषाएँ जो पहले से ही अपने आप को भारी अनुकूलन के लिए उधार देती हैं, उन्हें नया जीवन मिलेगा; उन है कि प्रतिस्पर्धा और अधिक कुशल और अनुकूलन बनने के तरीके खोजने की जरूरत नहीं होगी। प्रदर्शन-उन्मुख भाषाओं और प्रणालियों के लिए दीर्घकालिक वृद्धि की अपेक्षा करें।

  • प्रोग्रामिंग लैंग्वेज और सिस्टम तेजी से कंसीडर से निपटने के लिए मजबूर होंगे। हमें आज की भाषाओं की तुलना में संगोष्ठी के लिए एक उच्च स्तरीय प्रोग्रामिंग मॉडल की सख्त आवश्यकता है।


15
आपके फोन में कितने कोर हैं?
मैट डी।

6
मेरे नोकिया 2700 में एक कोर है।
cpp

5
@MattD क्षमा करें, लेकिन यह "अपग्रेड करने का समय" क्यों है, और सीपीपी के फोन में कोर की संख्या क्या है? आप कैसे जानते हैं कि नोकिया 2700 उसकी जरूरतों के लिए पर्याप्त नहीं है?
एंड्रेस एफ।

2
मैं पूरी तरह से गैर-वैज्ञानिक अवलोकन द्वारा यह कहने के लिए रिकॉर्ड पर जा रहा हूं, कि चीजों के हार्डवेयर पक्ष में ऐसी क्रांति हुई है, लेकिन सॉफ्टवेयर क्रांति असाधारण रूप से धीमी गति से चल रही है। सभी प्रोग्रामर के लिए गुणवत्ता समवर्ती उपकरण प्राप्त करना अभी भी एक कठिन टमटम है और समसामयिकता अभी भी कुछ ऐसी है जो कठिन डेवलपर्स के पुन: प्रस्तुत करने के तरीकों में भी समानान्तर समानांतर डेवलपर्स तक पहुँचती है।
जेसी सी। स्लीपर

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

जवाबों:


23

हां, लेकिन यह निर्भर करता है।

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

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

2005 के बाद से हमने नए और बेहतर उपकरण प्राप्त किए हैं जैसे कि OpenCL, CUDA, OpenMP और वेक्टर इंस्ट्रक्शंस सेट के लिए काम करते हैं और स्थापित भाषाओं में डेटा समानता के साथ काम करते हैं। हालाँकि, समसामयिक नवागंतुकों को शुरू से ही कई और दिलचस्प बातें करने के लिए डिज़ाइन किया गया है।

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

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

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


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

6
@MattD: दोनों कैसे आप एक भाषा का प्रयोग और अपने आप में भाषा की गलती हो सकती है। कहते हैं कि आपका कार्यक्रम गलत है। आप वह हैं, जिसने इसे गलत लिखा है, लेकिन भाषा ने आपको इसे सही लिखने में मदद नहीं की है , और यह उतना ही महत्वपूर्ण है।
जॉन प्यूडी

6

यहाँ कुछ डेटा बिंदु हैं; अपने लिए तय करें कि क्या यह एक क्रांति के रूप में गिना जाता है।

समानांतर हार्डवेयर

2005 के आसपास, इंटेल और एएमडी दोनों बड़े पैमाने पर 2-कोर डेस्कटॉप x86 सीपीयू (पेंटियम डी और एथलॉन 64) शुरू करते हैं, जिसमें 3 गीगाहर्ट्ज़ की गति होती है।

2006 में, PlayStation 3 को रिलीज़ किया गया है, जिसमें 3.2 गीगाहर्ट्ज़ पर 8 + 1 कोर के साथ सेल प्रोसेसर है।

2006 में, GeForce 8 श्रृंखला जारी की गई है। इसमें ग्राफिक्स-विशिष्ट इकाइयों के विपरीत, सामान्य-उद्देश्य 'स्ट्रीम प्रोसेसर' की बड़ी संख्या (~ 100) शामिल हैं। 2007 के आसपास, CUDA 1.0 युक्ति जारी की गई है, जिससे सामान्य-समानांतर NVidia हार्डवेयर पर कुछ सामान्य-प्रयोजन संगणना चलती है।

तब से, प्रवृत्ति जारी रही।

कहते हैं, अब, 2013 में, इंटेल और एएमडी दोनों 4, 8 और 16-कोर सीपीयू प्रदान करते हैं, जिसमें घड़ी की गति केवल 4 हर्ट्ज से थोड़ी अधिक है। ड्यूल-कोर और क्वाड-कोर डिज़ाइन लो-पावर डिवाइस, जैसे लैपटॉप और स्मार्टफ़ोन के लिए आम हैं।

यह सब बड़े पैमाने पर उत्पादित, उपभोक्ता-ग्रेड रोज़ कंप्यूटर हार्डवेयर है।

सॉफ्टवेयर

CUDA को 2007 में जारी किया गया था, फिर 2008 में OpenCL, सामान्य (गैर-ग्राफिकल) गणना में बड़े पैमाने पर समानांतर GPU का उपयोग करने की अनुमति देता है। मॉडल लोकप्रिय हो जाता है; कई होस्टिंग कंपनियां (जैसे अमेज़न) सामान्य कंप्यूटिंग कार्यों के लिए GPU प्रदान करती हैं।

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

अक्का टूलकिट 2009 में जावा और स्काला के लिए जारी किया गया है, जो अभिनेता-आधारित संगामिति के लिए अनुमति देता है।

Erlang (एक उच्च समवर्ती भाषा) उपयोग में कुछ वृद्धि देखता है।

समरूपता बनाम समानता

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

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

अब तक कोई मुफ्त लंच नहीं

सीपीयू की गति अभी भी उच्च अंत में लगभग 5 गीगाहर्ट्ज पर है। दृष्टि में बेहतर तकनीकों के साथ, ग्राफीन ट्रांजिस्टर की तरह, भविष्य में फ़्रीक्वेंसी फिर से बढ़ सकती है, लेकिन बहुत जल्द नहीं।

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