"समवर्ती" और "समानांतर" निष्पादन के बीच अंतर?


107

समवर्ती और समानांतर निष्पादन के बीच अंतर क्या है ? मैं कभी भी अंतर को समझ नहीं पाया।

टैग एक साथ दो प्रक्रियाओं को चलाने के तरीके के रूप में संगामिति को परिभाषित करता है, लेकिन मुझे लगा कि समानांतरवाद बिल्कुल एक ही बात थी, अर्थात: अलग-अलग धागे या प्रक्रियाएं जो संभवतः अलग-अलग प्रोसेसर पर चलाई जा सकती हैं।

इसके अलावा, अगर हम अतुल्यकालिक I / O जैसी किसी चीज पर विचार करते हैं, तो क्या हम समवर्ती या समानांतरवाद से निपट रहे हैं?


27
संक्षेप में - समवर्ती: एक साथ कई अलग-अलग ऑपरेशन हो रहे हैं। समानांतर: एक ही ऑपरेशन एक ही बार में होने वाले छोटे बिट्स में टूट गया।
ओड

3
@ ठीक है, मैं समझता हूं कि शब्दों का क्या अर्थ है, लेकिन मुझे निहितार्थ को समझने में परेशानी हो रही है। क्या आपके पास कोई ठोस उदाहरण है?
BLZ

7
@ ठीक है, मैं वास्तव में आपके साथ सहमत नहीं हूं, कहीं भी उनकी परिभाषाओं में (या तो सामान्य या प्रोग्रामिंग पर लागू) "समवर्ती" और "समानांतर" की धारणाएं संख्याओं या संचालन के "आकार" के बारे में कुछ भी उल्लेख करती हैं।
शिवन ड्रैगन

2
@ जब आप "छोटे बिट" कहते हैं।
अवनेर शाहर-कश्तन

2
@Oded: हाँ, लेकिन यह आपके और शिवनड्रगन के बीच गलतफहमी की जड़ है।
अवनेर शाहर-कश्तन

जवाबों:


97

कंज्यूरेन्सी और समांतरवाद दो संबंधित लेकिन विशिष्ट अवधारणाएँ हैं।

Concurrency का अर्थ है, अनिवार्य रूप से, वह कार्य A और कार्य B दोनों को एक-दूसरे से स्वतंत्र रूप से होने की आवश्यकता है, और A चलना शुरू कर देता है, और फिर A समाप्त होने से पहले B शुरू होता है।

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


4
केस बी कैसे async IO काम करता है, नहीं?
blz

6
@blz: यह सही है। यह भी कि प्रीमेप्टिव मल्टीटास्किंग कैसे काम करता है। मुख्य अंतर यह है कि async IO पर, प्रोग्राम अपना समय देने का फैसला करता है और CPU को कुछ और प्रक्रिया करने के लिए कहता है, जबकि प्रीमेप्टिव मल्टीटास्किंग में, यदि रनिंग थ्रेड स्वेच्छा से लंबे समय के बाद CPU को नहीं छोड़ता है, तो OS प्रीमेप्स यह।
मेसन व्हीलर

1
सबसे अच्छा स्पष्टीकरण नीचे हाथ करता है
कोनराड

@MasonWheeler: यदि हमारे पास केवल 1 सीपीयू है, तो हम केवल समरूपता, कोई समानता नहीं रख सकते हैं। सही? समानांतरता 1 सीपीयू से अधिक प्राप्त की जा सकती है। सही? और अगर यह सही है और अगर हमारे पास केवल 1 सीपीयू है, तो जावा 8 से स्ट्रीम किसी काम की नहीं हैं।
अनीश मित्तल

1
पहले कुछ बिंदुओं के बारे में सही। पिछले एक के रूप में, समानता केवल धाराओं से आपको मिलने वाला लाभ है? मैं जावा देव नहीं हूं, लेकिन मेरी धारणा यह है कि जावा स्ट्रीम लगभग LINQ के बराबर है, और इससे अभिव्यक्ति और विकास में आसानी के वास्तविक लाभ हैं।
मेसन व्हीलर

37

दो अवधारणाएं संबंधित हैं, लेकिन अलग-अलग हैं।

कॉनकरी का अर्थ है कि दो या अधिक गणना एक ही समय सीमा के भीतर होती हैं, और आमतौर पर उनके बीच किसी प्रकार की निर्भरता होती है।

समानांतरवाद का मतलब है कि दो या अधिक गणना एक साथ होती हैं।

