WGSL-এ DP4a-এর অন্তর্নির্মিত ফাংশনগুলির সমর্থন
DP4a (ডট প্রোডাক্ট অফ ৪ এলিমেন্টস অ্যান্ড অ্যাকুমুলেট) হলো এক সেট জিপিইউ (GPU) নির্দেশাবলী যা সাধারণত ডিপ লার্নিং ইনফারেন্সে কোয়ান্টাইজেশনের জন্য ব্যবহৃত হয়। এটি এই ধরনের int8-কোয়ান্টাইজড মডেলগুলোর গণনাকে ত্বরান্বিত করার জন্য দক্ষতার সাথে ৮-বিট পূর্ণসংখ্যার ডট প্রোডাক্ট সম্পাদন করে। এটি f32 সংস্করণের তুলনায় মেমরি এবং নেটওয়ার্ক ব্যান্ডউইথ (৭৫% পর্যন্ত) সাশ্রয় করতে পারে এবং ইনফারেন্সিংয়ের ক্ষেত্রে যেকোনো মেশিন লার্নিং মডেলের পারফরম্যান্স উন্নত করতে পারে। ফলস্বরূপ, এটি এখন অনেক জনপ্রিয় এআই (AI) ফ্রেমওয়ার্কের মধ্যে ব্যাপকভাবে ব্যবহৃত হয়।
যখন navigator.gpu.wgslLanguageFeatures এ "packed_4x8_integer_dot_product" WGSL ল্যাঙ্গুয়েজ এক্সটেনশনটি উপস্থিত থাকে, তখন আপনি এখন dot4U8Packed এবং dot4I8Packed বিল্ট-ইন ফাংশনগুলির সাহায্যে আপনার WGSL শেডার কোডের ডট প্রোডাক্ট নির্দেশাবলীর ইনপুট হিসাবে 8-বিট পূর্ণসংখ্যার 4-উপাদান ভেক্টর প্যাক করা 32-বিট পূর্ণসংখ্যা স্কেলার ব্যবহার করতে পারবেন। এছাড়াও আপনি pack4xI8 , pack4xU8 , pack4xI8Clamp , pack4xU8Clamp , unpack4xI8 , এবং unpack4xU8 WGSL বিল্ট-ইন ফাংশনগুলির সাহায্যে 8-বিট পূর্ণসংখ্যার প্যাক করা 4-উপাদান ভেক্টর সহ প্যাকিং এবং আনপ্যাকিং নির্দেশাবলী ব্যবহার করতে পারেন।
আপনার WGSL শেডার কোডের শুরুতে requires packed_4x8_integer_dot_product; করে নন-পোর্টেবিলিটির সম্ভাবনা বোঝানোর জন্য একটি `requires` ডিরেক্টিভ ব্যবহার করার পরামর্শ দেওয়া হয়। নিম্নলিখিত উদাহরণ এবং `tint:1497` ইস্যুটি দেখুন।
if (!navigator.gpu.wgslLanguageFeatures.has("packed_4x8_integer_dot_product")) {
throw new Error(`DP4a built-in functions are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires packed_4x8_integer_dot_product;
fn main() {
const result: u32 = dot4U8Packed(0x01020304u, 0x02040405u); // 42
}`,
});
এই স্পেসিফিকেশন এবং এর বাস্তবায়নকে সফলভাবে সম্পন্ন করার জন্য সাংহাইতে অবস্থিত ইন্টেলের ওয়েব গ্রাফিক্স টিমকে বিশেষ ধন্যবাদ!
WGSL-এ অবাধ পয়েন্টার প্যারামিটার
"unrestricted_pointer_parameters" WGSL ল্যাঙ্গুয়েজ এক্সটেনশনটি WGSL ফাংশনে কোন পয়েন্টার পাস করা যাবে তার উপর থেকে বিধিনিষেধ শিথিল করে:
ব্যবহারকারী কর্তৃক ঘোষিত ফাংশনগুলোর জন্য
storage,uniformএবংworkgroupঅ্যাড্রেস স্পেসের প্যারামিটার পয়েন্টারসমূহ।ব্যবহারকারী কর্তৃক ঘোষিত ফাংশনে স্ট্রাকচার মেম্বার এবং অ্যারে এলিমেন্টের পয়েন্টার পাস করা।
এ সম্পর্কে আরও জানতে “Pointers As Function Parameters | Tour of WGSL” দেখুন।
এই ফিচারটি navigator.gpu.wgslLanguageFeatures ব্যবহার করে শনাক্ত করা যায়। আপনার WGSL শেডার কোডের শুরুতে requires unrestricted_pointer_parameters; ব্যবহার করে নন-পোর্টেবিলিটির সম্ভাবনা বোঝানোর জন্য সর্বদা একটি requires-directive ব্যবহার করার পরামর্শ দেওয়া হয়। নিম্নলিখিত উদাহরণ, WGSL স্পেক পরিবর্তনসমূহ এবং ইস্যু tint:2053 দেখুন।
if (!navigator.gpu.wgslLanguageFeatures.has("unrestricted_pointer_parameters")) {
throw new Error(`Unrestricted pointer parameters are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires unrestricted_pointer_parameters;
@group(0) @binding(0) var<storage, read_write> S : i32;
fn func(pointer : ptr<storage, i32, read_write>) {
*pointer = 42;
}
@compute @workgroup_size(1)
fn main() {
func(&S);
}`
});
WGSL-এ কম্পোজিট ডি-রেফারেন্সিং-এর জন্য সিনট্যাক্স সুগার
যখন navigator.gpu.wgslLanguageFeatures এ "pointer_composite_access" WGSL ল্যাঙ্গুয়েজ এক্সটেনশনটি উপস্থিত থাকে, তখন আপনার WGSL শেডার কোড জটিল ডেটা টাইপের কম্পোনেন্টগুলো অ্যাক্সেস করার জন্য একই ডট ( . ) সিনট্যাক্স ব্যবহার করতে পারে, আপনি সরাসরি ডেটা নিয়ে কাজ করুন বা সেটির কোনো পয়েন্টার ব্যবহার করুন। এটি যেভাবে কাজ করে তা নিচে দেওয়া হলো:
যদি
fooএকটি পয়েন্টার হয়, তাহলে(*foo).barলেখার চেয়েfoo.barলেখাটা বেশি সুবিধাজনক। সাধারণত, পয়েন্টারটিকে ডি-রেফারেন্সযোগ্য একটি 'রেফারেন্স'-এ পরিণত করার জন্য অ্যাস্টারিস্ক (*) চিহ্নটির প্রয়োজন হতো, কিন্তু এখন পয়েন্টার এবং রেফারেন্স উভয়ই অনেক বেশি সাদৃশ্যপূর্ণ এবং প্রায় বিনিময়যোগ্য।যদি
fooএকটি পয়েন্টার না হয়: তাহলে ডট (.) অপারেটরটি সরাসরি মেম্বার অ্যাক্সেস করার মতোই কাজ করে।
একইভাবে, যদি pa একটি পয়েন্টার হয় যা একটি অ্যারের শুরুর ঠিকানা সংরক্ষণ করে, তাহলে pa[i] ব্যবহার করে আপনি সরাসরি সেই মেমরি অবস্থানে অ্যাক্সেস করতে পারবেন যেখানে সেই অ্যারের 'i ' তম উপাদানটি সংরক্ষিত আছে।
আপনার WGSL শেডার কোডের শুরুতে requires pointer_composite_access; করে নন-পোর্টেবিলিটির সম্ভাবনা বোঝানোর জন্য একটি `requires-directive` ব্যবহার করার পরামর্শ দেওয়া হয়। নিম্নলিখিত উদাহরণ এবং `tint:2113` ইস্যুটি দেখুন।
if (!navigator.gpu.wgslLanguageFeatures.has("pointer_composite_access")) {
throw new Error(`Pointer composite access is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires pointer_composite_access;
fn main() {
var a = vec3f();
let p : ptr<function, vec3f> = &a;
let r1 = (*p).x; // always valid.
let r2 = p.x; // requires pointer composite access.
}`
});
স্টেনসিল এবং গভীরতার দিকগুলির জন্য পৃথক পঠনযোগ্য অবস্থা
পূর্বে, রেন্ডার পাসে রিড-অনলি ডেপথ-স্টেনসিল সংযুক্তি ব্যবহারের জন্য ডেপথ এবং স্টেনসিল উভয় অ্যাস্পেক্টকেই রিড-অনলি হতে হতো। এই সীমাবদ্ধতাটি তুলে নেওয়া হয়েছে। এখন, আপনি ডেপথ অ্যাস্পেক্টটি রিড-অনলি মোডে ব্যবহার করতে পারবেন, যেমন কন্টাক্ট শ্যাডো ট্রেসিংয়ের জন্য, এবং একই সাথে পরবর্তী প্রক্রিয়াকরণের জন্য পিক্সেল শনাক্ত করতে স্টেনসিল বাফারে ডেটা লেখা হবে। ইস্যু dawn:2146 দেখুন।
ভোরের আপডেট
wgpuDeviceSetUncapturedErrorCallback() দিয়ে সেট করা আনক্যাপচারড এরর কলব্যাকটি এখন এরর ঘটার সাথে সাথেই কল করা হয়। ডিবাগিংয়ের জন্য ডেভেলপাররা সবসময় এটাই আশা করেন এবং চান। dawn:173620 পরিবর্তনটি দেখুন।
webgpu.h API- এর wgpuSurfaceGetPreferredFormat() মেথডটি বাস্তবায়ন করা হয়েছে। dawn:1362 ইস্যুটি দেখুন।
এখানে কেবল কয়েকটি মূল বিষয় তুলে ধরা হয়েছে। কমিটগুলোর বিস্তারিত তালিকাটি দেখুন।
WebGPU-তে নতুন কী আছে
'What's New in WebGPU' সিরিজে যা যা আলোচনা করা হয়েছে, তার একটি তালিকা।
ক্রোম ১৪৭-১৪৮
ক্রোম ১৪৬
- OpenGL ES 3.1-এ WebGPU সামঞ্জস্যপূর্ণ মোড সমর্থন করে
- ক্ষণস্থায়ী সংযুক্তি
- WGSL টেক্সচার_এবং_স্যাম্পলার_লেট এক্সটেনশন
- ভোরের আপডেট
ক্রোম ১৪৫
- WGSL উপগোষ্ঠী_একরূপতা সম্প্রসারণ
- ওয়ার্কারদের মধ্যে পরীক্ষামূলক সিঙ্ক্রোনাস বাফার ম্যাপিং
- ভোরের আপডেট
ক্রোম ১৪৪
- WGSL উপগোষ্ঠী_আইডি এক্সটেনশন
- WGSL uniform_buffer_standard_layout এক্সটেনশন
- লিনাক্সে ওয়েবজিপিইউ
- দ্রুততর writeBuffer এবং writeTexture
- ভোরের আপডেট
ক্রোম ১৪৩
ক্রোম ১৪২
ক্রোম ১৪১
- টিন্ট আইআর সম্পন্ন হয়েছে
- WGSL কম্পাইলারে পূর্ণসংখ্যার পরিসর বিশ্লেষণ
- ভুলকান ব্যাকএন্ডের জন্য SPIR-V 1.4 আপডেট
- ভোরের আপডেট
ক্রোম ১৪০
- ডিভাইস অ্যাডাপ্টার ব্যবহারের অনুরোধ করে।
- যেখানে টেক্সচার ভিউ ব্যবহৃত হয়, সেখানে টেক্সচার ব্যবহারের সংক্ষিপ্ত রূপ।
- WGSL textureSampleLevel 1D টেক্সচার সমর্থন করে
- bgra8unorm রিড-অনলি স্টোরেজ টেক্সচারের ব্যবহার অপ্রচলিত করুন
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউটটি সরান
- ভোরের আপডেট
ক্রোম ১৩৯
- BC এবং ASTC কম্প্রেসড ফরম্যাটের জন্য 3D টেক্সচার সাপোর্ট
- নতুন 'কোর-ফিচার-অ্যান্ড-লিমিটস' ফিচার
- WebGPU সামঞ্জস্য মোডের জন্য Origin ট্রায়াল
- ভোরের আপডেট
ক্রোম ১৩৮
- বাইন্ডিং রিসোর্স হিসেবে বাফার ব্যবহারের সংক্ষিপ্ত রূপ
- তৈরির সময় ম্যাপ করা বাফারগুলির আকারের প্রয়োজনীয়তা পরিবর্তিত হয়।
- সাম্প্রতিক জিপিইউগুলির জন্য স্থাপত্য প্রতিবেদন
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউটটি অপ্রচলিত করুন
- ভোরের আপডেট
ক্রোম ১৩৭
- এক্সটার্নাল টেক্সচার বাইন্ডিং এর জন্য টেক্সচার ভিউ ব্যবহার করুন
- অফসেট এবং আকার নির্দিষ্ট না করে বাফার কপি করা হয়
- WGSL workgroupUniformLoad অ্যাটমিকের পয়েন্টার ব্যবহার করে
- GPUAdapterInfo powerPreference অ্যাট্রিবিউট
- GPURequestAdapterOptions-এর compatibilityMode অ্যাট্রিবিউটটি মুছে ফেলুন
- ভোরের আপডেট
ক্রোম ১৩৬
- GPUAdapterInfo isFallbackAdapter অ্যাট্রিবিউট
- D3D12-এ শেডার কম্পাইলেশন সময়ের উন্নতি
- ক্যানভাসের ছবিগুলো সংরক্ষণ ও কপি করুন
- লিফট সামঞ্জস্য মোড সীমাবদ্ধতা
- ভোরের আপডেট
ক্রোম ১৩৫
- নাল বাইন্ড গ্রুপ লেআউট সহ পাইপলাইন লেআউট তৈরির অনুমতি দিন
- ভিউপোর্টগুলিকে রেন্ডার টার্গেটের সীমানা ছাড়িয়ে প্রসারিত করার অনুমতি দিন
- অ্যান্ড্রয়েডে পরীক্ষামূলক সামঞ্জস্য মোডে আরও সহজে প্রবেশ করা যায়
- maxInterStageShaderComponents সীমা অপসারণ করুন
- ভোরের আপডেট
ক্রোম ১৩৪
- সাবগ্রুপের মাধ্যমে মেশিন-লার্নিং ওয়ার্কলোড উন্নত করুন
- ফ্লোট ফিল্টারযোগ্য টেক্সচার প্রকারের সমর্থন ব্লেন্ডেবল হিসেবে অপসারণ করুন
- ভোরের আপডেট
ক্রোম ১৩৩
- অতিরিক্ত unorm8x4-bgra এবং 1-কম্পোনেন্ট ভার্টেক্স ফরম্যাট
- অনির্ধারিত মান দিয়ে অজানা সীমা অনুরোধ করার অনুমতি দিন।
- WGSL অ্যালাইনমেন্ট নিয়মের পরিবর্তন
- বর্জনের মাধ্যমে WGSL-এর কর্মক্ষমতা বৃদ্ধি
- বাহ্যিক টেক্সচারের জন্য VideoFrame displaySize ব্যবহার করুন
- `copyExternalImageToTexture` ব্যবহার করে ডিফল্ট ওরিয়েন্টেশন ছাড়া অন্য ওরিয়েন্টেশনের ছবি পরিচালনা করুন।
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- featureLevel-এর সাথে সামঞ্জস্য মোড সক্রিয় করুন
- পরীক্ষামূলক উপগোষ্ঠীর বৈশিষ্ট্য পরিষ্করণ
- maxInterStageShaderComponents সীমা বাতিল করুন
- ভোরের আপডেট
ক্রোম ১৩২
- টেক্সচার ভিউ ব্যবহার
- ৩২-বিট ফ্লোট টেক্সচার ব্লেন্ডিং
- GPUDevice অ্যাডাপ্টারইনফো অ্যাট্রিবিউট
- ভুল ফরম্যাটে ক্যানভাস কনটেক্সট কনফিগার করলে জাভাস্ক্রিপ্ট ত্রুটি দেখা দেয়।
- টেক্সচারের উপর ফিল্টারিং স্যাম্পলারের সীমাবদ্ধতা
- বর্ধিত উপগোষ্ঠী পরীক্ষা
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- ১৬-বিট নর্মালাইজড টেক্সচার ফরম্যাটের জন্য পরীক্ষামূলক সমর্থন
- ভোরের আপডেট
ক্রোম ১৩১
- WGSL-এ ক্লিপ দূরত্ব
- GPUCanvasContext getConfiguration()
- বিন্দু এবং রেখা প্রিমিটিভগুলিতে গভীরতার পক্ষপাত থাকা উচিত নয়।
- উপগোষ্ঠীগুলির জন্য অন্তর্ভুক্তিমূলক স্ক্যান অন্তর্নির্মিত ফাংশন
- মাল্টি-ড্র ইনডিরেক্টের জন্য পরীক্ষামূলক সমর্থন
- শেডার মডিউল সংকলন বিকল্প কঠোর গণিত
- GPUAdapter requestAdapterInfo() অপসারণ করুন
- ভোরের আপডেট
ক্রোম ১৩০
- দ্বৈত উৎস মিশ্রণ
- মেটালে শেডার কম্পাইলেশন সময়ের উন্নতি
- GPUAdapter requestAdapterInfo() এর অপ্রচলিতকরণ
- ভোরের আপডেট
ক্রোম ১২৯
ক্রোম ১২৮
- উপগোষ্ঠী নিয়ে পরীক্ষা-নিরীক্ষা
- লাইন এবং পয়েন্টের জন্য ডেপথ বায়াস সেট করা অপ্রচলিত।
- preventDefault ব্যবহার করলে ক্যাপচার না করা ত্রুটির DevTools সতর্কতা লুকান
- WGSL প্রথমে ইন্টারপোলেট স্যাম্পলিং করে এবং হয়
- ভোরের আপডেট
ক্রোম ১২৭
- অ্যান্ড্রয়েডে OpenGL ES-এর জন্য পরীক্ষামূলক সমর্থন
- GPUAdapter তথ্য অ্যাট্রিবিউট
- ওয়েবঅ্যাসেম্বলি ইন্টারঅপ উন্নতি
- উন্নত কমান্ড এনকোডার ত্রুটি
- ভোরের আপডেট
ক্রোম ১২৬
- maxTextureArrayLayers সীমা বৃদ্ধি করুন
- ভলকান ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশন
- শেডার কম্পাইলেশন সময়ের উন্নতি
- জমা দেওয়া কমান্ড বাফারগুলি অবশ্যই অনন্য হতে হবে।
- ভোরের আপডেট
ক্রোম ১২৫
ক্রোম ১২৪
- পঠন-যোগ্য এবং পঠন-লিখনযোগ্য স্টোরেজ টেক্সচার
- পরিষেবা কর্মী এবং ভাগাভাগি কর্মীদের সমর্থন
- নতুন অ্যাডাপ্টার তথ্যের বৈশিষ্ট্য
- বাগ সংশোধন
- ভোরের আপডেট
ক্রোম ১২৩
- WGSL-এ DP4a-এর অন্তর্নির্মিত ফাংশনগুলির সমর্থন
- WGSL-এ অবাধ পয়েন্টার প্যারামিটার
- WGSL-এ কম্পোজিট ডি-রেফারেন্সিং-এর জন্য সিনট্যাক্স সুগার
- স্টেনসিল এবং গভীরতার দিকগুলির জন্য পৃথক পঠনযোগ্য অবস্থা
- ভোরের আপডেট
ক্রোম ১২২
- কম্প্যাটিবিলিটি মোডের মাধ্যমে পরিধি প্রসারিত করুন (ফিচারটি নির্মাণাধীন)
- maxVertexAttributes সীমা বৃদ্ধি করুন
- ভোরের আপডেট
ক্রোম ১২১
- অ্যান্ড্রয়েডে ওয়েবজিপিইউ সমর্থন করুন
- উইন্ডোজে শেডার কম্পাইলেশনের জন্য FXC-এর পরিবর্তে DXC ব্যবহার করুন।
- কম্পিউট এবং রেন্ডার পাসে টাইমস্ট্যাম্প কোয়েরি
- শেডার মডিউলগুলির ডিফল্ট এন্ট্রি পয়েন্ট
- GPUExternalTexture কালার স্পেস হিসেবে display-p3 সমর্থন করে।
- মেমরি হিপস তথ্য
- ভোরের আপডেট
ক্রোম ১২০
- WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট মানের জন্য সমর্থন
- সীমা ছাড়িয়ে যান
- গভীরতা-স্টেনসিল অবস্থার পরিবর্তন
- অ্যাডাপ্টার তথ্যের আপডেট
- টাইমস্ট্যাম্প কোয়েরি কোয়ান্টাইজেশন
- বসন্তকালীন পরিষ্কার-পরিচ্ছন্নতার বৈশিষ্ট্য
ক্রোম ১১৯
- ফিল্টারযোগ্য ৩২-বিট ফ্লোট টেক্সচার
- অগঠিত১০-১০-১০-২ শীর্ষবিন্দু বিন্যাস
- rgb10a2uint টেক্সচার ফরম্যাট
- ভোরের আপডেট
ক্রোম ১১৮
-
copyExternalImageToTexture()ফাংশনে HTMLImageElement এবং ImageData-এর সাপোর্ট - রিড-রাইট এবং রিড-অনলি স্টোরেজ টেক্সচারের জন্য পরীক্ষামূলক সমর্থন
- ভোরের আপডেট
ক্রোম ১১৭
- আনসেট ভার্টেক্স বাফার
- আনসেট বাইন্ড গ্রুপ
- ডিভাইস হারিয়ে গেলে অ্যাসিঙ্ক পাইপলাইন তৈরির ত্রুটিগুলো নীরব করুন
- SPIR-V শেডার মডিউল তৈরির আপডেট
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- স্বয়ংক্রিয়ভাবে তৈরি লেআউট সহ ক্যাশিং পাইপলাইন
- ভোরের আপডেট
ক্রোম ১১৬
- ওয়েবকোডেকস ইন্টিগ্রেশন
- GPUAdapter
requestDevice()দ্বারা ফেরত দেওয়া হারানো ডিভাইস -
importExternalTexture()কল করা হলে ভিডিও প্লেব্যাক মসৃণ রাখুন - স্পেক সঙ্গতি
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
ক্রোম ১১৫
- সমর্থিত WGSL ভাষা এক্সটেনশন
- Direct3D 11 এর জন্য পরীক্ষামূলক সমর্থন
- এসি পাওয়ারে ডিফল্টভাবে ডেডিকেটেড জিপিইউ পাওয়া যায়।
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
ক্রোম ১১৪
- জাভাস্ক্রিপ্ট অপ্টিমাইজ করুন
- অকনফিগার করা ক্যানভাসে getCurrentTexture() কল করলে InvalidStateError থ্রো করে।
- WGSL আপডেট
- ভোরের আপডেট