WebGPU (Chrome 134) এ নতুন কি আছে

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

প্রকাশিত: ২৬ ফেব্রুয়ারি, ২০২৫

সাবগ্রুপের মাধ্যমে মেশিন-লার্নিং ওয়ার্কলোড উন্নত করুন

এক বছর ধরে উন্নয়ন ও পরীক্ষা-নিরীক্ষার পর, SIMD-স্তরের সমান্তরালতা সক্ষমকারী সাবগ্রুপ ওয়েবজিপিইউ ফিচারটি এখন উপলব্ধ। এটি একটি ওয়ার্কগ্রুপের থ্রেডগুলোকে একে অপরের সাথে যোগাযোগ করতে এবং সংখ্যার যোগফল গণনার মতো সম্মিলিত গাণিতিক অপারেশন সম্পাদন করতে দেয় এবং ক্রস-থ্রেড ডেটা শেয়ারিংয়ের জন্য একটি কার্যকর পদ্ধতি প্রদান করে। মূল প্রস্তাবনা এবং ক্রোমস্ট্যাটাস এন্ট্রি দেখুন।

প্রসঙ্গত উল্লেখ্য যে, অরিজিন ট্রায়াল চলাকালীন কিছু ডিভাইসে ম্যাট্রিক্স-ভেক্টর মাল্টিপ্লাই শেডারের ক্ষেত্রে প্যাকড ইন্টিজার ডট প্রোডাক্টের বিপরীতে সাবগ্রুপগুলোর বেঞ্চমার্কিং করার সময় গুগল মিটে ২.৩-২.৯ গুণ গতি বৃদ্ধি দেখা গিয়েছিল।

যখন কোনো GPUAdapter"subgroups" ফিচারটি উপলব্ধ থাকে, তখন WGSL-এ সাবগ্রুপ সাপোর্ট পেতে এই ফিচারসহ একটি GPUDevice জন্য অনুরোধ করুন। subgroupMinSize এবং subgroupMaxSize অ্যাডাপ্টার ইনফো ভ্যালুগুলো পরীক্ষা করে দেখা সহায়ক—উদাহরণস্বরূপ, যদি আপনার কোনো হার্ডকোডেড অ্যালগরিদম থাকে যার জন্য একটি নির্দিষ্ট আকারের সাবগ্রুপ প্রয়োজন।

কম্পিউট এবং ফ্র্যাগমেন্ট শেডার উভয় পর্যায়ে নিম্নলিখিত বিল্ট-ইন মানগুলি অ্যাক্সেস করার জন্য, আপনাকে আপনার WGSL কোডে enable subgroups; ব্যবহার করে এই এক্সটেনশনটি স্পষ্টভাবে সক্রিয় করতে হবে:

  • subgroup_invocation_id : সাবগ্রুপের মধ্যে থ্রেডের সূচকের জন্য একটি বিল্ট-ইন মান।

  • subgroup_size : সাবগ্রুপের আকার অ্যাক্সেস করার জন্য একটি বিল্ট-ইন মান।

অসংখ্য সাবগ্রুপ বিল্ট-ইন ফাংশন (উদাহরণস্বরূপ, subgroupAdd() , subgroupBallot() , subgroupBroadcast() , subgroupShuffle() ) একটি সাবগ্রুপের মধ্যেকার ইনভোকেশনগুলোর মধ্যে কার্যকর যোগাযোগ এবং গণনা সক্ষম করে। এই সাবগ্রুপ অপারেশনগুলোকে সিঙ্গেল-ইনস্ট্রাকশন মাল্টিপল-থ্রেড (SIMT) অপারেশন হিসেবে শ্রেণীবদ্ধ করা হয়। এছাড়াও, কোয়াড বিল্ট-ইন ফাংশনগুলো , যা একটি কোয়াড ইনভোকেশনের উপর কাজ করে, কোয়াডের মধ্যে ডেটা কমিউনিকেশন সহজতর করে।

যখন আপনি "shader-f16" এবং "subgroups" উভয় বৈশিষ্ট্যসহ একটি GPUDevice জন্য অনুরোধ করেন, তখন আপনি সাবগ্রুপের সাথে f16 মান ব্যবহার করতে পারেন।

সাবগ্রুপ অন্বেষণের জন্য নিম্নলিখিত নমুনাটি একটি ভালো সূচনা বিন্দু: এটি এমন একটি শেডার দেখায় যা অন্তর্বর্তী ফলাফল জানানোর জন্য মেমরি পড়া বা লেখা ছাড়াই ফ্যাক্টোরিয়াল গণনা করতে subgroupExclusiveMul() বিল্ট-ইন ফাংশনটি ব্যবহার করে।

ফ্লোট ফিল্টারযোগ্য টেক্সচার প্রকারের সমর্থন ব্লেন্ডেবল হিসেবে অপসারণ করুন

এখন "float32-blendable" ফিচারের মাধ্যমে ৩২-বিট ফ্লোট টেক্সচার ব্লেন্ডিং উপলব্ধ হওয়ায়, ব্লেন্ডেবল হিসেবে ফ্লোট ফিল্টারযোগ্য টেক্সচার টাইপের ভুল সাপোর্টটি সরিয়ে ফেলা হয়েছে। ইস্যু ৩৬৪৯৮৭৭৩৩ দেখুন।

ভোরের আপডেট

ডন এখন ম্যাকওএস ১১ এবং আইওএস ১৪ আবশ্যক করে এবং শুধুমাত্র মেটাল ২.৩+ সমর্থন করে। ইস্যু ৩৮১১১৭৮২৭ দেখুন।

wgpu::Instance এর নতুন GetWGSLLanguageFeatures() মেথডটি এখন EnumerateWGSLLanguageFeatures() প্রতিস্থাপন করেছে। ইস্যু 368672124 দেখুন।

নিম্নলিখিত বাইন্ডিং টাইপগুলির মান Undefined এবং বাইন্ডিং লেআউটে তাদের ডিফল্ট মান পরিবর্তন করা হয়েছে। ইস্যু 377820810 দেখুন।

  • wgpu::BufferBindingType::Undefined এখন Uniform
  • wgpu::SamplerBindingType::Undefined এখন Filtering করছে
  • wgpu::TextureSampleType::Undefined এখন Float
  • wgpu::StorageTextureAccess::Undefined এখন WriteOnly

এখানে কেবল কয়েকটি মূল বিষয় তুলে ধরা হয়েছে। কমিটগুলোর বিস্তারিত তালিকাটি দেখুন।

WebGPU-তে নতুন কী আছে

'What's New in WebGPU' সিরিজে যা যা আলোচনা করা হয়েছে, তার একটি তালিকা।

ক্রোম ১৪৭-১৪৮

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