साहसपूर्वक डालें, संगामिति एक समस्या का वर्णन करती है (दो चीजों को एक साथ होने की आवश्यकता होती है), जबकि समानता एक समाधान का वर्णन करती है (दो प्रोसेसर कोर का उपयोग दो चीजों को एक साथ निष्पादित करने के लिए किया जाता है)।

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

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


8
आप कहते हैं कि Concurrency means that two or more calculations happen within the same time frame, and there is usually some sort of dependency between them.लेकिन उस उपयोगकर्ता ने जो लिखा है कि स्वीकृत उत्तर कहता है Concurrency means, essentially, that task A and task B both need to happen independently of each other। तो निष्कर्ष क्या है?
नबंर

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

4
"एक ही समय सीमा के भीतर", मुझे जरूरी नहीं कि "एक साथ" मतलब है, बस उस समय के समग्र फ्रेम जिसके दौरान वे ओवरलैप होते हैं। यह समानांतर में प्राप्त किया जा सकता है (जैसे दो प्रोसेसर कोर, प्रत्येक कार्य को निष्पादित करने वाला), लेकिन यह पूरी तरह से निष्पादन को क्रमबद्ध करके भी प्राप्त किया जा सकता है (कार्य 1 पहले, परिणाम याद रखें, फिर कार्य 2 करें, फिर दोनों की रिपोर्ट करें) , या दोनों को काटकर और विखंडू को इंटरलेक्ट करके। बाद में जेएस करता है।
tdammers

9

मेरा मानना ​​है कि यह उत्तर मौजूदा उत्तरों की तुलना में अधिक सही है और उन्हें संपादित करने से उनका सार बदल गया होगा। मैंने विभिन्न स्रोतों या विकिपीडिया पृष्ठों से लिंक करने की कोशिश की है ताकि अन्य शुद्धता की पुष्टि कर सकें।


Concurrency: एक प्रणाली की संपत्ति जो प्रोग्राम की इकाइयों, एल्गोरिथ्म, या समस्या को अंतिम परिणाम 1 2 को प्रभावित किए बिना आउट-ऑफ-ऑर्डर या आंशिक क्रम में निष्पादित करने में सक्षम बनाती है ।

इसका एक सरल उदाहरण लगातार परिवर्धन है:

0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

इसके अतिरिक्त संप्रदाय की संपत्तियों के कारण शुद्धता को प्रभावित किए बिना फिर से व्यवस्थित किया जा सकता है; निम्नलिखित व्यवस्था का परिणाम एक ही उत्तर में होगा:

