मैं अपने उत्तर के ब्लॉग-पोस्ट प्रारूप के लिए पहले से माफी माँगता हूँ। मैं खुद को समानांतर कंप्यूटिंग की दुनिया का एक छोटा सा अवलोकन करने में मदद नहीं कर सका।
आप समानांतर प्रोग्रामिंग मॉडल को लगभग दो श्रेणियों में वर्गीकृत कर सकते हैं: नियंत्रण-प्रवाह और डेटा-प्रवाह मॉडल।
नियंत्रण प्रवाह मॉडल , हर प्रोग्राम योग्य कंप्यूटर मूल रूप से आज एक स्पष्ट नियंत्रण कार्यक्रम के संदर्भ में समानांतरवाद काम करने के लिए प्रयास करें। मूलभूत समस्या से निबटा जा रहा है कि इस तरह के 'वॉन न्यूमैन आर्किटेक्चर' को समानांतर निष्पादन के लिए डिज़ाइन नहीं किया गया था, बल्कि कुशल अनुक्रमिक संगणना थी। इस तरह के संदर्भ में समानता मूल मॉड्यूल (स्मृति, नियंत्रण, अंकगणित) के कुछ हिस्सों की नकल करके प्राप्त की जाती है।
केवल अंकगणित दोहराए जाने से आपको SIMD के निर्देश मिलते हैं, सभी ALU एक ही प्रोग्राम काउंटर (PC) को साझा करते हैं और इस प्रकार हमेशा समान संचालन को अलग-अलग डेटा पर निष्पादित करते हैं।
ALU और PC को डुप्लिकेट करना लेकिन कंट्रोल यूनिट के अंदर इंस्ट्रक्शन सीक्वेंसर को रखना आपको आउट ऑफ ऑर्डर (OOO) एक्ज़ीक्यूटेशन देता है जो कुछ पाइपलाइन-समानता को जन्म देता है। इस श्रेणी में आपके पास वेरी लॉन्ग इंस्ट्रक्शन वर्ड (वीएलडब्ल्यूआई) और ब्रांच-प्रीडिक्शन तकनीक भी हैं। आप इस श्रेणी को शायद ही किसी सॉफ्टवेयर स्तर पर देखते हैं।
थोड़ा आगे जाकर पूरे 'कोर' को डुप्लिकेट किया जा रहा है लेकिन मेमोरी को साझा रखते हुए, ये वर्तमान मल्टीकोर प्रोसेसर हैं जो आपको कार्य (या थ्रेड) समानता देते हैं। इस संदर्भ में स्मृति साझा करना आपको बहुत, बहुत कठिन और सूक्ष्म समसामयिक मुद्दे देता है । वर्तमान मल्टीकोर पर समानांतर गणना इस प्रकार पूरी तरह से तुल्यकालन / संगामिति समस्याओं, प्रदर्शन के सावधानीपूर्वक संतुलन (सिंक नहीं) और वांछित शब्दार्थ (पूरी तरह से सिंक्रनाइज़, अनुक्रमिक निष्पादन शब्दार्थ) के आसपास घूम रही है। इसके उदाहरण हैं PRAM या अधिक लोकप्रिय इन दिनों Csh ofshoots जैसे कि fork / join ( IntelTBB , Java.Utils.Concurrency)। सीएसपी और एक्टर मॉडल कंसीडर मॉडल हैं, लेकिन जैसा कि ऊपर उल्लेख किया गया है कि कॉम्पेक्ट और समानता एक साझा-मेमोरी वातावरण में धुंधले हो जाते हैं। nb समानतावाद प्रदर्शन के लिए है, सही शब्दार्थ को बनाए रखने के लिए संगामिति।
डुप्लिकेटिंग मेमोरी आपको या तो नेटवर्क वाले कंप्यूटर देती है जो MPI और उसके ilk के साथ प्रोग्राम करती है या सिर्फ अजीब गैर-वॉन न्यूमैन आर्किटेक्चर जैसे कि नेटवर्क-ऑन-ए-चिप प्रोसेसर (क्लाउड प्रोसेसर, ट्रांसप्यूटर, तिलेरा)। UMA या NUMA जैसे मेमोरी मॉडल साझा मेमोरी के भ्रम को बनाए रखने की कोशिश करते हैं और सॉफ़्टवेयर या हार्डवेयर स्तर पर मौजूद हो सकते हैं। MPI कार्यक्रम-स्तरीय समानता को बनाए रखता है और केवल संदेश के माध्यम से संचार करता है। संदेश पासिंग का उपयोग कम्युनिकेशन और कंसीडर (ट्रांसप्यूटर) के लिए एक हार्डवेयर स्तर पर भी किया जाता है।
दूसरी श्रेणी डेटा-प्रवाह मॉडल हैं । ये कंप्यूटर युग की भोर में डिज़ाइन किए गए थे और वॉन नेज़ान डिज़ाइन से बचने के लिए समानांतर संगणनाओं को लिखने और निष्पादित करने के तरीके के रूप में। क्रमिक प्रदर्शन में तेजी के बाद 80 के दशक में ये प्रचलन से बाहर हो गए हैं (समानांतर कंप्यूटिंग के लिए)। हालाँकि, कई समानांतर प्रोग्रामिंग सिस्टम जैसे Google MapReduce, Microsoft का Dryad या Intel का समवर्ती संग्रह वास्तव में डेटाफ़्लो कम्प्यूटेशनल मॉडल हैं। कुछ बिंदु पर वे एक ग्राफ के रूप में संगणना का प्रतिनिधित्व करते हैं और निष्पादन को निर्देशित करने के लिए इसका उपयोग करते हैं।
मॉडल के कुछ हिस्सों को निर्दिष्ट करके आपको डेटाफ़्लो मॉडल के लिए विभिन्न श्रेणियां और शब्दार्थ प्राप्त होते हैं। आप ग्राफ़ के आकार को क्या प्रतिबंधित करते हैं: DAG (CnC, ड्रायड), ट्री (मैप्रेड्यूस), डिग्राफ? क्या सख्त तुल्यकालन शब्दार्थ हैं ( चमक), प्रतिक्रियाशील प्रोग्रामिंग]? क्या आप एक स्थिर शेड्यूल (StreaMIT) करने में सक्षम होने के लिए पुनरावृत्ति को अस्वीकार करते हैं या आप एक गतिशील अनुसूचक (Intel CnC) होने से अधिक अभिव्यंजक शक्ति प्रदान करते हैं? क्या आवक या आउटगोइंग किनारों की संख्या की सीमा है? क्या आने वाले डेटा का एक सबसेट उपलब्ध होने पर फायरिंग शब्दार्थ नोड को फायरिंग की अनुमति देता है? क्या डेटा (स्ट्रीम प्रोसेसिंग) या एकल डेटा टोकन (स्टैटिक / डायनेमिक सिंगल असाइनमेंट) की धार धाराएँ हैं। संबंधित कार्य के लिए आप अरविंद, के। कवि, जे जैसे लोगों के डेटाफ्लो अनुसंधान कार्य को देखकर शुरू कर सकते हैं। तेज, डब्ल्यू। एकरमैन, आर। जगन्नाथन, आदि।
संपादित करें: पूर्णता के लिए। मुझे संकेत देना चाहिए कि समानांतर कटौती-चालित और पैटर्न-चालित मॉडल भी हैं। कमी की रणनीतियों के लिए आपके पास मोटे तौर पर ग्राफ-कमी और स्ट्रिंग-कमी है। हास्केल मूल रूप से ग्राफ़-रिडक्शन का उपयोग करता है, जो क्रमिक साझा-मेमोरी सिस्टम पर एक बहुत ही कुशल रणनीति है। स्ट्रिंग-रिडक्शन डुप्लिकेट काम करता है, लेकिन इसमें एक निजी-मेमोरी गुण होता है जो इसे बेहतर रूप से समानांतर रूप से समानांतर होने के लिए अनुकूल बनाता है। पैटर्न-संचालित मॉडल समानांतर तर्क भाषाएं हैं, जैसे समवर्ती प्रोलॉग। अभिनेता मॉडल एक पैटर्न-संचालित मॉडल भी है, लेकिन निजी मेमोरी विशेषताओं के साथ।
पुनश्च। मैं 'मॉडल' शब्द का व्यापक रूप से उपयोग करता हूं, दोनों औपचारिक और प्रोग्रामिंग उद्देश्यों के लिए अमूर्त मशीनों को कवर करता हूं।