WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট মানের জন্য সমর্থন
WGSL-এ, f16
টাইপ হল IEEE-754 binary16 (অর্ধ-নির্ভুলতা) ফর্ম্যাটের 16-বিট ফ্লোটিং-পয়েন্ট মানের সেট। এর অর্থ হল এটি একটি ফ্লোটিং-পয়েন্ট সংখ্যা উপস্থাপন করতে 16 বিট ব্যবহার করে, যেখানে প্রচলিত একক-নির্ভুলতা ফ্লোটিং-পয়েন্ট ( f32
) এর জন্য 32 বিট ব্যবহার করা হয়। এই ছোট আকার উল্লেখযোগ্য কর্মক্ষমতা উন্নতির দিকে পরিচালিত করতে পারে, বিশেষ করে যখন প্রচুর পরিমাণে ডেটা প্রক্রিয়াকরণ করা হয়।
তুলনা করার জন্য, একটি Apple M1 Pro ডিভাইসে, WebLLM চ্যাট ডেমোতে ব্যবহৃত Llama2 7B মডেলের f16
বাস্তবায়ন f32
বাস্তবায়নের তুলনায় উল্লেখযোগ্যভাবে দ্রুত, প্রিফিল গতিতে 28% উন্নতি এবং ডিকোডিং গতিতে 41% উন্নতি, যেমনটি নিম্নলিখিত স্ক্রিনশটগুলিতে দেখানো হয়েছে।

