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 আপডেট
- ভোরের আপডেট