प्रोग्रामर प्रोग्रामिंग मॉडल को समानता के लिए C / POSIX को बदलने के लिए क्यों परिभाषित करते हैं?


10

नए कंप्यूटर आर्किटेक्चर के प्रदाता नियमित रूप से नए प्रोग्रामिंग मॉडल पेश करने की कोशिश करते हैं, उदाहरण के लिए हाल ही में GPGPUs के लिए CUDA / OpenCL, और प्लेटफ़ॉर्म समानता के नियंत्रण इंटरफ़ेस के रूप में C / POSIX को विस्थापित करें। (पॉस और कोइनिंग, एएम 3: टू-ए हार्डवेयर यूनिक्स एक्सेलेरेटर टू-कोर, 2015

आर्किटेक्चरल डिजाइनर समानांतर प्रोग्रामिंग के लिए C / POSIX को विस्थापित करने के लिए नए प्रोग्रामिंग मॉडल डिजाइन करने की कोशिश क्यों करते हैं? क्या C / POSIX मल्टीप्रोसेसरों के लिए अच्छी तरह से अनुकूल नहीं है या C / POSIX के मूल लेखकों को C / POSIX डिजाइन समय पर मन में समानांतर कंप्यूटिंग की आवश्यकता नहीं है? या क्या यह मामला है कि प्रोग्रामर को C / POSIX की तुलना में अधिक क्षमताओं की आवश्यकता हो सकती है, इस प्रकार नए डिजाइनों जैसे CUDA / OpenCL आदि का सहारा लेना चाहिए?


7
याद रखें, सॉफ्टवेयर हार्डवेयर का एक अमूर्त हिस्सा है। यदि हार्डवेयर बहुत अधिक बदलता है, तो सॉफ़्टवेयर एब्स्ट्रेक्शन अब एक अच्छा नहीं हो सकता है। मेरा मानना ​​है कि GPU के लिए POSIX थ्रेड्स का उपयोग करने पर विचार करने पर यह निश्चित रूप से सच है, लेकिन मैं इसे किसी और को पूरी तरह से एक उत्तर में समझाने के लिए छोड़ दूंगा।

जवाबों:


10

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

दूसरी ओर, CUDA / OpenCL मल्टीथ्रेडिंग के बारे में बिल्कुल नहीं हैं, लेकिन बड़े पैमाने पर वेक्टर क्षमताओं का उपयोग करने के बारे में हैं। (वे मल्टीथ्रेडिंग भी कर सकते हैं, लेकिन वेक्टर करना महत्वपूर्ण बात है)।


9

SIMD समानांतर प्रोग्रामिंग और POSIX का उपयोग करने वाले अधिक पारंपरिक समानांतर प्रोग्रामिंग मॉडल के बीच एक अंतर है ।

SIMD वह मॉडल है जिसका उपयोग CUDA, OpenCL, आदि करते हैं। निर्देशों का एक एकल सेट है जो कई थ्रेड्स द्वारा एक साथ निष्पादित किया जाता है, प्रत्येक डेटा के अपने पूल पर सक्रिय होता है। यह 3-डी ग्राफिक्स जैसी चीज के लिए बहुत उपयोगी है, जहां बड़ी संख्या में समान रूपांतरण लागू होते हैं।

POSIX मॉडल मानता है कि प्रत्येक थ्रेड एसिंक्रोनस रूप से चलता है, और प्रत्येक थ्रेड संभवतः पूरी तरह से अलग कोड निष्पादित कर सकता है।

दोनों मॉडलों की अपनी ताकत और कमजोरियां हैं - यही कारण है कि वे अलग हैं। POSIX अधिक लचीला है, लेकिन CUDA / OpenCL / etc। विशेष हार्डवेयर का लाभ उठा सकते हैं, एक बार में हजारों (आमतौर पर सरल) थ्रेड चल रहे हैं।

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