एसवाईसीएल

एसवाईसीएल विभिन्न हार्डवेयर एक्सेलेरेटर पर प्रोग्रामिंग प्रोडक्टिविटी में सुधार करने के लिए हायर लेवल प्रोग्रामिंग मॉडल है। यह प्योर सी++17 पर आधारित सिंगल-सोर्स एम्बेडेड डोमेन-स्पेसिफिक लैंग्वेज (eDSL) है। यह क्रोनोस ग्रुप द्वारा विकसित स्टैण्डर्ड है, जिसकी घोषणा मार्च 2014 में की गई थी।

नाम की उत्पत्ति
एसवाईसीएल (प्रोनोअनसेड 'सिकल') मूल रूप से सिस्टम-वाइड कंप्यूट लैंग्वेज के लिए है, किंतु 2020 से एसवाईसीएल डेवलपर्स ने कहा है कि एसवाईसीएल नाम है और उन्होंने स्पष्ट कर दिया है कि यह अब संक्षिप्त नाम नहीं है और इसमें ओपनसीएल का कोई रिफरेन्स नहीं है।

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

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

वर्जन
एसवाईसीएल को मार्च 2014 में प्रोविशनल वर्जन 1.2 के साथ जीडीसी में प्रस्तुत किया गया था, तब एसवाईसीएल 1.2 फाइनल वर्जन मई 2015 में आईडब्लूओसीएल 2015 में प्रस्तुत किया गया था।

पिछली एसवाईसीएल 1.2.1 सीरीज का लेटेस्ट वर्जन एसवाईसीएल 1.2.1 संशोधन 7 है जो 27 अप्रैल, 2020 को प्रकाशित हुआ था (पहला वर्जन 6 दिसंबर, 2017 को प्रकाशित हुआ था)।

एसवाईसीएल 2.2 प्रोविशनल को मई 2016 में आईडब्लूओसीएल 2016 में प्रस्तुत किया गया था। सी++14 और ओपनसीएल 2.2 को टारगेट करना। किंतु एसवाईसीएल कमिटी ने इस वर्जन को फाइनल रूप नहीं देने और आर्टिफीसियल इंटेलिजेंस इंजनों सहित करंट हार्डवेयर एक्सेलेरेटर की बढ़ती विविधता को संबोधित करने के लिए अधिक फ्लेक्सिबल एसवाईसीएल विनिर्देश की ओर बढ़ने को प्राथमिकता दी, जिसके कारण एसवाईसीएल 2020 हुआ।

लेटेस्ट वर्जन एसवाईसीएल 2020 संशोधन 6 है जिसे 13 नवंबर, 2022 को प्रकाशित किया गया था, यह संशोधन 2 की पहली रिलीज से डेवलपमेंट है जिसे 9 फरवरी, 2021 को प्रकाशित किया गया था, एसवाईसीएल 2020 पर यूजर और इम्प्लेमेंटर की प्रतिक्रिया को ध्यान में रखते हुए प्रोविशनल स्पेसिफिकेशन संशोधन 1, 30 जून 2020 को प्रकाशित हुआ। सी++17 और ओपनसीएल 3.0 सपोर्ट इस रिलीज़ के मुख्य टारगेट हैं। ओपनसीएल और सीयूडीए सपोर्ट वाले जीपीयू के लिए यूनिफाइड शेयर्ड मेमोरी (यूएसएम) मुख्य विशेषता है।

आईडब्लूओसीएल 2021 में रोडमैप प्रस्तुत किया गया। डीपीसी++, कंप्यूटसीपीपी, ओपन एसवाईसीएल, ट्राईएसवाईसीएल और नियोएसवाईसीएल एसवाईसीएल के मुख्य इम्प्लीमेंटेशन हैं। डेवलपमेंट में नेक्स्ट टारगेट भविष्य के एसवाईसीएल 202x में सी++20 का सपोर्ट है।

