क्या रोब पाईक का मतलब
आप मन में एक एल्गोरिथ्म का सार रूप है, तो आप फिर अगर आप यह संदेश फैलाना या साझा मेमोरी या शायद हाइब्रिड के साथ लागू करेगा चुनना है। आपको मेमोरी एक्सेस (NUMA, UMA, आदि) और टोपोलॉजी (हाइपरक्यूब, टोरस, रिंग, मेष, ट्री इत्यादि) का उपयोग करने पर भी विचार करना होगा
यह किसी ऐसे व्यक्ति के लिए बहुत काम करता है जो सिर्फ चाहता है कुछ, शायद सरल, समानांतर तरीके से किया जाता है (उदाहरण के लिए समानांतर)।
और यह बहुत काम है, खासकर यदि आप टोपोलॉजी बदलते हैं (तो आप इसके सभी फायदे प्राप्त कर सकते हैं)।
तो आप समानांतर कोड लिखते हैं (यह सरल या जटिल हो) और वीएम या कंपाइलर चुनने का सबसे अच्छा तरीका क्या होगा, इसे अनुक्रमिक तरीके से भी चला रहा है!
महत्वपूर्ण संपादित करें (एक उदाहरण .net के लिए टास्क समानांतर लाइब्रेरी होगा):
मैं उल्लेख करना चाहिए कि मैं नहीं एक कार्यक्रम/एल्गोरिथ्म में संगामिति के बारे में बात कर रहा हूँ और स्वतंत्र कार्यक्रमों है कि एक प्रणाली में चलाने के बीच ।
आपने कहा था कि
यह अच्छी तरह से समझ रहा है कि संगामिति छोटे घटकों में एक जटिल समस्या के अपघटन है। आप सही तरीके से छोटे भागों में कुछ विभाजित नहीं कर सकते हैं, तो यह संगामिति
का उपयोग कर इसे हल करने के लिए मुश्किल है, लेकिन यह गलत है b/c उन छोटे घटकों एक अनुक्रमिक तरीके पूरा करने के लिए एक-दूसरे पर निर्भर हो सकता है, तो भले ही आप छोटे घटकों में विभाजित होते हैं, इसका मतलब यह नहीं है कि आप समवर्ती/समांतरता प्राप्त करते हैं।
समानांतर और वितरित एल्गोरिदम के मेरे सभी कक्षाओं में (दोनों बी एस और एमएस में) हम कभी नहीं के बारे में बात "संगामिति हम प्राप्त की और अब की समानांतरवाद प्राप्त करने के लिए कैसे देखते हैं।" यदि आप वर्णन और एल्गोरिदम के लिए समवर्ती शब्द का उपयोग करते हैं तो आप समांतरता और इसके विपरीत बताते हैं।
साहित्य में आपको वितरित और समांतर के बीच एक पतली रेखा भी मिल जाएगी।
एक एल्गोरिदमिक दृष्टिकोण से आप समरूपता, समांतरता और वितरित का उपयोग कर सकते हैं और आपको एक ही विचार मिलता है।
एक कार्यान्वयन बिंदु से, यदि आप "समांतरता" कहते हैं तो आप आमतौर पर एक प्रोग्राम का इरादा रखते हैं जो स्थानीय कंप्यूटर या क्लस्टर (साझा मेमोरी संचार) पर चलता है, और जब आप ग्रिड पर प्रोग्राम चलाते हैं तो "वितरित" होता है (संदेश पासिंग संचार)।
अब, दोनों वितरित और समांतरता समेकन का अर्थ है।
मुझे लगता है कि आपको इन शर्तों के सटीक अर्थ के बारे में अधिक संदेह होना चाहिए क्योंकि साहित्य में भी (और मैं उन लोगों के बारे में बात करता हूं जो वास्तव में इस क्षेत्र में योगदान देते हैं और न केवल कुछ भाषा का निर्माण करते हैं) उनका उपयोग व्यक्त करने के लिए किया जाता है अमूर्त अवधारणा।
एल्गोरिदम (इसे प्रोग्राम करें) पर समेकन का मतलब कोड के टुकड़े होने का मतलब है जो कोड के अन्य टुकड़ों से स्वतंत्र हो सकता है, भले ही वे अंततः कोड के कुछ अन्य टुकड़ों की प्रतीक्षा करें (अम्दाहल के कानून को वास्तव में निहितार्थ देखने के लिए देखें इस का)।
तो जब भी आपके पास एल्गोरिदम/प्रोग्राम में समेकन होता है तो आपके समांतरता भी होती है।
मुझे लगता है कि इसके पीछे विचार को बेहतर ढंग से समझने के लिए कुछ समांतर और वितरित एल्गोरिदम लागू करना बेहतर है। यदि आप सी/सी ++ जानते हैं तो आप समानांतर (साझा मेमोरी) कार्यान्वयन के लिए वितरित (संदेश पासिंग) कार्यान्वयन और ओपनएमपी के लिए ओपनएमपीआई का उपयोग कर सकते हैं।
संपादित करें:
उन्होंने यह भी सार सिद्धांत और जिस तरह से यह लागू किया गया है के रूप में समानांतर रूप में संगामिति अर्थ हो सकता है [साझी स्मृति, संदेश पासिंग, दोनों के बीच हाइब्रिड; मेमोरी acces का प्रकार (numa, uma, आदि)]।
यहां खुली समाप्ति चर्चा के लिए थोड़ा अधिक दायरा है। मैंने प्रोग्रामर से पूछा है। एसई मोड अगर यह वहां पर काम करेगा। धन्यवाद। – Kev