एसवाईसीएल

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

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

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

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

संस्करण
SYCL को मार्च 2014 में गेम डेवलपर्स सम्मेलन  में पेश किया गया था अनंतिम संस्करण 1.2, तब SYCL 1.2 अंतिम संस्करण था मई 2015 में IWOCL 2015 में पेश किया गया। पिछली SYCL 1.2.1 श्रृंखला का नवीनतम संस्करण SYCL 1.2.1 संशोधन 7 है जो 27 अप्रैल, 2020 को प्रकाशित हुआ था (पहला संस्करण 6 दिसंबर, 2017 को प्रकाशित हुआ था) ).

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

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

IWOCL 2021 में एक रोडमैप प्रस्तुत किया गया। DPC++, ComputeCpp, Open SYCL, triSYCL और neoSYCL SYCL के मुख्य कार्यान्वयन हैं। विकास में अगला लक्ष्य भविष्य के SYCL 202x में C++20 का समर्थन है।

कार्यान्वयन

 * डीपीसी++: (डेटा पैरेलल सी++) एलएलवीएम और वनएपीआई के लिए एसवाईसीएल पेश करने के लिए इंटेल का एक ओपन सोर्स प्रोजेक्ट है। C++17 और SYCL 2020 के साथ C++20 के भाग इस कंपाइलर फ्रेमवर्क का आधार हैं।
 * ComputeCpp: सामुदायिक संस्करण के साथ फर्म कोडप्ले का SYCL 1.2.1 अनुरूप ढांचा
 * एडेप्टिवसीपीपी (पूर्व में हिपएसवाईसीएल और ओपन एसवाईसीएल): इमेज या ओपनसीएल इंटरऑप के बिना अधूरा 1.2.1 समर्थन, आंशिक रूप से एसवाईसीएल 2020, आरओसीएम (एएमडी), सीयूडीए (एनवीडिया), ओपनएमपी (सीपीयू) और लेवल जीरो (इंटेल) का समर्थन करता है।
 * triSYCL: C++20, OpenMP और OpenCL पर आधारित, धीमा विकास, अधूरा, DPC++ के शीर्ष पर आधारित संस्करण के साथ
 * neoSYCL: SYCL 1.2.1 लगभग पूर्ण, hpc SX-Aurora Tsubasa के लिए, छवि समर्थन जैसी कोई OpenCL विशिष्ट सुविधाएँ नहीं
 * एसवाईसीएल-जीटीएक्स: सी++11 समर्थन, ओपनसीएल 1.2+ के लिए, पूर्ण से बहुत दूर, कोई वास्तविक विकास नहीं
 * सिल्कन प्रायोगिक अवस्था में वल्कन उपकरणों के लिए एसवाईसीएल का कार्यान्वयन है।
 * पॉलीजिस्ट के पास एमएलआईआर के माध्यम से एसवाईसीएल को संकलित करने वाला एक कांटा है जो Inteon कंपनी द्वारा समर्थित है।

सॉफ़्टवेयर

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

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

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

अन्य एपीआई के साथ तुलना
खुले मानक SYCL और OpenCL, Nvidia के मालिकाना स्टैक CUDA के प्रोग्रामिंग मॉडल और ओपन-सोर्स स्टैक ROCm से ROCm#HIP प्रोग्रामिंग के समान हैं, जो एडवांस्ड माइक्रो डिवाइसेस द्वारा समर्थित हैं।

ख्रोनोस ग्रुप क्षेत्र में, ओपनसीएल और वल्कन (एपीआई) निम्न-स्तरीय गैर-एकल स्रोत एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस हैं और एसवाईसीएल उच्च-स्तरीय एकल-स्रोत सी++ ईडीएसएल|एम्बेडेड डोमेन-विशिष्ट भाषा (ईडीएसएल) है।