इम्प्लीमेंटेशन

 * डीपीसी++: (डेटा पैरेलल सी++) एलएलवीएम और वनएपीआई के लिए एसवाईसीएल प्रस्तुत करने के लिए इंटेल का ओपन सोर्स प्रोजेक्ट है। सी++17 और एसवाईसीएल 2020 के साथ सी++20 के भाग इस कंपाइलर फ्रेमवर्क का आधार हैं।
 * कंप्यूटसीपीपी: कम्युनिटी वर्जन के साथ फर्म कोडप्ले का एसवाईसीएल 1.2.1 कन्फॉर्मॅट फ्रेमवर्क है।
 * एडेप्टिवसीपीपी (फोर्मेली हिपएसवाईसीएल और ओपन एसवाईसीएल): इमेज या ओपनसीएल इंटरऑप के बिना इनकम्पलीट 1.2.1 सपोर्ट, आंशिक रूप से एसवाईसीएल 2020, आरओसीएम (एएमडी), सीयूडीए (एनवीडिया), ओपनएमपी (सीपीयू) और लेवल जीरो (इंटेल) का सपोर्ट करता है।
 * ट्राईएसवाईसीएल: सी++20, ओपनएमपी और ओपनसीएल पर आधारित, स्लो डेवलपमेंट, इनकम्पलीट, डीपीसी++ के टॉप पर आधारित वर्जन है।
 * नियोएसवाईसीएल: एसवाईसीएल 1.2.1 लगभग पूर्ण हो चुका है, एचपीसी एसएक्स-अरोड़ा त्सुबासा के लिए, इमेज सपोर्ट जैसी कोई ओपनसीएल स्पेसिफिक फीचर नहीं हैं।
 * एसवाईसीएल-जीटी्स: ओपनसीएल 1.2+ के लिए, सी++11 सपोर्ट पूर्ण से अधिक दूर, कोई एक्चुअल डेवलपमेंट नहीं हैं।
 * सिल्कन एक्सपेरिमेंटल स्टेट में वल्कन डिवाइस के लिए एसवाईसीएल का इम्प्लीमेंटेशन है।
 * पॉलीजिस्ट के पास एमएलआईआर के माध्यम से एसवाईसीएल को कोम्पिलिंग करने वाला फ़ोर्क है जो इंटोन कंपनी द्वारा समर्थित है।

सॉफ़्टवेयर

 * ग्रोमैक: एसवाईसीएल 2020 ग्रोमैक वर्जन 2021 का भाग है।
 * आईएसओ 26262 के सपोर्ट के साथ ऑटोनोमस ड्राइविंग के लिए ऑटोमोटिव इंडस्ट्री में उपयोग किया जाता है।

रिसोर्स
ख्रोनोस एसवाईसीएल रिसोर्स की लिस्ट बनाए रखता है। कोडप्ले एसवाईसीएल इकोसिस्टम पर अन्य जानकारी और न्यूज़ के साथ वेबसाइट sycl.tech पर ट्यूटोरियल भी प्रदान करता है।

लाइसेंस
विनिर्देशन के निर्माण के लिए सोर्स फ़ाइलें, जैसे मेकफ़ाइल्स और कुछ स्क्रिप्ट, एसवाईसीएल हेडर और एसवाईसीएल कोड सैंपल अपाचे 2.0 लाइसेंस के अंतर्गत हैं। लाइसेंस का विवरण https://www.apaसीhe.org/liसीenses/LIसीENSE-2.0.html यहां है।

अन्य एपीआई के साथ कम्पेरिजन
ओपन स्टैण्डर्ड एसवाईसीएल और ओपनसीएल, Nvidia के प्रोप्राइटरी स्टैक सीयूडीए के प्रोग्रामिंग मॉडल और एएमडी ओपन-सोर्स स्टैक द्वारा सपोर्टेड ओपन-सोर्स स्टैक आरओसीएम के एचआईपी के समान हैं।

ख्रोनोस ग्रुप एरिया में, ओपनसीएल और वल्कन (एपीआई) लो-लेवल नॉन-सिंगल सोर्स एपीआई हैं और एसवाईसीएल हाई-लेवल सिंगल-सोर्स सी++ ईडीएसएल एम्बेडेड डोमेन-स्पेसिफिक लैंग्वेज (ईडीएसएल) है।