f32
(বামে) এবং f16
(ডানে) Llama2 7B মডেল সহ WebLLM চ্যাট ডেমো। সব GPU তে 16-বিট ফ্লোটিং-পয়েন্ট মান থাকে না। যখন "shader-f16"
বৈশিষ্ট্যটি GPUAdapter
এ উপলব্ধ থাকে, তখন আপনি এখন এই বৈশিষ্ট্য সহ একটি GPUDevice
অনুরোধ করতে পারেন এবং একটি WGSL শেডার মডিউল তৈরি করতে পারেন যা অর্ধ-নির্ভুলতা ফ্লোটিং-পয়েন্ট টাইপ f16
এর সুবিধা নেয়। এই ধরণেরটি WGSL শেডার মডিউলে ব্যবহারের জন্য বৈধ, যদি আপনি f16
WGSL এক্সটেনশনটি enable f16;
দিয়ে সক্ষম করেন। অন্যথায়, createShaderModule() একটি বৈধতা ত্রুটি তৈরি করবে। নিম্নলিখিত ন্যূনতম উদাহরণটি দেখুন এবং dawn:1510 ইস্যু করুন ।
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("shader-f16")) {
throw new Error("16-bit floating-point value support is not available");
}
// Explicitly request 16-bit floating-point value support.
const device = await adapter.requestDevice({
requiredFeatures: ["shader-f16"],
});
const code = `
enable f16;
@compute @workgroup_size(1)
fn main() {
const c : vec3h = vec3<f16>(1.0h, 2.0h, 3.0h);
}
`;
const shaderModule = device.createShaderModule({ code });
// Create a compute pipeline with this shader module
// and run the shader on the GPU...
নিম্নলিখিত স্নিপেটে দেখানো "shader-f16"
বৈশিষ্ট্য সমর্থনের উপর নির্ভর করে WGSL শেডার মডিউল কোডে f16
এবং f32
উভয় প্রকারকেই একটি alias
দিয়ে সমর্থন করা সম্ভব।
const adapter = await navigator.gpu.requestAdapter();
const hasShaderF16 = adapter.features.has("shader-f16");
const device = await adapter.requestDevice({
requiredFeatures: hasShaderF16 ? ["shader-f16"] : [],
});
const header = hasShaderF16
? `enable f16;
alias min16float = f16;`
: `alias min16float = f32;`;
const code = `
${header}
@compute @workgroup_size(1)
fn main() {
const c = vec3<min16float>(1.0, 2.0, 3.0);
}
`;
সীমা অতিক্রম করুন
সমস্ত রঙের সংযুক্তি জুড়ে রেন্ডার পাইপলাইন আউটপুট ডেটার একটি নমুনা (পিক্সেল বা সাবপিক্সেল) ধরে রাখার জন্য ডিফল্টরূপে সর্বাধিক বাইটের সংখ্যা 32 বাইট। এখন maxColorAttachmentBytesPerSample
সীমা ব্যবহার করে 64 পর্যন্ত অনুরোধ করা সম্ভব। নিম্নলিখিত উদাহরণটি দেখুন এবং dawn:2036 ইস্যু করুন ।
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxColorAttachmentBytesPerSample < 64) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max color attachments bytes per sample.
const device = await adapter.requestDevice({
requiredLimits: { maxColorAttachmentBytesPerSample: 64 },
});
সকল প্ল্যাটফর্মে ইন্টার-স্টেজ যোগাযোগের জন্য ব্যবহৃত maxInterStageShaderVariables
এবং maxInterStageShaderComponents
সীমা বৃদ্ধি করা হয়েছে। বিস্তারিত জানার জন্য dawn:1448 সংখ্যাটি দেখুন।
প্রতিটি শেডার পর্যায়ে, পাইপলাইন লেআউট জুড়ে বাইন্ড গ্রুপ লেআউট এন্ট্রির সর্বাধিক সংখ্যা, যা স্টোরেজ বাফার, ডিফল্টরূপে 8। এখন maxStorageBuffersPerShaderStage
সীমা ব্যবহার করে 10 পর্যন্ত অনুরোধ করা সম্ভব। সমস্যা dawn:2159 দেখুন।
একটি নতুন maxBindGroupsPlusVertexBuffers
সীমা যোগ করা হয়েছে। এতে একসাথে ব্যবহৃত সর্বাধিক সংখ্যক বাইন্ড গ্রুপ এবং ভার্টেক্স বাফার স্লট রয়েছে, সর্বোচ্চ সূচকের নীচে যেকোনো খালি স্লট গণনা করা হচ্ছে। এর ডিফল্ট মান হল 24। দেখুন ইস্যু dawn:1849 ।
গভীরতা-স্টেন্সিল অবস্থায় পরিবর্তন
ডেভেলপার অভিজ্ঞতা উন্নত করার জন্য, depth-stencil state depthWriteEnabled
এবং depthCompare
অ্যাট্রিবিউটগুলি আর সবসময় প্রয়োজন হয় না: depthWriteEnabled
শুধুমাত্র depth সহ ফর্ম্যাটের জন্য প্রয়োজন, এবং depthCompare
যদি একেবারেই ব্যবহার না করা হয় তবে depth সহ ফর্ম্যাটের জন্য প্রয়োজন হয় না। দেখুন dawn:2132 ।
অ্যাডাপ্টারের তথ্য আপডেট
ব্যবহারকারী যখন chrome://flags/#enable-webgpu-developer-features
এ "WebGPU Developer Features" ফ্ল্যাগ সক্রিয় করে তখন requestAdapterInfo() কল করার সময় নন-স্ট্যান্ডার্ড type
এবং backend
অ্যাডাপ্টার তথ্য বৈশিষ্ট্যগুলি উপলব্ধ হয়। type
"discrete GPU", "integrated GPU", "CPU", অথবা "unknown" হতে পারে। backend
হয় "WebGPU", "D3D11", "D3D12", "metal", "vulkan", "openGL", "openGLES", অথবা "null"। ইস্যু dawn:2112 এবং ইস্যু dawn:2107 দেখুন।

