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 પુનરાવૃત્તિનો સ્નેપશોટ લેવામાં આવે છે. ચાલો કર્નલનો ઉપયોગ કરીને ઉપરોક્ત કોડને ફરીથી લખીએઃ _ _ કર્નલ એડ (_ _ ગ્લોબલ ફ્લોટ * a, _ _ ગ્લોબલ ફ્લોટ * b, _ ગ્લોબલ ફ્લોટ * c) {int i = ગેટ _ ગ્લોબલ _ આઈડી (0); જો (i <3) c [i] = a [i] + b [i];} વેબસીએલ એપ્લિકેશન ચલાવવા માટે નીચેના પગલાંઓનો સમાવેશ થાય છેઃ ઉપકરણોની ઍક્સેસને મંજૂરી આપો અને સંદર્ભ પ્રદાન કરો ઉપકરણને કર્નલ પર હાથ આપો ઉપકરણમાંથી કર્નલ રીટ્રીવ પરિણામોને ચલાવવા માટેનું કારણ ઉપકરણનો ઉપયોગ જાવાસ્ક્રિપ્ટની અંદર ડેટાનો ઉપયોગ કરો તે વિશેની વધુ વિગતો અપવાદ સૂચિ વેબસીએલ પર મળી શકે છે, જે જાવાસ્ક્રિપ્ટ આધારિત અમલીકરણ છે. તેના બદલે, તે OUT _ OF _ RESORCES, OUT _ OF _ HOST _ MEMORY, અથવા વેબસીએલ-વિશિષ્ટ WEBCL _ IMPLEMENTAIEN _ FAILURE જેવા અપવાદોને ફેંકે છે. અપવાદ ઓબ્જેક્ટ ભૂલનું વર્ણન કરતા મશીન-વાંચી શકાય તેવા નામ અને માનવ-વાંચી શકાય તેવા સંદેશનું વર્ણન કરે છે. વાક્યરચના નીચે પ્રમાણે છેઃ અપવાદ વેબસીએલએક્સસેપ્શનઃ ડીઓએમઇએક્સસેપ્શન {ડીઓએમએસટ્રિંગ નામ;// આંકડાકીય ભૂલ કોડની સ્ટ્રિંગ રજૂઆત, દા. ત. "INVALID _ VALUE" શું કરે છે? સંદેશ;// અપવાદનું કારણ શું હતું તેનું અમલીકરણ-વિશિષ્ટ વર્ણન}; ઉપરના કોડમાંથી, તે જોઇ શકાય છે કે સંદેશ ક્ષેત્ર એ એનયુએલએલ મૂલ્ય હોઈ શકે છે. અન્ય અપવાદોમાં નીચેનાનો સમાવેશ થાય છેઃ INVALID _ OS-જો આ કાર્યનું અવરોધિત સ્વરૂપ વેબસીએલસી કોલબૅક INVALID _ VALUE માંથી બોલાવવામાં આવે-જો ઇવેન્ટવેઇટલિસ્ટ ખાલી INVALID _ CONTEXT હોય-જો ઇવેન્ટવેઇટલિસ્ટમાં ઉલ્લેખિત ઇવેન્ટ્સ સમાન સંદર્ભ INVALID _ DEVICE _ TYPE સાથે સંબંધિત ન હોય-જો ઉપકરણ પ્રકાર આપવામાં આવ્યો હોય, પરંતુ તે માન્ય ગણતરી કરેલ મૂલ્યોમાંથી એક નથી DEVICE _ NOT _ FOUND-જો ત્યાં કોઈ વેબસીએલડીવિસ ઉપલબ્ધ ન હોય જે આપેલ ઉપકરણ સાથે મેળ ખાય છે. બીજો એક અપવાદ છે જે 'મુક્ત' થયેલ વસ્તુને કૉલ કરવાનો પ્રયાસ કરવા પર ઉઠાવવામાં આવે છે. પ્રકાશન પદ્ધતિનો ઉપયોગ કરવા પર, ઓબ્જેક્ટ કાયમી ધોરણે કાઢી નાખવામાં આવતો નથી પરંતુ તે ઓબ્જેક્ટ સાથે સંકળાયેલા સંસાધનોને મુક્ત કરે છે. આ અપવાદને ટાળવા માટે, રિલીઝઑલ પદ્ધતિનો ઉપયોગ કરી શકાય છે, જે માત્ર સંસાધનોને જ મુક્ત કરતી નથી પણ બનાવેલી તમામ સંકળાયેલ વસ્તુઓને પણ કાઢી નાખે છે. સુરક્ષા વેબસીએલ, વેબ એપ્લિકેશન્સ માટે વિકસિત એક ઓપન-એન્ડેડ સોફ્ટવેર હોવાથી, ડિઝાઇન અને વિકાસ ક્ષેત્રોમાં પણ નબળાઈઓ માટે ઘણો અવકાશ છે. આનાથી વેબસીએલ પર કામ કરતા વિકાસકર્તાઓને સુરક્ષાને સૌથી વધુ મહત્વ આપવાની ફરજ પડી. કેટલીક ચિંતાઓ કે જેને સંબોધવામાં આવી હતી તે છેઃ આઉટ-ઓફ-બાઉન્ડ્સ મેમરી એક્સેસઃ આ ફાળવવામાં આવેલી જગ્યાની બહાર મેમરી સ્થાનોને ઍક્સેસ કરીને થાય છે. હુમલાખોર તે મેમરી સ્થાનોમાં સંગ્રહિત તમામ મહત્વપૂર્ણ ડેટાને ફરીથી લખી અથવા ભૂંસી શકે છે. જ્યારે પણ આવો કેસ ઊભો થાય છે, ત્યારે સંકલન સમયે ભૂલ પેદા થવી આવશ્યક છે, અને શૂન્યને રન-ટાઇમ પર પરત કરવું આવશ્યક છે, પ્રોગ્રામને મેમરીને ઓવરરાઇડ ન કરવા દો. આ નબળાઈને સંભાળવા માટે ક્રોનોસ જૂથ (વિકાસકર્તાઓ) દ્વારા વેબસીએલ વેલિડેટર પ્રોજેક્ટ શરૂ કરવામાં આવ્યો હતો. મેમરી ઇનિશિયલાઈઝેશનઃ આ એપ્લિકેશનોને અગાઉના એપ્લિકેશનોના મેમરી સ્થાનોને ઍક્સેસ કરતા અટકાવવા માટે કરવામાં આવે છે. વેબસીએલ એ સુનિશ્ચિત કરે છે કે વર્તમાન એપ્લિકેશનને ચલાવતા પહેલા શૂન્ય માટે ઉપયોગમાં લેવાતા તમામ બફર, ચલને પ્રારંભ કરીને આવું થતું નથી. ઓપનસીએલ 1.2 માં 'ક્લ _ કેએચઆર _ ઇનિશિયલાઈઝ _ મેમરી' વિસ્તરણ છે, જે આને સક્ષમ કરે છે. સેવાનો અસ્વીકારઃ વેબ એપ્લિકેશન્સ પરનો સૌથી સામાન્ય હુમલો વેબસીએલ અથવા બ્રાઉઝર દ્વારા સંપૂર્ણપણે દૂર કરી શકાતો નથી. ઓપનસીએલને વોચડોગ ટાઈમર અને પ્રી-એમ્પ્ટિવ મલ્ટીટાસ્કીંગ પ્રદાન કરી શકાય છે, જેનો ઉપયોગ વેબસીએલ દ્વારા એવા સંદર્ભોને શોધવા અને સમાપ્ત કરવા માટે કરી શકાય છે જે ખૂબ લાંબો સમય લે છે અથવા ઘણાં સંસાધનોનો વપરાશ કરે છે. અગાઉના એકની જેમ ઓપનસીએલ 1.2 'ક્લ _ કેએચઆર _ ટર્મિનેટ _ કન્ટેક્સ્ટ' નું વિસ્તરણ છે, જે સેવા હુમલાના અસ્વીકારનું કારણ બની શકે તેવી પ્રક્રિયાને સમાપ્ત કરવા માટે સક્ષમ બનાવે છે. સંબંધિત બ્રાઉઝર ભૂલો પણ જુઓ વેબજીએલ એચટીએમએલ5 ઓપનજીએલ જી. પી. જી. પી. યુ. વેબજી. પી. યુ. સંદર્ભો બાહ્ય કડીઓ વેબસીએલ સ્પષ્ટીકરણ વેબસીએલ વિકી એપ્લિકેશન પ્રોગ્રામિંગ ઇન્ટરફેસ ક્રોસ-પ્લેટફોર્મ સોફ્ટવેર વેબ ડેવલપમેન્ટ ગ્રાફિક્સ લાઇબ્રેરીઓ ગ્રાફિક્સ ધોરણો એફઆરઃ OpenCL#WebCL