(1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 0 = 45

यहां मैंने उन जोड़ियों को समूह में जोड़ा है जो 10 तक पहुंचेंगे, जिससे मेरे लिए अपने सिर के सही उत्तर पर पहुंचना आसान हो जाएगा।

समानांतर कम्प्यूटिंग: एक प्रकार की गणना जिसमें कई गणना या प्रक्रियाओं का निष्पादन एक साथ किया जाता है 3 4 । इस प्रकार समानांतर कंप्यूटिंग कार्यक्रम, एल्गोरिथ्म, या समस्या की कई इकाइयों को एक साथ निष्पादित करने के लिए संगामिति की संपत्ति का लाभ उठाता है।

निरंतर परिवर्धन के उदाहरण के साथ जारी रखते हुए, हम समांतर में योग के विभिन्न भागों को निष्पादित कर सकते हैं:

Execution unit 1:  0 + 1 + 2 + 3 + 4 = 10
Execution unit 2:  5 + 6 + 7 + 8 + 9 = 35

फिर अंत में हम प्रत्येक कार्यकर्ता से परिणाम प्राप्त करने के लिए योग करते हैं 10 + 35 = 45

फिर, यह समानता केवल इसलिए संभव थी क्योंकि लगातार परिवर्धन में संगामिति की संपत्ति होती है।

समरूपता केवल अधिक समानता से लीवरेज हो सकती है, हालांकि। एकल-कोर प्रणाली पर पूर्व-उत्सर्जन पर विचार करें : समय की अवधि में सिस्टम बिना किसी परिष्करण के कई चल रही प्रक्रियाओं पर प्रगति कर सकता है। वास्तव में, एसिंक्रोनस I / O का आपका उदाहरण समरूपता का एक सामान्य उदाहरण है जिसमें समानता की आवश्यकता नहीं है।


उलझन

उपरोक्त अपेक्षाकृत सीधा है। मुझे संदेह है कि लोग भ्रमित हो जाते हैं क्योंकि शब्दकोश की परिभाषाएं जरूरी नहीं हैं कि ऊपर उल्लिखित क्या है:

  • समवर्ती: एक साथ या साइड 5 से घटित या विद्यमान ।
  • Concurrency: एक ही समय में होने वाली या मौजूदा दो या दो से अधिक घटनाओं या परिस्थितियों का तथ्य : Google पर खोज करने से: "परिभाषित करें: संगामिति"

शब्दकोश "घटना" को घटना के एक तथ्य के रूप में परिभाषित करता है, जबकि कंप्यूटिंग वर्नाक्यूलर में परिभाषा एक प्रोग्राम, संपत्ति, या सिस्टम का एक अव्यक्त गुण है। हालांकि संबंधित ये बातें समान नहीं हैं।


व्यक्तिगत सिफारिशें

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

इसलिए मैं कई कोर पर एक जेट इंजन को समानांतर के रूप में अनुकरण करने का वर्णन करूंगा।

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


6

समवर्ती निष्पादन समानांतर निष्पादन का सामान्यीकृत रूप है। उदाहरण के लिए समानांतर कार्यक्रम को समवर्ती भी कहा जा सकता है लेकिन रिवर्स सच नहीं है।

  1. एकल प्रोसेसर पर समवर्ती निष्पादन संभव है (कई सूत्र, अनुसूचक द्वारा प्रबंधित)
  2. एकल प्रोसेसर पर नहीं बल्कि कई प्रोसेसर पर समानांतर निष्पादन संभव है। (प्रति प्रोसेसर एक प्रक्रिया)

विवरण के लिए इस शोध पत्र को समवर्ती प्रोग्रामिंग की अवधारणाएं पढ़ें


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

3

समानांतर प्रसंस्करण समवर्ती प्रसंस्करण का एक सबसेट है।

समवर्ती प्रसंस्करण में अतुल्यकालिक रूप से होने वाले दो कार्यों का वर्णन किया गया है, जिसका अर्थ है कि जिस कार्य को निष्पादित किया जाता है वह पूर्व निर्धारित नहीं है। निष्पादन योग्य निर्देशों को इंटरलेय करके दो धागे एक ही प्रोसेसर कोर पर समवर्ती रूप से चल सकते हैं। उदाहरण के लिए, थ्रेड 10ms के लिए 1 रन, थ्रेड 2 रन 10ms आदि के लिए है।

समानांतर प्रसंस्करण एक प्रकार का समवर्ती प्रसंस्करण है जहां निर्देशों का एक से अधिक सेट एक साथ निष्पादित हो रहा है। यह एक सामान्य समस्या पर काम करने वाले कई सिस्टम हो सकते हैं जैसे वितरित कंप्यूटिंग, या एक ही सिस्टम पर कई कोर।


0

tdammer का बयान करीब आता है, बाकी सभी बिंदु के अलावा है। वह कहता है:

"साहसपूर्वक रखो, संगामिति एक समस्या का वर्णन करती है (दो चीजों को एक साथ होने की जरूरत है), जबकि समानता एक समाधान का वर्णन करती है (दो प्रोसेसर कोर का उपयोग दो चीजों को एक साथ निष्पादित करने के लिए किया जाता है"

चलो बस शब्दों का विश्लेषण करते हैं।

वर्तमान का अर्थ इस समय, वास्तविक, प्रासंगिक हो रहा है। कोन का मतलब है, काउंटर, के साथ संरेखित करना।

समानांतर दिशा का मतलब है कि एक ही दिशा में बिना क्रॉसिंग के, प्रत्येक अभिभावक के तरीके के बिना।

इसलिए, समरूपता का तात्पर्य समान संसाधन के लिए प्रतिस्पर्धा करना है। समानता नहीं है। समान प्रक्रियाएं समान संसाधन का उपयोग कर सकती हैं लेकिन इसे समस्या नहीं माना जाता है, यह कोई समस्या नहीं है। संगामिति के साथ, इसे निपटाया जाना एक मुद्दा है।


"वर्तमान का अर्थ इस समय, वास्तविक, प्रासंगिक हो रहा है। Con का अर्थ है, काउंटर, के साथ संरेखित करना।" - प्रशस्ति पत्र की जरूरत। मुझे इन दोनों कथनों पर दृढ़ता से संदेह है। जबकि "करंट" का यहाँ अंग्रेजी में अर्थ हो सकता है, जबकि "समवर्ती" शब्द में प्रयुक्त अर्थ नहीं है
हल्क

1
मुझे लगता है कि लैटिन से समवर्ती का अनुवाद "एक साथ चलना" है। उपसर्ग 'कोन' का अर्थ अक्सर एक साथ होता है , जैसे कि षडयंत्र में (एक साथ सांस लेने के लिए) परिणाम (परिणाम एक साथ या बाद में) निष्कर्ष (एक साथ करीब) आदि यह भाषा का एक कष्टप्रद पहलू है कि किसी चीज का विपरीत अर्थ हो सकता है, अनुमोदन मेरा पसंदीदा उदाहरण है ।

@ कोई शामिल नहीं है इस मामले में (con-current) एक साथ चलने का अर्थ है कि यह बेहतर फिट है। चूंकि कोई समर्थक-वर्तमान नहीं है ... डच में, समवर्ती एक संज्ञा अर्थ प्रतियोगी है। आपके चारों ओर घूमता हुआ कॉरनट आम है। यह अखबार भी है। कुछ ऐसा जो अब सक्रिय है। "रेकिंग दर्रा" एक चालू खाता है। मुझे लगता है कि संगोष्ठी का अर्थ है कॉन (!) फ्लिक। उसी संसाधन पर लड़ाई। एक ही अंतरिक्ष में चल रहा है। शायद डच अर्थ (प्रतियोगी) की वजह से।
मार्टिन मैट

दीजकस्त्र क्या कहेंगे, मुझे आश्चर्य है?

-1

जाहिर है, विभिन्न संस्कृतियों में शब्दों का अलग-अलग तरह से इस्तेमाल किया जाता है।

मेरी समझ निम्नलिखित है:

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

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

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


-1

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

मेसन व्हीलर और पेंगुइन ने एक ही जवाब दिया है। कार्य स्विचिंग और मल्टीकोर के साथ एक कोर समवर्ती है, सख्ती से मल्टीकोर = समानांतर।

मेरी राय है कि इन दो शब्दों को एक में रोल किया जाना चाहिए और मैं "समवर्ती" कहने से बचने का प्रयास करता हूं। मुझे लगता है कि ओएस प्रोग्रामिंग स्तर पर अंतर महत्वपूर्ण है, लेकिन एप्लिकेशन प्रोग्रामर के दृष्टिकोण से यह बहुत ज्यादा मायने नहीं रखता है। मैंने MapReduce, Spark, MPI, cuda, openCL, और multithreaded c ++ लिखा है और मुझे कभी भी यह नहीं सोचना और रोकना है कि नौकरी इंटरलेयड थ्रेड्स या मल्टीपल कोर के साथ चल रही है या नहीं।

उदाहरण के लिए, जब मैं मल्टीथ्रेडेड सी ++ लिखता हूं तो कभी-कभी मुझे यकीन नहीं होता है कि मुझे कितने कोर मिलेंगे, हालांकि आपके द्वारा यहां बताए गए कितने कोर पर मांग करने के तरीके हैं https://stackoverflow.com/questions/2166425/ कैसे-से-संरचना-एसी-अनुप्रयोग-से-उपयोग-एक-बहु-प्रोसेसर । चिंगारी में मैं सिर्फ मैप करता हूं और संचालन को कम करता हूं और यह नहीं जानता कि जेवीएम हार्डवेयर स्तर पर उन्हें कैसे संभाल रहा है। GPU पर मुझे लगता हैप्रत्येक थ्रेड को इसका स्वयं का सरल प्रोसेसर सौंपा गया है, लेकिन मैं हमेशा अपने थ्रेड को सिंक करता हूं जहां भी कोई समस्या उत्पन्न हो सकती है। MPI के साथ मशीनों के बीच संचार स्पष्ट रूप से निर्दिष्ट किया गया है, लेकिन हम एक ही कोर पर कई मशीनों पर चल रहे कार्यों को इंटरलेव कर सकते हैं और एक उपयुक्त सिंगल थ्रेडेड फ़ंक्शन के माध्यम से परिणाम जोड़ सकते हैं। और क्या होगा यदि हम MPI का उपयोग सिंगल कोर मशीनों के एक समूह को समन्वित करने के लिए करते हैं, जो हर एक में मल्टीथ्रेडिंग है? क्या फर्क पड़ता है? मैं कहूंगा कोई नहीं। इसे सभी "समानांतर" कहें और इसके साथ किया जाए।


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