প্রকাশিত: জুন 3, 2025
ক্রোমের ওয়েবজিপিইউ এপিআই বাস্তবায়নে শুধুমাত্র বিকাশ এবং পরীক্ষার জন্য উদ্দিষ্ট বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে। এই বৈশিষ্ট্যগুলি আদর্শ WebGPU স্পেসিফিকেশনের বাইরে এবং উৎপাদনে ব্যবহার করা উচিত নয়৷
এই নথিতে WebGPU বিকাশকারী বৈশিষ্ট্যগুলিকে কীভাবে সক্ষম করতে হয় তার বিশদ বিবরণ রয়েছে এবং একটি বিস্তৃত তালিকা প্রদান করে৷
পূর্বশর্ত
Chrome-এ WebGPU বিকাশকারী বৈশিষ্ট্যগুলি সক্ষম করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
-
chrome://flags/#enable-webgpu-developer-features
"WebGPU বিকাশকারী বৈশিষ্ট্য" পতাকা সক্ষম করুন৷ - ক্রোম ব্রাউজার রিস্টার্ট করুন।
টাইমস্ট্যাম্প ক্যোয়ান্টাইজেশন অক্ষম করুন
টাইমস্ট্যাম্প ক্যোয়ারীগুলি WebGPU অ্যাপ্লিকেশনগুলিকে কম্পিউট এবং রেন্ডার পাসের সময় GPU কমান্ডের নির্ভুলভাবে (ন্যানোসেকেন্ডে) পরিমাপ করতে সক্ষম করে৷ এই প্রশ্নগুলি GPU কাজের চাপ কর্মক্ষমতা এবং আচরণ বিশ্লেষণের জন্য অপরিহার্য। আরও বিশদ বিবরণের জন্য, কম্পিউট এবং রেন্ডার পাসগুলিতে টাইমস্ট্যাম্প প্রশ্নগুলি পড়ুন।
টাইমিং অ্যাটাক সংক্রান্ত উদ্বেগের কারণে, 100 মাইক্রোসেকেন্ডের রেজোলিউশনের সাথে টাইমস্ট্যাম্প প্রশ্নগুলি পরিমাপ করা হয়, যা নির্ভুলতা এবং নিরাপত্তার মধ্যে একটি ভাল সমঝোতা প্রদান করে। "ওয়েবজিপিইউ বিকাশকারী বৈশিষ্ট্য" ফ্ল্যাগ সক্ষম করা থাকলে এই পরিমাপ স্বয়ংক্রিয়ভাবে অক্ষম হয়ে যায়।
বর্ধিত অ্যাডাপ্টারের তথ্য
অ্যাডাপ্টারের ব্যবহার সম্পর্কে গভীরভাবে বোঝার জন্য, GPUAdapterInfo নিম্নলিখিত বৈশিষ্ট্যগুলি প্রকাশ করে:
-
device
অ্যাট্রিবিউট (প্রমিত) একটি বিক্রেতা-নির্দিষ্ট অ্যাডাপ্টার শনাক্তকারী। -
description
বৈশিষ্ট্য (প্রমিত) হল একটি মানব-পঠনযোগ্য স্ট্রিং যা অ্যাডাপ্টারের বিবরণ প্রদান করে। -
driver
অ্যাট্রিবিউট (অ-প্রমিত) হল একটি মানব-পাঠযোগ্য স্ট্রিং যা ড্রাইভারকে বর্ণনা করে। -
backend
অ্যাট্রিবিউট (অ-প্রমিত) গ্রাফিক্স ব্যাকএন্ড নির্দেশ করে, যেমন"WebGPU"
,"D3D11"
,"D3D12"
,"metal"
,"vulkan"
,"openGL"
,"openGLES"
, বা"null"
। -
type
অ্যাট্রিবিউট (নন-স্ট্যান্ডার্ডাইজড) GPU টাইপ শনাক্ত করে:"discrete GPU"
,"integrated GPU"
,"CPU"
, বা"unknown"
। -
d3dShaderModel
অ্যাট্রিবিউট (অ-প্রমিত) সর্বাধিক সমর্থিত D3D শেডার মডেল নম্বর নির্দিষ্ট করে, উদাহরণস্বরূপ, 62 HLSL SM 6.2 সমর্থন নির্দেশ করে। -
vkDriverVersion
অ্যাট্রিবিউট (অ-প্রমিত) হল বিক্রেতা-নির্দিষ্ট ভলকান ড্রাইভার সংস্করণ। - GPURequestAdapterOptions- এ GPUPowerPreference-এর উপর ভিত্তি করে
powerPreference
অ্যাট্রিবিউট (অ-প্রমিত) হল"low-power"
বা"high-performance"
।
আপনার অ্যাপের বিকাশের সময় প্রচুর পরিমাণে বরাদ্দ করার সময় মেমরির সীমাবদ্ধতাগুলি অনুমান করতে, GPUAdapterInfo memoryHeaps
অ-প্রমিত তথ্য যেমন অ্যাডাপ্টারে উপলব্ধ মেমরি হিপগুলির আকার এবং ধরন প্রকাশ করে৷
const adapter = await navigator.gpu.requestAdapter();
for (const { size, properties } of adapter.info.memoryHeaps) {
console.log(size); // memory heap size in bytes
if (properties & GPUHeapProperty.DEVICE_LOCAL) { /* ... */ }
if (properties & GPUHeapProperty.HOST_VISIBLE) { /* ... */ }
if (properties & GPUHeapProperty.HOST_COHERENT) { /* ... */ }
if (properties & GPUHeapProperty.HOST_UNCACHED) { /* ... */ }
if (properties & GPUHeapProperty.HOST_CACHED) { /* ... */ }
}
Shader মডিউল সংকলন বিকল্প কঠোর গণিত
GPUShaderModuleDescriptor-এ একটি strictMath
নন-স্ট্যান্ডার্ডাইজড বুলিয়ান বিকল্প রয়েছে, যা শেডার মডিউল সংকলনের সময় কঠোর গাণিতিক নির্ভুলতা সক্ষম বা নিষ্ক্রিয় করে। এই বিকল্পটি মেটাল এবং Direct3D তে সমর্থিত। যখন strictMath
সক্রিয় করা হয়, কম্পাইলার সুনির্দিষ্ট গাণিতিক নিয়ম মেনে চলে। বিপরীতভাবে, এটি নিষ্ক্রিয় করা কম্পাইলারকে শেডারগুলিকে এর দ্বারা অপ্টিমাইজ করার অনুমতি দেয়:
- NaN এবং ইনফিনিটি মানগুলির সম্ভাবনাকে উপেক্ষা করা।
- -0কে +0 হিসাবে বিবেচনা করা হচ্ছে।
- পারস্পরিক দ্বারা দ্রুত গুন দিয়ে ভাগ প্রতিস্থাপন।
- সহযোগী এবং বন্টনমূলক বৈশিষ্ট্যের উপর ভিত্তি করে অপারেশন পুনর্বিন্যাস করা।
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const code = `
// Examines the bit pattern of the floating-point number to
// determine if it represents a NaN according to the IEEE 754 standard.
fn isNan(x : f32) -> bool {
bool ones_exp = (bitcast<u32>(x) & 0x7f8) == 0x7f8;
bool non_zero_sig = (bitcast<u32>(x) & 0x7ffff) != 0;
return ones_exp && non_zero_sig;
}
// ...
`;
// Enable strict math during shader compilation.
const shaderModule = device.createShaderModule({ code, strictMath: true });
শূন্য-কপি সহ ভিডিও আমদানি করুন
GPUExternalTexture isZeroCopy
নন-স্ট্যান্ডার্ডাইজড বুলিয়ান অ্যাট্রিবিউট আপনাকে জানতে দেয় যে importExternalTexture() দিয়ে আমদানি করা ভিডিওটি একটি মধ্যবর্তী কপির প্রয়োজন ছাড়াই GPU দ্বারা সরাসরি অ্যাক্সেস করা হয়েছে কিনা।
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const video = document.querySelector('video');
const externalTexture = device.importExternalTexture({ source: video });
if (externalTexture.isZeroCopy) {
console.log('Video frame was accessed directly by the GPU');
}