सीयूडीए
कम्पेरिजन रूप से, सीयूडीए का सिंगल-सोर्स सी++ एम्बेडेड डोमेन-स्पेसिफिक लैंग्वेज वर्जन, जिसे वास्तव में सीयूडीए रनटाइम एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस नाम दिया गया है, कुछ लिमिट तक एसवाईसीएल के समान है। किंतु वास्तव में सीयूडीए का कम ज्ञात नॉन सिंगल-सोर्स वर्जन है जिसे ओपनसीएल के समान सीयूडीए ड्राइवर एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस कहा जाता है, और उदाहरण के लिए सीयूडीए रनटाइम एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस इम्प्लीमेंटेशन द्वारा उपयोग किया जाता है।

एसवाईसीएल सी++ एएमपी फीचर का विस्तार करता है, जिससे प्रोग्रामर को सीयूडीए के अपोजिट में (सीयूडीए 6 में यूनिफाइड मेमोरी के प्रारंभ से पहले) बफ़र्स और एक्सेसर्स का उपयोग करके होस्ट और डिवाइस के मध्य डेटा को स्पष्ट रूप से ट्रांसफरिंग करने से रिलीविंग मिलती है। किंतु एसवाईसीएल 2020 से प्रारंभ करके, सीयूडीए में यूनिफाइड मेमोरी के समान लोअर-लेवल के प्रोग्रामिंग मॉडल का उपयोग करने के लिए बफ़र्स और एक्सेसर्स के अतिरिक्त यूएसएम का उपयोग करना भी संभव है।

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

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

सीयूडीए बैकएंड को टारगेट करने वाले कम से कम 3 ज्ञात एसवाईसीएल इम्प्लीमेंटेशन हैं।

आरओसीएम हिप
आरओसीएम हिप को Nvidia जीपीयू, एएमडी जीपीयू और x86 सीपीयू को टारगेट करने वाले सीयूडीए के क्लोन के रूप में देखा जा सकता है। इस प्रकार आरओसीएम एचआईपी एसवाईसीएल के कम्पेर्ड में लोअर लेवल एपीआई है और सीयूडीए के साथ कम्पेरिजन में उल्लिखित अधिकांश टिप्पणियाँ प्रारम्भ होती हैं।

आरओसीएम हिप में एसवाईसीएल से कुछ सिमिलरटीज हैं, इस अर्थ में कि यह विभिन्न वेंडर्स (एएमडी और Nvidia) और एक्सेलरेटर टाइप्स (जीपीयू और सीपीयू) को टारगेट कर सकता है। किंतु एसवाईसीएल बैकएंड की अवधारणा के साथ एप्लिकेशन में संभावित रूप से एक ही समय में किसी भी टाइप के एक्सेलरेटर और किसी भी वेंडर को इम्प्लीमेंटेशन के अनुसार टारगेट कर सकता है। एसवाईसीएल भी प्योर सी++ है जबकि हिप सीयूडीए से इनहेरिटेड कुछ एक्सटेंशन का उपयोग करता है, जो किसी भी सीपीयू को टारगेट करने के लिए नार्मल सी++ कंपाइलर का उपयोग करने से प्रिवेंट करता है।

एचआईपी बैकएंड को टारगेट करने वाले एसवाईसीएल के कम से कम 2 ज्ञात इम्प्लीमेंटेशन हैं, वनएपीआई डीपीसी++ और ओपन एसवाईसीएल हिप पर ओपन एसवाईसीएल इम्प्लीमेंटेशन,, एसवाईसीएल प्रोग्रामिंग को सीयूडीए और हिप में ऐड करता है।

अन्य प्रोग्रामिंग मॉडल
एसवाईसीएल में कोक्कोस प्रोग्रामिंग मॉडल से कई समानताएं हैं, जिसमें ओपाके मल्टी-डायमेंशनल ऐरे ऑब्जेक्ट (एसवाईसीएल बफ़र्स और कोक्कोस एरेज़) का उपयोग, पैरेलल एक्सेक्यूशन के लिए मल्टी-डायमेंशनल रेंजस और रिडक्शन (एसवाईसीएल 2020 में जोड़ा गया) सम्मिलित है। कोक्कोस कम्युनिटी की प्रतिक्रिया के उत्तर में एसवाईसीएल 2020 में कई फीचर ऐड किये गए।

यह भी देखें

 * सी++
 * ओपनएसीसी
 * ओपनसीएल
 * ओपनएमपी
 * एसपीआईआर
 * वल्कन
 * सी++ एएमपी
 * क्यूडा
 * आरओसीएम
 * मेटल (एपीआई)