अधिकांश भाग OpenMP के लिए और OpenCL-दूसरे से अलग कर रहे हैं। वे अपने मंच पर समांतरता के लिए डेवलपर पहुंच देने के दोनों तरीके हैं।
ओपनएमपी को कई (समान) प्रोसेसर के साथ अच्छी तरह से काम करने के लिए डिज़ाइन किया गया है, जहां लगभग बराबर काम लगभग (लगभग) स्वचालित रूप से उनके बीच खेती की जा सकती है।
ओपनसीएल कुछ अलग जानवर है, जिसमें विशेष सह-प्रोसेसर हार्डवेयर के साथ काम करते समय यह वास्तव में चमकता है। यह आपको GPU या कुछ अन्य सह-प्रोसेसर को सेल में जैसे कुछ भारी-ड्यूटी नंबर क्रंचिंग को ऑफ़लोड करने की अनुमति देगा। हालांकि, यह इस विचार के साथ भी बनाया गया था कि इसका उपयोग अन्य मुख्य प्रोसेसर का उपयोग करने के लिए किया जा सकता है, जैसा कि अब बहु-कोर कंप्यूटरों में आम है। मैं इस सुविधा को माध्यमिक मानता हूं, और यदि आप ओपनसीएल का उपयोग करने का इरादा रखते हैं, तो मैं ओपनसीएल का उपयोग करने की अनुशंसा नहीं करता।
उसने कहा, मुझे लगता है कि यह कुछ चुनौतीपूर्ण होगा, हालांकि ओपनएमपी और ओपनसीएल को एक ही समस्या में एक साथ काम करने के लिए निश्चित रूप से असंभव नहीं है।
यह सोचने वाली पहली बात यह है कि आप ओपनसीएल को क्या काम दे रहे हैं। यह निश्चित रूप से एक ऐसा मामला होगा जहां आप ओपनसीएल को जीपीयू/सह-प्रोसेसर पर चलाने के लिए चाहते हैं ... अन्य मुख्य प्रोसेसर/कोर पर नहीं, क्योंकि ओपनएमपी उन लोगों का उपयोग कर रहे हैं। यह एक ही मुख्य प्रोसेसर पर ओपनसीएल और ओपनएमपी चलाने के लिए एप्लिकेशन त्रुटियों का कारण नहीं बनना चाहिए, लेकिन यह गैर-वांछनीय शेड्यूलिंग का कारण बन जाएगा जहां ओपनएमपी और ओपनसीएल दोनों धीमी गति से चलते हैं क्योंकि वे अपने समय का एक अच्छा हिस्सा वापस स्विच करते हैं और एक दूसरे के बीच चौथाई। यह तब भी होगा जब आप एक ही समय में एक ही कोर पर किसी अन्य प्रोसेसर-भूख प्रक्रिया को चलाते हैं।
इस बारे में सोचने की दूसरी बड़ी बात यह है कि आप सह-प्रोसेसर पर चलने वाले कार्यों को शेड्यूल करने जा रहे हैं। यह सच है कि आप आधुनिक जीपीयू में से एक में बहुत काम कर सकते हैं, लेकिन पाइपलाइन और मेमोरी उपयोग के बारे में सोचने के लिए बहुत सी चीजें हैं। आप जो नहीं करना चाहते हैं वह है कि 8 अलग-अलग ओपनएमपी धागे एक ही समय में सह-प्रोसेसर को अपना काम भेजने की कोशिश कर रहे हैं। मैं केवल एक थ्रेड रखने की अनुशंसा करता हूं जो सह-प्रोसेसर के साथ सभी इंटरैक्शन का प्रबंधन करता है, इसलिए यह सुनिश्चित कर सकता है कि इसे कुशल तरीके से काम करें।
यह कहा गया, मुझे यकीन है कि ऐसे कार्यक्रम हैं जिनमें एक ही समय में कई प्रकार के कार्य हो रहे हैं, जहां सह-प्रोसेसर को एक प्रकार का कार्य हमेशा खेती जा सकती है और किसी अन्य प्रकार का कार्य संभाला जा सकता है बहु कोर मुख्य प्रोसेसर। ओपनएमपी और ओपनसीएल मिश्रण करने के लिए यह एक अच्छा उदाहरण होगा।
शुभकामनाएं!