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];} একটি ওয়েবসিএল অ্যাপ্লিকেশন চালানোর জন্য নিম্নলিখিত পদক্ষেপগুলি জড়িত থাকেঃ ডিভাইসগুলিতে অ্যাক্সেসের অনুমতি দিন এবং প্রসঙ্গটি একটি ডিভাইসে কার্নেলটি হস্তান্তর করুন ডিভাইস থেকে কার্নেল পুনরুদ্ধার ফলাফলগুলি কার্যকর করার কারণ ডিভাইসটি জাভাস্ক্রিপ্টের অভ্যন্তরে ডেটা ব্যবহার করুন জাভাস্ক্রিপ্ট ভিত্তিক বাস্তবায়ন হওয়ার কারণে এটি সম্পর্কে আরও বিশদ বিবরণ ব্যতিক্রম তালিকা ওয়েবসিএল-এ পাওয়া যায়। পরিবর্তে, এটি একটি ব্যতিক্রম ফেলে যেমন আউট _ অফ _ রিসোর্স, আউট _ অফ _ হোস্ট _ মেমোরি, বা ওয়েবসিএল-নির্দিষ্ট ওয়েবসিএল _ ইমপ্লেমেন্টেশন _ ব্যর্থতা। ব্যতিক্রম বস্তুটি যন্ত্র-পাঠযোগ্য নাম এবং ত্রুটি বর্ণনাকারী মানব-পাঠযোগ্য বার্তা বর্ণনা করে। বাক্যবিন্যাসটি নিম্নরূপঃ ব্যতিক্রম ওয়েবসিএলএক্সসেপশনঃ ডিওএমইএক্সসেপশন {ডিওএমএসট্রিং নাম;// সংখ্যাসূচক ত্রুটি কোডের একটি স্ট্রিং উপস্থাপনা, যেমন। "আইএনভিএএলআইডি _ ভ্যালু" ডমস্ট্রিং? বার্তা;// ব্যতিক্রমের কারণ সম্পর্কে একটি বাস্তবায়ন-নির্দিষ্ট বিবরণ}; উপরের কোড থেকে, এটি লক্ষ্য করা যায় যে বার্তা ক্ষেত্রটি একটি এন. ইউ. এল. এল মান হতে পারে। অন্যান্য ব্যতিক্রমগুলির মধ্যে রয়েছেঃ আইএনভিএএলআইডি _ অপারেশন-যদি এই ফাংশনের ব্লকিং ফর্মটি কোনও ওয়েবসিএলকলব্যাক আইএনভিএএলআইডি _ ভ্যালু থেকে কল করা হয়-যদি ইভেন্টওয়েটলিস্ট খালি আইএনভিএএলআইডি _ কনটেক্সট হয়-যদি ইভেন্টওয়েটলিস্টে নির্দিষ্ট ইভেন্টগুলি একই প্রসঙ্গের অন্তর্ভুক্ত না হয় আইএনভিএএলআইডি _ ডিভাইস _ টাইপ-যদি ডিভাইসটাইপ দেওয়া থাকে, তবে বৈধ গণনা করা মানগুলির মধ্যে একটি নয় ডিভাইস _ নট _ ফাউন্ড-যদি কোনও ওয়েবক্লাইড ডিভাইস উপলব্ধ না থাকে যা প্রদত্ত ডিভাইসের সাথে মেলে। আরেকটি ব্যতিক্রম রয়েছে যা 'মুক্ত' একটি বস্তুকে কল করার চেষ্টা করার সময় উত্থাপিত হয়। রিলিজ পদ্ধতি ব্যবহার করার পরে, বস্তুটি স্থায়ীভাবে মুছে যায় না তবে এটি সেই বস্তুর সাথে সম্পর্কিত সংস্থানগুলিকে মুক্ত করে। এই ব্যতিক্রম এড়ানোর জন্য, রিলিজঅ্যাল পদ্ধতি ব্যবহার করা যেতে পারে, যা কেবল সম্পদগুলিকে মুক্ত করে না বরং তৈরি করা সমস্ত সম্পর্কিত বস্তুগুলিকেও মুছে দেয়। নিরাপত্তা ওয়েবসিএল, ওয়েব অ্যাপ্লিকেশনের জন্য তৈরি একটি ওপেন-এন্ডেড সফ্টওয়্যার হওয়ায়, নকশা এবং উন্নয়নের ক্ষেত্রেও দুর্বলতার অনেক সুযোগ রয়েছে। এটি ওয়েবসিএল-এ কাজ করা ডেভেলপারদের নিরাপত্তাকে সর্বাধিক গুরুত্ব দিতে বাধ্য করেছিল। কয়েকটি উদ্বেগের সমাধান করা হয়েছেঃ সীমার বাইরে মেমরি অ্যাক্সেসঃ এটি বরাদ্দকৃত স্থানের বাইরে মেমরির অবস্থানগুলিতে অ্যাক্সেস করার মাধ্যমে ঘটে। একজন আক্রমণকারী সেই স্মৃতির অবস্থানগুলিতে সঞ্চিত সমস্ত গুরুত্বপূর্ণ তথ্য পুনর্লিখন বা মুছে ফেলতে পারে। যখনই এই ধরনের কোনও ঘটনা ঘটে, সংকলন করার সময় অবশ্যই একটি ত্রুটি তৈরি করতে হবে এবং শূন্যকে অবশ্যই রান-টাইমে ফেরত দিতে হবে, যাতে প্রোগ্রামটি স্মৃতিকে ওভাররাইড না করে। এই দুর্বলতা সামলানোর জন্য ক্রোনোস গ্রুপ (ডেভেলপার) দ্বারা একটি প্রকল্প ওয়েবসিএল ভ্যালিডেটর শুরু করা হয়েছিল। মেমরি ইনিশিয়ালাইজেশনঃ অ্যাপ্লিকেশনগুলিকে পূর্ববর্তী অ্যাপ্লিকেশনগুলির মেমরি অবস্থানগুলিতে অ্যাক্সেস করতে বাধা দেওয়ার জন্য এটি করা হয়। ওয়েবসিএল নিশ্চিত করে যে বর্তমান অ্যাপ্লিকেশনটি চালানোর আগে শূন্যের জন্য ব্যবহৃত সমস্ত বাফার, ভেরিয়েবলগুলি শুরু করে এটি ঘটবে না। ওপেনসিএল 1.2-এর একটি এক্সটেনশন 'ক্ল _ কেএইচআর _ ইনিশিয়ালাইজ _ মেমরি' রয়েছে, যা এটি সক্ষম করে। পরিষেবা অস্বীকারঃ ওয়েব অ্যাপ্লিকেশনের উপর সবচেয়ে সাধারণ আক্রমণটি ওয়েবসিএল বা ব্রাউজার দ্বারা সম্পূর্ণরূপে নির্মূল করা যায় না। ওপেনসিএল-কে নজরদারি টাইমার এবং প্রি-এম্পটিভ মাল্টিটাস্কিং প্রদান করা যেতে পারে, যা ওয়েবসিএল দ্বারা ব্যবহার করা যেতে পারে যাতে এমন প্রসঙ্গগুলি সনাক্ত করা যায় যা খুব বেশি সময় নেয় বা প্রচুর সংস্থান ব্যবহার করে। আগেরটির মতো ওপেনসিএল 1.2 'ক্ল _ কেএইচআর _ টার্মিনেট _ কন্টেক্সট'-এর একটি এক্সটেনশন রয়েছে, যা পরিষেবা আক্রমণের অস্বীকারের কারণ হতে পারে এমন প্রক্রিয়াটি বন্ধ করতে সক্ষম করে। সম্পর্কিত ব্রাউজার বাগ আরও দেখুন ওয়েবজিএল এইচটিএমএল5 ওপেনজিএল ওপেনজিএল জিপিজিপিইউ ওয়েবজিপিইউ রেফারেন্স বাহ্যিক লিঙ্ক ওয়েবসিএল নির্দিষ্টকরণ ওয়েবসিএল উইকি অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস ক্রস-প্ল্যাটফর্ম সফ্টওয়্যার ওয়েব ডেভেলপমেন্ট গ্রাফিক্স লাইব্রেরি গ্রাফিক্স স্ট্যান্ডার্ড ফরঃ OpenCL#WebCL