WebGPU: সমস্যা সমাধানের টিপস এবং সমাধান

ফ্রাঁসোয়া বিউফোর্ট
François Beaufort

এই দস্তাবেজটি ব্যাখ্যা করে যে কেন WebGPU অকার্যকর হতে পারে বা Chrome ব্রাউজারে প্রত্যাশিতভাবে কাজ করছে না, যেখানে সম্ভব সমস্যাগুলি সমাধান করার জন্য স্পষ্ট পদক্ষেপ নিয়ে।

নিম্নলিখিত উদাহরণটি একটি জাভাস্ক্রিপ্ট ত্রুটি দেখায় যা আপনি পেতে পারেন যখন navigator gpu পাওয়া যায় না:

const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')

এটি নিম্নলিখিত কারণে হতে পারে। এই নির্দিষ্ট ক্রমে সেগুলি দেখুন:

  1. WebGPU-এর জন্য ChromeOS, macOS, Windows এবং Android-এ Chrome 121 বা তার বেশি সংস্করণে Chrome 113 বা তার বেশি প্রয়োজন। chrome://version এ আপনার ভার্সন চেক করুন এবং প্রয়োজনে আপডেট করুন।

  2. WebGPU বর্তমানে একজন পরিষেবা কর্মী বা শেয়ার্ড ওয়ার্কার থেকে অ্যাক্সেসযোগ্য নয় ৷ যদি কোনও পরিষেবা কর্মী বা শেয়ার্ড ওয়ার্কার ব্যবহার করেন, আপনার ওয়েবজিপিইউ কোডকে ডেডিকেটেড ওয়ার্কার বা গ্লোবাল উইন্ডো কনটেক্সটে নিয়ে যান।

  3. WebGPU শুধুমাত্র সুরক্ষিত প্রসঙ্গ অ্যাক্সেসযোগ্য। আপনি যদি একটি অনিরাপদ প্রোটোকলের মাধ্যমে আপনার কোডটি পরিবেশন করেন (উদাহরণস্বরূপ, http: , file: ), হয় নিরাপদ https: প্রোটোকল ব্যবহার করুন বা নিম্নলিখিত উপায়ে আপনার ওয়েব অ্যাপের বিকাশের সময় এটির সমাধান করুন:

    • আপনার কোড স্থানীয়ভাবে http://localhost বা http://127.0.0.1 এ এই কমান্ডগুলির যেকোনো একটি দিয়ে পরিবেশন করুন: npx http-server বা python3 -m http.server

    • chrome://flags/#unsafely-treat-insecure-origin-as-secure এর "নিরাপদ উত্সকে নিরাপদ হিসাবে বিবেচিত" তালিকায় উত্স যোগ করুন এবং Chrome পুনরায় চালু করুন৷

    • Node.js ইনস্টল করুন এবং npx servez --ssl চালান একটি জাল সার্টিফিকেট সহ https এর উপর আপনার ফোল্ডারটি পরিবেশন করতে। আপনি এখনও Chrome-এ একটি সতর্কতা পাবেন আপনি "উন্নত" ক্লিক করে বাইপাস করতে পারেন তারপর "এগিয়ে যান..."।

    • ngrok দিয়ে আপনার স্থানীয় ওয়েব সার্ভারকে ইন্টারনেটে উন্মুক্ত করুন।

GPU অ্যাডাপ্টারটি শূন্য

নিম্নলিখিত একটি জাভাস্ক্রিপ্ট ত্রুটির একটি উদাহরণ যা আপনি পেতে পারেন যখন আপনি কলিং requestAdapter() থেকে অ্যাডাপ্টারটি শূন্য হয়:

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)

