WebCL
वेबसीएल (वेब कम्प्यूटिंग लैंग्वेज) प्लग-इन के उपयोग के बिना किसी भी संगत वेब ब्राउज़र के भीतर विषम समानांतर कंप्यूटिंग के लिए ओपनसीएल के लिए बाध्यकारी एक जावास्क्रिप्ट है, जिसकी घोषणा पहली बार मार्च 2011 में की गई थी। इसे ओपनसीएल के समान आधार पर विकसित किया गया है और इसे बाद वाले का ब्राउज़र संस्करण माना जाता है। मुख्य रूप से, वेबसीएल वेब अनुप्रयोगों को मल्टी-कोर सीपीयू और जीपीयू के साथ गति को वास्तविक बनाने की अनुमति देता है। छवि संपादन, संवर्धित वास्तविकता अनुप्रयोगों और परिष्कृत खेल जैसे समानांतर प्रसंस्करण की आवश्यकता वाले अनुप्रयोगों की बढ़ती लोकप्रियता के साथ, कम्प्यूटेशनल गति में सुधार करना अधिक महत्वपूर्ण हो गया है। इन पृष्ठभूमि कारणों से, एक गैर-लाभकारी क्रोनोस समूह ने वेबसीएल को डिजाइन और विकसित किया, जो एक पोर्टेबल कर्नेल प्रोग्रामिंग के साथ ओपनसीएल के लिए बाध्यकारी एक जावास्क्रिप्ट है, जो उपकरणों की एक विस्तृत श्रृंखला में वेब ब्राउज़र पर समानांतर कंप्यूटिंग को सक्षम करता है। संक्षेप में, वेबसीएल में दो भाग होते हैं, एक कर्नेल प्रोग्रामिंग है, जो प्रोसेसर (उपकरणों) पर चलता है और दूसरा जावास्क्रिप्ट है, जो वेब एप्लिकेशन को ओपनसीएल से जोड़ता है। वेबसीएल 1 के लिए पूर्ण और अनुमोदित विनिर्देश 19 मार्च, 2014 को जारी किया गया था। कार्यान्वयन वर्तमान में, कोई भी ब्राउज़र मूल रूप से वेबसीएल का समर्थन नहीं करता है। हालाँकि, गैर-देशी ऐड-ऑन का उपयोग वेबसीएल को लागू करने के लिए किया जाता है। उदाहरण के लिए, नोकिया ने एक वेबसीएल विस्तार विकसित किया। मोज़िला वेबजीएल कंप्यूट शेडर्स के पक्ष में वेबसीएल को लागू करने की योजना नहीं बना रहा है, जिसे बदले में वेबजीपीयू के पक्ष में हटा दिया गया था। मोज़िला (फ़ायरफ़ॉक्स)-वेबसीएल वर्किंग ड्राफ्ट सैमसंग (वेबकिट)-(अनुपलब्ध) नोकिया (फ़ायरफ़ॉक्स)-(नवंबर 2014 से नीचे, एफएफ 34 के लिए अंतिम संस्करण) इंटेल (क्रॉसवॉक)-उदाहरण सी कोड एक समानांतर प्रोग्राम की मूल इकाई कर्नेल है। एक कर्नेल कोई भी समानांतर कार्य है जिसका उपयोग किसी विशिष्ट कार्य को करने के लिए किया जाता है। अक्सर कार्यों को कर्नेल के रूप में महसूस किया जा सकता है। एक प्रोग्राम एक या अधिक कर्नेल से बना हो सकता है। एक कर्नेल को प्राप्त करने के लिए, यह आवश्यक है कि एक कार्य समानांतर हो। कुशल समानांतर एल्गोरिदम के उत्पादन में डेटा निर्भरता और निष्पादन का क्रम महत्वपूर्ण भूमिका निभाते हैं। एक सरल उदाहरण सी संकलक द्वारा किए गए लूप अनरोलिंग के मामले के बारे में सोचा जा सकता है, जहाँ एक कथन इस प्रकार हैः (i = 0; i <3; i + +) c [i] = a [i] + b [i]; में अनरोल किया जा सकता हैः c [0] = a [0] + b [0]; c [1] = a [1] + b [1]; c [2] = a [2] + b [2]; उपरोक्त कथनों को समानांतर किया जा सकता है और एक साथ चलाने के लिए बनाया जा सकता है। एक कर्नेल एक समान दृष्टिकोण का अनुसरण करता है जहां केवल ith पुनरावृत्ति का स्नैपशॉट कर्नेल के अंदर पकड़ा जाता है। आइए एक कर्नेल का उपयोग करके उपरोक्त कोड को फिर से लिखेंः _ _ कर्नेल ऐड (_ _ ग्लोबल फ्लोट * ए, _ _ ग्लोबल फ्लोट * बी, _ ग्लोबल फ्लोट * सी) {इंट आई = गेट _ ग्लोबल _ आईडी (0); यदि (आई <3) सी [आई] = ए [आई] + बी [आई];} एक वेबसीएल अनुप्रयोग चलाने में निम्नलिखित चरण शामिल हैंः उपकरणों तक पहुंच की अनुमति दें और संदर्भ प्रदान करें कर्नेल को एक उपकरण को सौंपें उपकरण से कर्नेल पुनर्प्राप्ति परिणामों को निष्पादित करने के लिए उपकरण का कारण बनें जावास्क्रिप्ट के अंदर डेटा का उपयोग करें इसके बारे में अधिक विवरण अपवाद सूची वेबसीएल में पाया जा सकता है, जो एक जावास्क्रिप्ट आधारित कार्यान्वयन है। इसके बजाय, यह एक अपवाद देता है जैसे कि आउट _ ऑफ _ रिसोर्सेज, आउट _ ऑफ _ होस्ट _ मेमोरी, या वेबसीएल-विशिष्ट वेबसीएल _ इम्प्लीमेंटेशन _ फेल्योर। अपवाद वस्तु मशीन-पठनीय नाम और त्रुटि का वर्णन करने वाले मानव-पठनीय संदेश का वर्णन करती है। वाक्यविन्यास इस प्रकार हैः अपवाद वेबसीएलएक्ससेप्शनः डीओएमईएक्ससेप्शन {डीओएमएसट्रिंग नाम;// संख्यात्मक त्रुटि कोड का एक स्ट्रिंग प्रतिनिधित्व, उदाहरण के लिए। "INVALID _ VALUE" काम कर रहा है? संदेश;// एक कार्यान्वयन-विशिष्ट विवरण कि अपवाद का कारण क्या था}; उपरोक्त कोड से, यह देखा जा सकता है कि संदेश क्षेत्र एक एन. यू. एल. एल. मान हो सकता है। अन्य अपवादों में शामिल हैंः इनवैलिड _ ऑपरेशन-यदि इस फ़ंक्शन के अवरोधक रूप को वेबसीएलसीऑलबैक इनवैलिड _ वैल्यू से कॉल किया जाता है-यदि इवेंटवैटलिस्ट खाली है तो इनवैलिड _ कॉन्टेक्स्ट-यदि इवेंटवैटलिस्ट में निर्दिष्ट कार्यक्रम उसी संदर्भ से संबंधित नहीं हैं तो इनवैलिड _ डिवाइस _ टाइप-यदि डिवाइस टाइप दिया गया है, लेकिन वैध गणना किए गए मूल्यों में से एक नहीं है, तो डिवाइस _ नॉट _ फाउंडेशन-यदि कोई वेबसीएलडीवाइस उपलब्ध नहीं है जो दिए गए डिवाइस से मेल खाता है। एक और अपवाद है जो किसी वस्तु को 'मुक्त' कहने की कोशिश करने पर उठाया जाता है। रिलीज विधि का उपयोग करने पर, ऑब्जेक्ट स्थायी रूप से हटा नहीं जाता है लेकिन यह उस ऑब्जेक्ट से जुड़े संसाधनों को मुक्त कर देता है। इस अपवाद से बचने के लिए, रिलीजऑल विधि का उपयोग किया जा सकता है, जो न केवल संसाधनों को मुक्त करता है बल्कि बनाए गए सभी संबंधित वस्तुओं को भी हटा देता है। सुरक्षा वेबसीएल, वेब अनुप्रयोगों के लिए विकसित एक ओपन-एंडेड सॉफ्टवेयर होने के नाते, डिजाइन और विकास क्षेत्रों में भी कमजोरियों के लिए बहुत गुंजाइश है। इसने वेबसीएल पर काम करने वाले डेवलपर्स को सुरक्षा को अत्यधिक महत्व देने के लिए मजबूर किया। कुछ चिंताएँ जिन्हें संबोधित किया गया था वे हैंः सीमा से बाहर स्मृति अभिगमः यह आवंटित स्थान के बाहर स्मृति स्थानों तक पहुँचने से होता है। एक हमलावर उन स्मृति स्थानों में संग्रहीत सभी महत्वपूर्ण डेटा को फिर से लिख या मिटा सकता है। जब भी ऐसा कोई मामला सामने आता है, तो संकलन समय पर एक त्रुटि उत्पन्न की जानी चाहिए, और शून्य को रन-टाइम पर वापस किया जाना चाहिए, न कि प्रोग्राम को मेमोरी को ओवरराइड करने देना चाहिए। इस भेद्यता से निपटने के लिए क्रोनोस समूह (डेवलपर्स) द्वारा एक परियोजना वेबसीएल वैलिडेटर शुरू की गई थी। मेमोरी इनिशियलाइजेशनः यह अनुप्रयोगों को पिछले अनुप्रयोगों के मेमोरी स्थानों तक पहुंचने से रोकने के लिए किया जाता है। वेबसीएल यह सुनिश्चित करता है कि वर्तमान अनुप्रयोग को चलाने से पहले शून्य के लिए उपयोग किए जाने वाले सभी बफ़र्स, चर को आरंभ करके ऐसा नहीं होता है। ओपन सी. एल. 1.2 में एक विस्तार 'सी. एल. _ के. एच. आर. _ इनिशियलाइज़ _ मेमोरी' है, जो इसे सक्षम बनाता है। सेवा से इनकारः वेब अनुप्रयोगों पर सबसे आम हमले को वेबसीएल या ब्राउज़र द्वारा पूरी तरह से समाप्त नहीं किया जा सकता है। ओपनसीएल को वॉचडॉग टाइमर और प्री-एम्प्टिव मल्टीटास्किंग प्रदान किया जा सकता है, जिसका उपयोग वेबसीएल द्वारा उन संदर्भों का पता लगाने और उन्हें समाप्त करने के लिए किया जा सकता है जो बहुत अधिक समय ले रहे हैं या बहुत सारे संसाधनों का उपभोग कर रहे हैं। पिछले एक की तरह ओपनसीएल 1.2 'क्ल _ केएचआर _ टर्मिनेट _ कॉन्टेक्स्ट' का एक विस्तार है, जो उस प्रक्रिया को समाप्त करने में सक्षम बनाता है जो सेवा हमले के इनकार का कारण बन सकती है। संबंधित ब्राउज़र बग भी देखें वेबजीएल एच. टी. एम. एल. 5 ओपनजी. एल. ओपनसी. एल. जी. पी. जी. यू. वेबजी. पी. यू. संदर्भ बाहरी लिंक वेबसी. एल. विनिर्देशन वेबसी. एल. विकी अनुप्रयोग प्रोग्रामिंग इंटरफेस क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर वेब विकास ग्राफिक्स पुस्तकालय ग्राफिक्स मानक एफ. आर.: OpenCL#WebCL