समानांतर प्रोग्रामिंग मॉडल

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

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

समानांतर प्रोग्रामिंग मॉडल का वर्गीकरण
समानांतर प्रोग्रामिंग मॉडल के वर्गीकरण को मोटे तौर पर दो क्षेत्रों में विभाजित किया जा सकता है: प्रक्रिया इंटरैक्शन और समस्या अपघटन।

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

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

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

विभाजित वैश्विक पता स्थान
विभाजित ग्लोबल एड्रेस स्पेस (पीजीएएस) मॉडल साझा मेमोरी और संदेश भेजने के बीच एक मध्य मार्ग प्रदान करते हैं। पीजीएएस एक वैश्विक मेमोरी एड्रेस स्पेस एब्स्ट्रैक्शन प्रदान करता है जो तार्किक रूप से विभाजित होता है, जहां प्रत्येक प्रक्रिया के लिए एक हिस्सा स्थानीय होता है। समानांतर प्रक्रियाएं साझा मेमोरी मॉडल की याद दिलाते हुए, वैश्विक पता स्थान पर अतुल्यकालिक रूप से संचालन (जैसे पढ़ना और लिखना) करके संचार करती हैं। हालाँकि, वैश्विक पता स्थान को किसी विशेष प्रक्रिया के साथ भागों में विभाजित करके, वे प्रोग्रामर को संदर्भ की स्थानीयता का फायदा उठाने और वितरित मेमोरी समानांतर कंप्यूटर पर कुशल कार्यान्वयन को सक्षम करने की अनुमति देते हैं। पीजीएएस कई समानांतर प्रोग्रामिंग भाषाओं और पुस्तकालयों द्वारा पेश किया जाता है, जैसे कि फोरट्रान 2008, चैपल (प्रोग्रामिंग भाषा), UPC++, और SHMEM।

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

समस्या अपघटन
एक समानांतर प्रोग्राम एक साथ निष्पादित होने वाली प्रक्रियाओं से बना होता है। समस्या अपघटन उस तरीके से संबंधित है जिसमें घटक प्रक्रियाएं तैयार की जाती हैं।

कार्य समानता
एक कार्य-समानांतर मॉडल प्रक्रियाओं, या निष्पादन के धागों पर केंद्रित होता है। ये प्रक्रियाएँ अक्सर व्यवहारिक रूप से भिन्न होंगी, जो संचार की आवश्यकता पर जोर देती हैं। कार्य समानता संदेश-संप्रेषण संचार को व्यक्त करने का एक स्वाभाविक तरीका है। फ्लिन की वर्गीकरण में, कार्य समानता को आमतौर पर एकाधिक निर्देश, एकाधिक डेटा/फ्लिन की वर्गीकरण #एमपीएमडी या एकाधिक निर्देश, एकल डेटा के रूप में वर्गीकृत किया जाता है।

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

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

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

यह भी देखें

 * स्वचालित समानांतरीकरण
 * ब्रिजिंग मॉडल
 * समवर्ती कंप्यूटिंग
 * समानांतरता की डिग्री
 * स्पष्ट समानता
 * समवर्ती और समानांतर प्रोग्रामिंग भाषाओं की सूची
 * शफ़ल एक्सचेंज के साथ ऑप्टिकल मल्टी-ट्री
 * समानांतर बाहरी मेमोरी (मॉडल)