এটি নিম্নলিখিত কারণগুলির মধ্যে একটির জন্য ঘটে। এই নির্দিষ্ট ক্রমে সেগুলি দেখুন:

  1. যখন ব্যবহারকারী chrome://settings/system এ "উপলব্ধ হলে গ্রাফিক্স ত্বরণ ব্যবহার করুন" বন্ধ করে দিলে WebGPU অক্ষম হয়৷ এই সেটিংটি বন্ধ আছে কিনা তা পরীক্ষা করুন এবং এটি আবার চালু করুন

  2. WebGPU এখনও এই প্ল্যাটফর্মে সমর্থিত নয়। আপনি chrome://flags/#enable-unsafe-webgpu পতাকা সক্ষম করতে পারেন এবং Chrome পুনরায় চালু করতে পারেন৷ Linux পরীক্ষামূলক সহায়তার জন্য, আপনাকে chrome://flags/#enable-vulkan পতাকাও সক্ষম করতে হবে। আরও জানতে হেডলেস ক্রোমে WebGPU সমর্থন দেখুন।

  3. GPU হার্ডওয়্যার বিশেষভাবে ব্লকলিস্ট করা হয়েছে। আপনি যদি chrome://gpu এ "WebGPU ব্লকলিস্ট বা কমান্ড লাইনের মাধ্যমে নিষ্ক্রিয় করা হয়েছে" দেখতে পান, তাহলে আপনি chrome://flags/#enable-unsafe-webgpu পতাকা সক্রিয় করে এবং Chrome পুনরায় চালু করে WebGPU অ্যাডাপ্টার ব্লকলিস্ট নিষ্ক্রিয় করতে পারেন৷

  4. requestAdapter() এ পাস করা বিকল্পগুলির জন্য কোন মিলিত GPU অ্যাডাপ্টার নেই। বিভিন্ন অপশন সহ requestAdapter() কল করার চেষ্টা করুন

  5. WebGPU-এর জন্য একটি GPU প্রয়োজন (হয় হার্ডওয়্যার বা সফ্টওয়্যার-অনুকরণ করা)। আপনি chrome://gpu এ গিয়ে Chrome একটি GPU শনাক্ত করেছে কিনা তা পরীক্ষা করতে পারেন।

WebGPU WebGL এর চেয়ে ধীর

  1. chrome://gpu খুলুন এবং নিশ্চিত করুন যে আপনি "WebGPU: হার্ডওয়্যার ত্বরিত" পড়তে পারেন। আপনি যদি "WebGPU: শুধুমাত্র সফ্টওয়্যার, হার্ডওয়্যার ত্বরণ অনুপলব্ধ" পড়েন, তাহলে আপনাকে আপনার GPU ড্রাইভার আপডেট করতে হতে পারে।

  2. WebGPU-তে WebGL ধারণাগুলিকে সরাসরি অনুবাদ করা WebGPU-এর অনন্য অপ্টিমাইজেশনের সম্পূর্ণ সুবিধা নাও নিতে পারে। তাদের কিছু পার্থক্য সম্পর্কে জানতে WebGL থেকে WebGPU-তে দেখুন।

উইন্ডোজ-নির্দিষ্ট সীমাবদ্ধতা

Windows ডিভাইসে WebGPU ব্যবহার করার সময় নিম্নলিখিত সীমাবদ্ধতা সম্পর্কে সচেতন থাকুন:

  • ক্রোম একসাথে একাধিক GPU অ্যাডাপ্টার ব্যবহার করা সমর্থন করে না। ক্রোমিয়াম সংখ্যা দেখুন:329211593

  • Chrome সর্বদা একই GPU অ্যাডাপ্টার ব্যবহার করে যা অন্যান্য ক্রোম ওয়ার্কলোডের জন্য বরাদ্দ করা হয়েছে, যা সাধারণত ল্যাপটপের জন্য ইন্টিগ্রেটেড গ্রাফিক্স কার্ড, পাওয়ার ব্যবহারের দিক (যেমন: পাওয়ার সাশ্রয়) কারণে। এর মানে হল requestAdapter() কল করার সময় powerPreference বিকল্পের কোনো প্রভাব নেই।