requestAdapterInfo() থেকে ঐচ্ছিক unmaskHints
তালিকা প্যারামিটারটি সরানো হয়েছে। সমস্যাটি দেখুন dawn:1427 ।
টাইমস্ট্যাম্প কোয়েরি কোয়ান্টাইজেশন
টাইমস্ট্যাম্প কোয়েরি অ্যাপ্লিকেশনগুলিকে ন্যানোসেকেন্ড নির্ভুলতার সাথে GPU কমান্ডের কার্যকর সময় পরিমাপ করার অনুমতি দেয়। তবে, WebGPU স্পেসিফিকেশন টাইমিং আক্রমণের উদ্বেগের কারণে টাইমস্ট্যাম্প কোয়েরিগুলিকে ঐচ্ছিক করে তোলে। Chrome টিম বিশ্বাস করে যে টাইমস্ট্যাম্প কোয়েরিগুলির কোয়ান্টাইজিং রেজোলিউশন 100 মাইক্রোসেকেন্ডে কমিয়ে নির্ভুলতা এবং সুরক্ষার মধ্যে একটি ভাল আপস প্রদান করে। দেখুন সমস্যা dawn:1800 ।
Chrome-এ, ব্যবহারকারীরা chrome://flags/#enable-webgpu-developer-features
"WebGPU Developer Features" ফ্ল্যাগ সক্রিয় করে টাইমস্ট্যাম্প কোয়ান্টাইজেশন অক্ষম করতে পারেন। মনে রাখবেন যে শুধুমাত্র এই ফ্ল্যাগটি "timestamp-query"
বৈশিষ্ট্যটি সক্ষম করে না। এর বাস্তবায়ন এখনও পরীক্ষামূলক এবং তাই chrome://flags/#enable-unsafe-webgpu
"Unsafe WebGPU Support" ফ্ল্যাগ প্রয়োজন।
ডন-এ, "timestamp_quantization" নামে একটি নতুন ডিভাইস টগল যোগ করা হয়েছে এবং ডিফল্টরূপে সক্রিয় করা হয়েছে। নিম্নলিখিত স্নিপেটটি আপনাকে দেখায় যে কোনও ডিভাইসের অনুরোধ করার সময় কোনও টাইমস্ট্যাম্প কোয়ান্টাইজেশন ছাড়াই পরীক্ষামূলক "timestamp-query" বৈশিষ্ট্যটি কীভাবে সক্ষম করবেন।
wgpu::DawnTogglesDescriptor deviceTogglesDesc = {};
const char* allowUnsafeApisToggle = "allow_unsafe_apis";
deviceTogglesDesc.enabledToggles = &allowUnsafeApisToggle;
deviceTogglesDesc.enabledToggleCount = 1;
const char* timestampQuantizationToggle = "timestamp_quantization";
deviceTogglesDesc.disabledToggles = ×tampQuantizationToggle;
deviceTogglesDesc.disabledToggleCount = 1;
wgpu::DeviceDescriptor desc = {.nextInChain = &deviceTogglesDesc};
// Request a device with no timestamp quantization.
myAdapter.RequestDevice(&desc, myCallback, myUserData);
বসন্ত-পরিষ্কারের বৈশিষ্ট্য
পরীক্ষামূলক "timestamp-query-inside-passes" বৈশিষ্ট্যটির নাম পরিবর্তন করে "chromium-experimental-timestamp-query-inside-passes" করা হয়েছে যাতে ডেভেলপারদের কাছে স্পষ্ট হয়ে যায় যে এই বৈশিষ্ট্যটি পরীক্ষামূলক এবং আপাতত শুধুমাত্র Chromium-ভিত্তিক ব্রাউজারগুলিতে উপলব্ধ। দেখুন dawn:1193 ।
পরীক্ষামূলক "পাইপলাইন-পরিসংখ্যান-কোয়েরি" বৈশিষ্ট্যটি, যা কেবল আংশিকভাবে বাস্তবায়িত হয়েছিল, তা সরানো হয়েছে কারণ এটি আর তৈরি করা হচ্ছে না। সমস্যাটি দেখুন chromium:1177506 ।
এখানে শুধুমাত্র কিছু গুরুত্বপূর্ণ বিষয় অন্তর্ভুক্ত করা হয়েছে। কমিটের সম্পূর্ণ তালিকাটি দেখুন।
WebGPU-তে নতুন কী আছে
" What's New in WebGPU" সিরিজে যা যা আলোচনা করা হয়েছে তার একটি তালিকা।
ক্রোম ১৪২
ক্রোম ১৪১
- টিন্ট আইআর সম্পন্ন হয়েছে
- WGSL কম্পাইলারে পূর্ণসংখ্যা পরিসর বিশ্লেষণ
- Vulkan ব্যাকএন্ডের জন্য SPIR-V 1.4 আপডেট
- ভোরের আপডেট
ক্রোম ১৪০
- ডিভাইসের অনুরোধগুলি অ্যাডাপ্টার ব্যবহার করে
- টেক্সচার ভিউ ব্যবহার করা হলে টেক্সচার ব্যবহারের সংক্ষিপ্ত বিবরণ
- WGSL টেক্সচারSampleLevel 1D টেক্সচার সমর্থন করে
- bgra8unorm-এর পঠনযোগ্য স্টোরেজ টেক্সচার ব্যবহার বন্ধ করুন
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউটটি সরান
- ভোরের আপডেট
ক্রোম ১৩৯
- BC এবং ASTC সংকুচিত ফর্ম্যাটের জন্য 3D টেক্সচার সমর্থন
- নতুন "মূল-বৈশিষ্ট্য-এবং-সীমা" বৈশিষ্ট্য
- WebGPU সামঞ্জস্য মোডের জন্য অরিজিন ট্রায়াল
- ভোরের আপডেট
ক্রোম ১৩৮
- বাইন্ডিং রিসোর্স হিসেবে বাফার ব্যবহারের সংক্ষিপ্ত বিবরণ
- তৈরির সময় ম্যাপ করা বাফারগুলির জন্য আকারের প্রয়োজনীয়তার পরিবর্তন
- সাম্প্রতিক GPU-এর জন্য স্থাপত্য প্রতিবেদন
- GPUAdapter হল FallbackAdapter অ্যাট্রিবিউটকে অবমূল্যায়ন করুন
- ভোরের আপডেট
ক্রোম ১৩৭
- বাহ্যিক টেক্সচার বাইন্ডিংয়ের জন্য টেক্সচার ভিউ ব্যবহার করুন
- অফসেট এবং আকার নির্দিষ্ট না করেই বাফারগুলি অনুলিপি করে
- WGSL ওয়ার্কগ্রুপ ইউনিফর্মলোড পরমাণুর পয়েন্টার ব্যবহার করে
- GPUAdapterInfo powerPreference অ্যাট্রিবিউট
- GPURequestAdapterOptions compatibilityMode অ্যাট্রিবিউট সরান
- ভোরের আপডেট
ক্রোম ১৩৬
- GPUAdapterInfo হল FallbackAdapter বৈশিষ্ট্য
- D3D12-তে শেডার সংকলন সময়ের উন্নতি
- ক্যানভাস ছবি সংরক্ষণ এবং কপি করুন
- সামঞ্জস্যতা মোড সীমাবদ্ধতা উত্তোলন করুন
- ভোরের আপডেট
ক্রোম ১৩৫
- নাল বাইন্ড গ্রুপ লেআউট সহ পাইপলাইন লেআউট তৈরি করার অনুমতি দিন
- ভিউপোর্টগুলিকে রেন্ডার টার্গেট সীমানা অতিক্রম করতে দিন
- অ্যান্ড্রয়েডে পরীক্ষামূলক সামঞ্জস্যতা মোডে সহজ অ্যাক্সেস
- maxInterStageShaderComponents সীমা সরান
- ভোরের আপডেট
ক্রোম ১৩৪
- উপগোষ্ঠীর সাথে মেশিন-লার্নিং ওয়ার্কলোড উন্নত করুন
- ফ্লোট ফিল্টারেবল টেক্সচার টাইপ সাপোর্টকে ব্লেন্ডেবল হিসেবে সরিয়ে দিন
- ভোরের আপডেট
ক্রোম ১৩৩
- অতিরিক্ত unorm8x4-bgra এবং 1-কম্পোনেন্ট ভার্টেক্স ফর্ম্যাট
- অনির্ধারিত মান সহ অজানা সীমা অনুরোধ করার অনুমতি দিন
- WGSL সারিবদ্ধকরণের নিয়ম পরিবর্তন
- বাতিলের সাথে WGSL কর্মক্ষমতা বৃদ্ধি পায়
- বাহ্যিক টেক্সচারের জন্য ভিডিওফ্রেম ডিসপ্লে সাইজ ব্যবহার করুন
- copyExternalImageToTexture ব্যবহার করে অ-ডিফল্ট ওরিয়েন্টেশন সহ ছবিগুলি পরিচালনা করুন
- ডেভেলপারের অভিজ্ঞতা উন্নত করা হচ্ছে
- featureLevel এর সাথে সামঞ্জস্যতা মোড সক্ষম করুন
- পরীক্ষামূলক উপগোষ্ঠীর বৈশিষ্ট্য পরিষ্কারকরণ
- maxInterStageShaderComponents সীমা অবমূল্যায়ন করুন
- ভোরের আপডেট
ক্রোম ১৩২
- টেক্সচার ভিউ ব্যবহার
- ৩২-বিট ফ্লোট টেক্সচার ব্লেন্ডিং
- GPUDevice অ্যাডাপ্টারইনফো অ্যাট্রিবিউট
- অবৈধ ফর্ম্যাট থ্রো জাভাস্ক্রিপ্ট ত্রুটি সহ ক্যানভাস প্রসঙ্গ কনফিগার করা হচ্ছে
- টেক্সচারের উপর স্যাম্পলার সীমাবদ্ধতা ফিল্টার করা
- বর্ধিত উপগোষ্ঠী পরীক্ষা-নিরীক্ষা
- ডেভেলপারের অভিজ্ঞতা উন্নত করা হচ্ছে
- ১৬-বিট নরমালাইজড টেক্সচার ফর্ম্যাটের জন্য পরীক্ষামূলক সমর্থন
- ভোরের আপডেট
ক্রোম ১৩১
- WGSL-এ দূরত্ব ক্লিপ করুন
- GPUCanvasContext কনফিগারেশন () পান
- বিন্দু এবং রেখার আদিমগুলিতে গভীরতা পক্ষপাত থাকা উচিত নয়
- উপগোষ্ঠীর জন্য অন্তর্ভুক্তিমূলক স্ক্যান বিল্ট-ইন ফাংশন
- মাল্টি-ড্র ইনডাইরেক্টের জন্য পরীক্ষামূলক সহায়তা
- শেডার মডিউল সংকলন বিকল্প কঠোর গণিত
- GPUAdapter requestAdapterInfo() সরান
- ভোরের আপডেট
ক্রোম ১৩০
- ডুয়াল সোর্স ব্লেন্ডিং
- মেটালে শেডার সংকলনের সময়ের উন্নতি
- GPUAdapter requestAdapterInfo() এর অবচয়
- ভোরের আপডেট
ক্রোম ১২৯
ক্রোম ১২৮
- উপগোষ্ঠী নিয়ে পরীক্ষা-নিরীক্ষা
- লাইন এবং বিন্দুর জন্য গভীরতা পক্ষপাত নির্ধারণ বন্ধ করুন
- যদি preventDefault থাকে তাহলে DevTools সতর্কতা না-ক্যাপচার করা ত্রুটি লুকান।
- WGSL ইন্টারপোলেট স্যাম্পলিং প্রথমে এবং উভয়ই
- ভোরের আপডেট
ক্রোম ১২৭
- অ্যান্ড্রয়েডে OpenGL ES এর জন্য পরীক্ষামূলক সমর্থন
- GPUAdapter তথ্য বৈশিষ্ট্য
- ওয়েবঅ্যাসেম্বলি ইন্টারঅপ উন্নতি
- উন্নত কমান্ড এনকোডার ত্রুটি
- ভোরের আপডেট
ক্রোম ১২৬
- maxTextureArrayLayers সীমা বাড়ান
- Vulkan ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশন
- শেডার সংকলন সময়ের উন্নতি
- জমা দেওয়া কমান্ড বাফারগুলি অবশ্যই অনন্য হতে হবে
- ভোরের আপডেট
ক্রোম ১২৫
ক্রোম ১২৪
- শুধুমাত্র পঠনযোগ্য এবং পঠনযোগ্য স্টোরেজ টেক্সচার
- পরিষেবা কর্মী এবং ভাগ করা কর্মীদের সহায়তা
- নতুন অ্যাডাপ্টারের তথ্য বৈশিষ্ট্য
- বাগ সংশোধন
- ভোরের আপডেট
ক্রোম ১২৩
- WGSL-এ DP4a বিল্ট-ইন ফাংশন সাপোর্ট করে
- WGSL-এ অবাধ পয়েন্টার প্যারামিটার
- WGSL-এ কম্পোজিট ডিরেফারেন্স করার জন্য সিনট্যাক্স চিনি
- স্টেনসিল এবং গভীরতার দিকগুলির জন্য পৃথক পঠনযোগ্য অবস্থা
- ভোরের আপডেট
ক্রোম ১২২
- সামঞ্জস্যতা মোডের মাধ্যমে নাগাল বাড়ান (বিকাশের অধীনে থাকা বৈশিষ্ট্য)
- maxVertexAttributes সীমা বৃদ্ধি করুন
- ভোরের আপডেট
ক্রোম ১২১
- অ্যান্ড্রয়েডে WebGPU সাপোর্ট করুন
- উইন্ডোজে শেডার সংকলনের জন্য FXC এর পরিবর্তে DXC ব্যবহার করুন
- কম্পিউট এবং রেন্ডার পাসে টাইমস্ট্যাম্প কোয়েরি
- শেডার মডিউলের ডিফল্ট এন্ট্রি পয়েন্ট
- GPUExternalTexture কালার স্পেস হিসেবে display-p3 সাপোর্ট করে
- মেমোরি হিপস সম্পর্কিত তথ্য
- ভোরের আপডেট
ক্রোম ১২০
- WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট মানের জন্য সমর্থন
- সীমা অতিক্রম করুন
- গভীরতা-স্টেন্সিল অবস্থায় পরিবর্তন
- অ্যাডাপ্টারের তথ্য আপডেট
- টাইমস্ট্যাম্প কোয়েরি কোয়ান্টাইজেশন
- বসন্ত-পরিষ্কারের বৈশিষ্ট্য
ক্রোম ১১৯
- ফিল্টারযোগ্য ৩২-বিট ফ্লোট টেক্সচার
- unorm10-10-10-2 ভার্টেক্স ফর্ম্যাট
- rgb10a2uint টেক্সচার ফর্ম্যাট
- ভোরের আপডেট
ক্রোম ১১৮
-
copyExternalImageToTexture()
তে HTMLImageElement এবং ImageData সাপোর্ট - পঠন-লেখা এবং পঠন-শুধুমাত্র স্টোরেজ টেক্সচারের জন্য পরীক্ষামূলক সহায়তা
- ভোরের আপডেট
ক্রোম ১১৭
- ভার্টেক্স বাফার আনসেট করুন
- বাইন্ড গ্রুপ আনসেট করুন
- ডিভাইস হারিয়ে গেলে অ্যাসিঙ্ক পাইপলাইন তৈরির সময় ত্রুটিগুলি নীরব করুন
- SPIR-V শেডার মডিউল তৈরির আপডেট
- ডেভেলপারের অভিজ্ঞতা উন্নত করা হচ্ছে
- স্বয়ংক্রিয়ভাবে তৈরি লেআউট সহ পাইপলাইন ক্যাশ করা হচ্ছে
- ভোরের আপডেট
ক্রোম ১১৬
- ওয়েবকোডেক্স ইন্টিগ্রেশন
- GPUAdapter
requestDevice()
দ্বারা হারিয়ে যাওয়া ডিভাইসটি ফেরত পাঠানো হয়েছে -
importExternalTexture()
কল করা হলে ভিডিও প্লেব্যাক মসৃণ রাখুন - স্পেক সম্মতি
- ডেভেলপারের অভিজ্ঞতা উন্নত করা হচ্ছে
- ভোরের আপডেট
ক্রোম ১১৫
- সমর্থিত WGSL ভাষা এক্সটেনশন
- Direct3D 11 এর জন্য পরীক্ষামূলক সহায়তা
- এসি পাওয়ারে ডিফল্টভাবে ডিসক্রিট জিপিইউ পান
- ডেভেলপারের অভিজ্ঞতা উন্নত করা হচ্ছে
- ভোরের আপডেট
ক্রোম ১১৪
- জাভাস্ক্রিপ্ট অপ্টিমাইজ করুন
- কনফিগার না করা ক্যানভাসে getCurrentTexture() InvalidStateError ছুঁড়ে দেয়
- WGSL আপডেট
- ভোরের আপডেট