সাবগ্রুপ নিয়ে এক্সপেরিমেন্ট করা
সাবগ্রুপ ফিচার SIMD-লেভেল প্যারালালিজম চালু করে, এর ফলে গ্রুপের মধ্যে থ্রেডগুলি একে অপরের সাথে যোগাযোগ করতে এবং সম্মিলিত গাণিতিক অপারেশন (যেমন, ১৬টি সংখ্যার যোগফল গণনা করা) পারফর্ম করতে পারে। এটি ক্রস-থ্রেড ডেটা শেয়ারিংয়ের একটি অত্যন্ত কার্যকর ফর্ম প্রদান করে।
সাবগ্রুপ প্রপোজালের ন্যূনতম প্রয়োগ chrome://flags/#enable-unsafe-webgpu-এ "আনসেফ WebGPU সাপোর্ট" ফ্ল্যাগের পিছনে লোকাল টেস্টিংয়ের জন্য উপলভ্য।
এছাড়াও, আপনি অরিজিন ট্রায়ালে সাইন-আপ করে আপনার সাইটে রিয়েল ব্যবহারকারীদের সাথে সাবগ্রুপ ব্যবহার করে দেখতে পারেন। আপনার সাইটকে কীভাবে অরিজিন ট্রায়াল ব্যবহারের জন্য প্রস্তুত করবেন সেই সংক্রান্ত নির্দেশাবলীর জন্য অরিজিন ট্রায়াল শুরু করা নিবন্ধটি পড়ুন। Chrome 128 থেকে 131 পর্যন্ত অরিজিন ট্রায়াল চলবে (১৯ ফেব্রুয়ারি, ২০২৫-এ শেষ হবে)। পরীক্ষা করার উদ্দেশ্য দেখুন।
"subgroups" ফিচার GPUAdapter-এ উপলভ্য হলে, WGSL-এ সাবগ্রুপের সুবিধা পেতে এই ফিচার সহ GPUDevice-এর অনুরোধ করুন এবং এর minSubgroupSize ও maxSubgroupSize সীমা চেক করুন।
এছাড়াও, আপনাকে enable subgroups; ব্যবহার করে WGSL কোডে এই এক্সটেনশনটি স্পষ্টভাবে চালু করতে হবে। চালু করা হলে, আপনি নিম্নলিখিত সংযোজন অ্যাক্সেস করতে পারবেন:
subgroup_invocation_id: সাবগ্রুপের মধ্যে থ্রেডের ইন্ডেক্সের জন্য বিল্ট-ইন ভ্যালু।subgroup_size: সাবগ্রুপের সাইজ অ্যাক্সেসের জন্য বিল্ট-ইন ভ্যালু।subgroupBallot(value): বিট ফিল্ডের একটি সেট রিটার্ন করে যেখানেsubgroup_invocation_id-এর সাথে সম্পর্কিত বিটটি ১ হয় যদি সেই অ্যাক্টিভ ইনভোকেশনের জন্যvalueসত্য হয় এবং অন্যথায় ০ হয়।subgroupBroadcast(value, id): ইনভোকেশন থেকেvalueব্রডকাস্ট করে, সাবগ্রুপের মধ্যে থাকা সব ইনভোকেশনের সাথেsubgroup_invocation_idম্যাচ করেid। মনে রাখবেন:idঅবশ্যই একটি কম্পাইল-টাইম কনস্ট্যান্ট হতে হবে।
ভবিষ্যতে subgroupAdd, subgroupAll, subgroupElect, subgroupShuffle-এর মতো আরও বিল্ট-ইন ফাংশন যোগ করা হবে। issue 354738715 দেখুন।
সাবগ্রুপ অপারেশনে f16-কে অনুমতি দিতে, "subgroups", "subgroups-f16" ও "shader-f16" ফিচার সহ GPUDevice-এর জন্য অনুরোধ করুন, তারপর enable f16, subgroups, subgroups_f16; ব্যবহার করে আপনার WGSL কোডে এটি চালু করুন।
নিচে দেওয়া কোড স্নিপেট থেকে আপনি সাবগ্রুপের সম্ভাবনা সম্পর্কে জানতে ও তা নিয়ে কাজ করতে পারবেন।
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
// Explicitly request subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
var<workgroup> wgmem : u32;
@group(0) @binding(0)
var<storage, read> inputs : array<u32>;
@group(0) @binding(1)
var<storage, read_write> output : array<u32>;
@compute @workgroup_size(64)
fn main(@builtin(subgroup_size) subgroupSize : u32,
@builtin(subgroup_invocation_id) id : u32,
@builtin(local_invocation_index) lid : u32) {
// One thread per workgroup writes the value to workgroup memory.
if (lid == 0) {
wgmem = inputs[lid];
}
workgroupBarrier();
var v = 0u;
// One thread per subgroup reads the value from workgroup memory
// and shares that value with every other thread in the subgroup
// to reduce local memory bandwidth.
if (id == 0) {
v = wgmem;
}
v = subgroupBroadcast(v, 0);
output[lid] = v;
}`,
});
// Send the appropriate commands to the GPU...
লাইন ও পয়েন্টের জন্য ডেপথ বায়াস সেট করার সুবিধা সরিয়ে দেওয়া
WebGPU স্পেসিফিকেশন পরিবর্তন, রেন্ডার পাইপলাইনের টপোলজি লাইন বা পয়েন্ট টাইপ হলে depthBias, depthBiasSlopeScale ও depthBiasClamp-এর মান শূন্যের থেকে বেশি সেট করলে তা যাচাইকরণ সংক্রান্ত সমস্যা হিসেবে দেখায়। ডেভেলপারদের তাদের কোড আপডেট করার জন্য পর্যাপ্ত সময় দিতে, DevTools কনসোলে এই আসন্ন যাচাইকরণ সম্পর্কে একটি সতর্কতা দেখানো হয় এবং একই সাথে এই পরিস্থিতিতে মানগুলি ০ করতে বাধ্য করা হয়। issue 352567424 দেখুন।
preventDefault থাকলে, ক্যাপচার না করা সমস্যার জন্য DevTools সতর্কতা লুকানো
uncapturederror-এর জন্য কোনও ইভেন্ট লিসনার রেজিস্টার করা থাকলে এবং ইভেন্ট লিসনার কলব্যাকের মধ্যে ইভেন্ট preventDefault() মেথড কল করা হলে, DevTools কনসোলে uncapturederror ইভেন্টের জন্য আর কোনও সতর্কতা দেখানো হবে না। এই আচরণ JavaScript-এ ইভেন্ট হ্যান্ডেল করার সাথে মেলে। নিচের উদাহরণ ও issue 40263619 দেখুন।
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
device.addEventListener("uncapturederror", (event) => {
// Prevents browser warning to show up in the DevTools Console.
event.preventDefault();
// TODO: Handle event.error
});
WGSL ইন্টারপোলেট স্যাম্পেলিং প্রথমে এবং
WGSL interpolate অ্যাট্রিবিউট আপনাকে ব্যবহারকারীর সংজ্ঞায়িত IO ডেটা ইন্টারপোলেশন ম্যানেজ করতে দেয়। এখন, নতুন ইন্টারপোলেট স্যাম্পেলিং প্যারামিটার first (ডিফল্ট) এবং either আপনাকে অতিরিক্ত কন্ট্রোল দেয়: first প্রিমিটিভের প্রথম ভার্টেক্স থেকে ভ্যালু ব্যবহার করে, যেখানে either প্রথম বা শেষ ভার্টেক্স ব্যবহার করার অনুমতি দেয়। সমস্যা 340278447 দেখুন।
ভোরের আপডেট
অ্যাসিঙ্ক্রোনাস অপারেশন ম্যানেজ করার জন্য Dawn-এর WGPUFuture-এর প্রয়োগ এখন সম্পূর্ণ হয়েছে। গুরুত্বপূর্ণ কনসেপ্টের মধ্যে সুযোগমতো ইভেন্ট প্রসেসিংয়ের জন্য wgpuInstanceProcessEvents এবং কলব্যাক লোকেশন নির্ধারণের জন্য WGPUCallbackMode অন্তর্ভুক্ত। WGPUFuture হল অসীম লাইফটাইম সহ এককালীন ইভেন্ট এবং wgpuInstanceWaitAny হল ভবিষ্যতের কোনও ইভেন্ট সম্পূর্ণ হওয়া বা টাইম-আউট হওয়ার জন্য অপেক্ষা করা। সমস্যা ৪২২৪০৯৩২ দেখুন।
Surface::GetCapabilities() এখন CompositeAlphaMode::Auto ভ্যালু রিপোর্ট করে না। এটি এখনও বৈধ এবং Surface::GetCapabilities().alphaMode[0]-এর সমতুল্য। issue 292 দেখুন।
OpenGL ব্যাকএন্ড এখন প্রতিটি Present() কলের জন্য y-ফ্লিপ ব্লিট সহ Surface-এ কাজ করে। সমস্যা 344814083 দেখুন।
Adapter::GetInfo() ব্যবহারের জন্য Adapter::GetProperties() পদ্ধতি বন্ধ করা হয়েছে।
Jaswant, একজন এক্সটার্নাল কন্ট্রিবিউটর, সব CMake ফাইল আবার লিখেছেন, এর ফলে সেগুলি আপডেট করা সহজ হয়েছে এবং প্রি-বিল্ডের সুবিধা পাওয়া যাচ্ছে। CMake প্রোজেক্টে Dawn ব্যবহার করার জন্য দ্রুত শুরুর নির্দেশিকা দেখুন।
এতে শুধু কিছু গুরুত্বপূর্ণ হাইলাইট কভার করা হয়েছে। কমিটের বিস্তারিত তালিকা দেখুন।
WebGPU-তে নতুন কী কী আছে
WebGPU-তে নতুন কী কী আছে সিরিজে যা যা কভার করা হয়েছে তার একটি তালিকা।
Chrome 155-156
- WGSL fragment_depth এক্সটেনশন
- টেক্সচার কম্প্রেশন অ্যালাইন করা নেই
- srgb-লিনিয়ার ও ডিসপ্লে-p3-লিনিয়ার কালার স্পেস
- অতিরিক্ত snorm10-10-10-2 ভার্টেক্স ফর্ম্যাট
- NVIDIA-এর জন্য Linux-এ f16 সহায়তা
- ভোরের আপডেট
Chrome 153-154
Chrome 151-152
Chrome 149-150
Chrome 147-148
Chrome 146
- OpenGL ES 3.1-এ WebGPU মানানসই মোড কাজ করে
- ক্ষণস্থায়ী অ্যাটাচমেন্ট
- WGSL texture_and_sampler_let এক্সটেনশন
- ভোরের আপডেট
Chrome 145
- WGSL subgroup_uniformity এক্সটেনশন
- ওয়ার্কারদের মধ্যে পরীক্ষামূলক সিঙ্ক্রোনাস বাফার ম্যাপিং
- ভোরের আপডেট
Chrome 144
- WGSL subgroup_id এক্সটেনশন
- WGSL uniform_buffer_standard_layout এক্সটেনশন
- Linux-এ WebGPU
- আরও দ্রুত writeBuffer ও writeTexture
- ভোরের আপডেট
Chrome 143
Chrome 142
Chrome 141
- Tint IR সম্পূর্ণ হয়েছে
- WGSL কম্পাইলারে পূর্ণসংখ্যা রেঞ্জ বিশ্লেষণ
- Vulkan ব্যাকএন্ডের জন্য SPIR-V 1.4 আপডেট
- ভোরের আপডেট
Chrome 140
- ডিভাইস অনুরোধ অ্যাডাপ্টার ব্যবহার করে
- টেক্সচার ভিউ ব্যবহার করা হয় এমন জায়গায় টেক্সচার ব্যবহারের জন্য সংক্ষিপ্ত নাম
- WGSL textureSampleLevel 1D টেক্সচার কাজ করে
- bgra8unorm রিড-অনলি স্টোরেজ টেক্সচার ব্যবহার করা বন্ধ করা
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউট সরিয়ে দিন
- ভোরের আপডেট
Chrome 139
- BC ও ASTC কম্প্রেসড ফর্ম্যাটের জন্য 3D টেক্সচার সাপোর্ট
- নতুন "কোর-ফিচার-ও-সীমা" ফিচার
- WebGPU কম্প্যাটিবিলিটি মোডের জন্য অরিজিন ট্রায়াল
- ভোরের আপডেট
Chrome 138
- বাইন্ডিং রিসোর্স হিসেবে বাফার ব্যবহার করার জন্য সংক্ষিপ্ত নাম
- তৈরি করার সময় ম্যাপ করা বাফার সংক্রান্ত সাইজের প্রয়োজনীয়তায় পরিবর্তন
- সাম্প্রতিক GPU-এর জন্য আর্কিটেকচার রিপোর্ট
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউট বন্ধ করা
- ভোরের আপডেট
Chrome 137
- externalTexture বাইন্ডিংয়ের জন্য texture view ব্যবহার করা
- অফসেট ও সাইজ নির্দিষ্ট না করেই বাফার কপি করা
- WGSL workgroupUniformLoad অ্যাটমিকের পয়েন্টার ব্যবহার করে
- GPUAdapterInfo powerPreference অ্যাট্রিবিউট
- GPURequestAdapterOptions compatibilityMode অ্যাট্রিবিউট সরিয়ে দিন
- ভোরের আপডেট
Chrome 136
- GPUAdapterInfo isFallbackAdapter অ্যাট্রিবিউট
- D3D12-এ শেডার কম্পাইলেশন টাইম সংক্রান্ত উন্নতি
- ক্যানভাসের ছবি সেভ ও কপি করা
- লিফ্ট কম্প্যাটিবিলিটি মোড সংক্রান্ত বিধিনিষেধ
- ভোরের আপডেট
Chrome 135
- নাল বাইন্ড গ্রুপ লেআউট সহ পাইপলাইন লেআউট তৈরি করার অনুমতি দিন
- রেন্ডার টার্গেটের সীমার বাইরে ভিউপোর্টকে এক্সটেন্ড করার অনুমতি দিন
- Android-এ পরীক্ষামূলক কম্প্যাটিবিলিটি মোড আরও সহজে অ্যাক্সেস করা
- maxInterStageShaderComponents সীমা সরিয়ে দিন
- ভোরের আপডেট
Chrome 134
- সাবগ্রুপের মাধ্যমে মেশিন লার্নিং ওয়ার্কলোড উন্নত করা
- ব্লেন্ড করা যায় এমন হিসেবে ফ্লোট ফিল্টার করা যায় এমন টেক্সচার টাইপ সংক্রান্ত সহায়তা সরিয়ে দিন
- ভোরের আপডেট
Chrome 133
- অতিরিক্ত unorm8x4-bgra এবং ১-কম্পোনেন্ট ভার্টেক্স ফর্ম্যাট
- অনির্দিষ্ট ভ্যালু সহ অজানা সীমা অনুরোধ করার অনুমতি দিন
- WGSL অ্যালাইনমেন্ট সংক্রান্ত নিয়মে পরিবর্তন
- ডিসকার্ডের মাধ্যমে WGSL পারফর্ম্যান্সের উন্নতি
- এক্সটার্নাল টেক্সচারের জন্য VideoFrame displaySize ব্যবহার করা
- copyExternalImageToTexture ব্যবহার করে ডিফল্ট ওরিয়েন্টেশন নেই এমন ছবি ম্যানেজ করা
- ডেভেলপার অভিজ্ঞতা উন্নত করা
- featureLevel-এর সাথে কম্প্যাটিবিলিটি মোড চালু করুন
- পরীক্ষামূলক সাবগ্রুপ ফিচার ক্লিন-আপ
- maxInterStageShaderComponents সীমা বাতিল করা
- ভোরের আপডেট
Chrome 132
- টেক্সচার ভিউয়ের ব্যবহার
- ৩২-বিট ফ্লোট টেক্সচার ব্লেন্ডিং
- GPUDevice adapterInfo অ্যাট্রিবিউট
- ভুল ফর্ম্যাট সহ ক্যানভাসের প্রসঙ্গ কনফিগার করলে জাভাস্ক্রিপ্ট সংক্রান্ত সমস্যা হয়
- টেক্সচারের উপর স্যাম্পলার ফিল্টার করা সংক্রান্ত বিধিনিষেধ
- সাবগ্রুপ নিয়ে দীর্ঘমেয়াদী পরীক্ষা
- ডেভেলপার অভিজ্ঞতা উন্নত করা
- ১৬-বিট স্বাভাবিক টেক্সচার ফর্ম্যাটের জন্য পরীক্ষামূলক সহায়তা
- ভোরের আপডেট
Chrome 131
- WGSL-এ ক্লিপ দূরত্ব
- GPUCanvasContext getConfiguration()
- পয়েন্ট ও লাইন প্রিমিটিভের ডেপথ বায়াস থাকলে চলবে না
- সাবগ্রুপের জন্য অন্তর্ভূক্ত স্ক্যান বিল্ট-ইন ফাংশন
- মাল্টি-ড্র ইনডাইরেক্টের জন্য এক্সপেরিমেন্টাল সহায়তা
- শেডার মডিউল কম্পাইলেশন বিকল্প স্ট্রিক্ট ম্যাথ
- GPUAdapter requestAdapterInfo() সরিয়ে দিন
- ভোরের আপডেট
Chrome 130
- ডুয়াল সোর্স ব্লেন্ডিং
- Metal-এ শেডার কম্পাইলেশন টাইম ইমপ্রুভমেন্ট
- GPUAdapter requestAdapterInfo() বন্ধ হয়ে যাওয়া
- ভোরের আপডেট
Chrome 129
Chrome 128
- সাবগ্রুপ নিয়ে পরীক্ষা করা
- লাইন ও পয়েন্টের জন্য ডেপথ বায়াস সেট করা বন্ধ করা
- preventDefault থাকলে, ক্যাপচার করা হয়নি এমন সমস্যার জন্য DevTools-এর সতর্কতা লুকানো
- WGSL ইন্টারপোলেট স্যাম্পেলিং প্রথমে এবং যেকোনও একটি
- ভোরের আপডেট
Chrome 127
- Android-এ OpenGL ES-এর জন্য পরীক্ষামূলক সহায়তা
- GPUAdapter info অ্যাট্রিবিউট
- WebAssembly ইন্টারঅপারেশন সংক্রান্ত উন্নতি
- কমান্ড এনকোডার সংক্রান্ত সমস্যার সমাধান করা
- ভোরের আপডেট
Chrome 126
- maxTextureArrayLayers সীমা বাড়ান
- Vulkan ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশন
- শেডার কম্পাইলেশন টাইম উন্নত করা
- জমা দেওয়া কমান্ড বাফার অনন্য হতে হবে
- ভোরের আপডেট
Chrome 125
Chrome 124
- রিড-ওনলি ও রিড-রাইট স্টোরেজ টেক্সচার
- সার্ভিস ওয়ার্কার ও শেয়ারড ওয়ার্কারদের জন্য সহায়তা
- অ্যাডাপ্টর সংক্রান্ত তথ্যের নতুন অ্যাট্রিবিউট
- সমস্যার সমাধান
- ভোরের আপডেট
Chrome 123
- WGSL-এ DP4a বিল্ট-ইন ফাংশন কাজ করে
- WGSL-এ বিধিনিষেধহীন পয়েন্টার প্যারামিটার
- WGSL-এ কম্পোজিট ডিরেফারেন্স করার জন্য সিনট্যাক্স সুগার
- স্টেনসিল ও ডেপথ অ্যাস্পেক্টের জন্য আলাদা রিড-ওনলি স্টেট
- ভোরের আপডেট
Chrome 122
- মানানসই মোডের মাধ্যমে আরও বেশি দর্শকের কাছে পৌঁছান (ফিচারটি ডেভেলপ করা হচ্ছে)
- maxVertexAttributes সীমা বাড়ানো
- ভোরের আপডেট
Chrome 121
- Android-এ WebGPU কাজ করে
- Windows-এ শেডার কম্পাইলেশনের জন্য FXC-এর পরিবর্তে DXC ব্যবহার করুন
- কম্পিউট ও রেন্ডার পাসে টাইমস্ট্যাম্প কোয়েরি
- শেডার মডিউলে ডিফল্ট এন্ট্রি পয়েন্ট
- GPUExternalTexture কালার স্পেস হিসেবে display-p3 কাজ করে
- মেমরি হিপ সংক্রান্ত তথ্য
- ভোরের আপডেট
Chrome 120
- WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট ভ্যালুর জন্য সহায়তা
- সীমা অতিক্রম করা
- ডেপথ-স্টেনসিল স্টেটে পরিবর্তন
- অ্যাডাপ্টর সংক্রান্ত তথ্য আপডেট
- টাইমস্ট্যাম্প কোয়েরি কোয়ান্টাইজেশন
- স্প্রিং-ক্লিনিং ফিচার
Chrome 119
- ফিল্টার করা যায় এমন ৩২-বিট ফ্লোট টেক্সচার
- unorm10-10-10-2 ভার্টেক্স ফর্ম্যাট
- rgb10a2uint টেক্সচার ফর্ম্যাট
- ভোরের আপডেট
Chrome 118
copyExternalImageToTexture()-এ HTMLImageElement ও ImageData কাজ করে- রিড-রাইট ও রিড-অনলি স্টোরেজ টেক্সচারের জন্য পরীক্ষামূলক সহায়তা
- ভোরের আপডেট
Chrome 117
- ভার্টেক্স বাফার আনসেট করুন
- বাইন্ড গ্রুপ আনসেট করুন
- ডিভাইস হারিয়ে গেলে অ্যাসিঙ্ক পাইপলাইন তৈরি করার সময় হওয়া সমস্যা সম্পর্কে কোনও তথ্য না দেখানো
- SPIR-V শেডার মডিউল তৈরি সংক্রান্ত আপডেট
- ডেভেলপার অভিজ্ঞতা উন্নত করা
- অটোমেটিক তৈরি হওয়া লেআউট সহ ক্যাশিং পাইপলাইন
- ভোরের আপডেট
Chrome 116
- WebCodecs ইন্টিগ্রেশন
- GPUAdapter
requestDevice()-এর মাধ্যমে হারানো ডিভাইস ফেরত পাওয়া গেছে importExternalTexture()কল করা হলে ভিডিও প্লেব্যাক স্মুথ রাখুন- স্পেসিফিকেশন মেনে চলা
- ডেভেলপার অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
Chrome 115
- WGSL ভাষার এক্সটেনশন যা কাজ করে
- Direct3D 11-এর জন্য এক্সপেরিমেন্টাল সহায়তা
- AC পাওয়ারে ডিফল্ট হিসেবে ডিসক্রিট GPU পাওয়া
- ডেভেলপার অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
Chrome 114
- জাভাস্ক্রিপ্ট অপ্টিমাইজ করা
- কনফিগার না করা ক্যানভাসে getCurrentTexture() ব্যবহার করলে InvalidStateError হয়
- WGSL আপডেট
- ভোরের আপডেট