सीयूडीए
तुलनात्मक रूप से, CUDA का एकल-स्रोत C++ eDSL|एम्बेडेड डोमेन-विशिष्ट भाषा संस्करण, जिसे वास्तव में CUDA रनटाइम एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस नाम दिया गया है, कुछ हद तक SYCL के समान है। लेकिन वास्तव में CUDA का एक कम ज्ञात गैर एकल-स्रोत संस्करण है जिसे CUDA ड्राइवर एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस कहा जाता है, जो OpenCL के समान है, और उदाहरण के लिए CUDA रनटाइम एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस कार्यान्वयन द्वारा उपयोग किया जाता है।

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

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

C++ AMP और CUDA के विपरीत, SYCL बिना किसी C++ एक्सटेंशन के एक शुद्ध C++ eDSL है, जो बिना किसी विशिष्ट कंपाइलर के शुद्ध रनटाइम पर निर्भर बुनियादी CPU कार्यान्वयन की अनुमति देता है। यह किसी एप्लिकेशन को डीबग करने या किसी नए आर्किटेक्चर के लिए प्रोटोटाइपिंग के लिए बहुत उपयोगी है, बिना आर्किटेक्चर और कंपाइलर अभी तक उपलब्ध नहीं है।

CUDA बैकएंड को लक्षित करने वाले कम से कम 3 ज्ञात SYCL कार्यान्वयन हैं।

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

ROCm HIP में SYCL से कुछ समानताएँ हैं, इस अर्थ में कि यह विभिन्न विक्रेताओं (AMD और Nvidia) और त्वरक प्रकारों (GPU और CPU) को लक्षित कर सकता है। लेकिन एसवाईसीएल बैकएंड की अवधारणा के साथ एक ही एप्लिकेशन में संभावित रूप से एक ही समय में किसी भी प्रकार के त्वरक और किसी भी विक्रेता को कार्यान्वयन के अनुसार लक्षित कर सकता है। SYCL भी शुद्ध C++ है जबकि HIP CUDA से विरासत में मिले कुछ एक्सटेंशन का उपयोग करता है, जो किसी भी CPU को लक्षित करने के लिए सामान्य C++ कंपाइलर का उपयोग करने से रोकता है।

एचआईपी बैकएंड को लक्षित करने वाले एसवाईसीएल के कम से कम 2 ज्ञात कार्यान्वयन हैं, वनएपीआई डीपीसी++ और ओपन एसवाईसीएल। ओपन SYCL कार्यान्वयन, HIP पर, SYCL प्रोग्रामिंग को CUDA और HIP में जोड़ता है।

अन्य प्रोग्रामिंग मॉडल
एसवाईसीएल में ट्रिलिनोस प्रोग्रामिंग मॉडल से कई समानताएं हैं, जिसमें अपारदर्शी बहु-आयामी सरणी ऑब्जेक्ट (एसवाईसीएल बफ़र्स और कोक्कोस एरेज़), समानांतर निष्पादन के लिए बहु-आयामी श्रेणियां और कटौती (एसवाईसीएल 2020 में जोड़ा गया) का उपयोग शामिल है। कोक्कोस समुदाय की प्रतिक्रिया के जवाब में एसवाईसीएल 2020 में कई सुविधाएँ जोड़ी गईं।

यह भी देखें

 * सी++
 * ओपनएसीसी
 * ओपनसीएल
 * ओपनएमपी
 * मानक पोर्टेबल इंटरमीडिएट प्रतिनिधित्व
 * वल्कन
 * सी++ एएमपी
 * क्यूडा
 * आरओसीएम
 * धातु (एपीआई)

बाहरी संबंध

 * Khronos SYCL webpage
 * The SYCL specifications in Khronos registry
 * C++17 ParallelSTL in SYCL
 * SYCL tech resources
 * Codeplay ComputeCpp SYCL implementation
 * Implementation of SYCL started by Intel with the goal of Clang/LLVM up-streaming
 * hipSYCL: implementation of SYCL 1.2.1 over AMD HIP/NVIDIA CUDA
 * triSYCL open-source SYCL implementation
 * SYCL Conference @ IWOCL
 * "SYCL 2020 Launches with New Name, New Features, and High Ambition", HPCWire article (2021 Feb. 9th)
 * James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian: "Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL", Apress (2021), OpenAccess.