Vulkan shader maximal reconvergence extension has been released.
This is a deeply technical issue. But your intuition about how subgroups work is wrong.
This cuts across APIs, but Vulkan is doing something about it.
This profile might be incomplete.
Open on mastodon.gamedev.place David NetoPronouns:
He/Him
Contact infoGitHub:
Personal infoAbout:
Vulkan, WebGPU shader stuff at Google. Searchable
Wall 8 posts
Vulkan shader maximal reconvergence extension has been released. This is a deeply technical issue. But your intuition about how subgroups work is wrong. Chrome M120 (stable in late November) will turn on 'shader-f16' by default in #WebGPU, for hardware that supports it. This includes all macOS and many Windows devices. This was a great collaboration with the rest our WebGPU partners at W3C and particularly Intel, who championed its standardization, implementation, and conformance-test-writing. W00t! Heyo, new blog post "From WebGL to WebGPU". My team started looking at subgroup support for #WebGPU again. We pushed it out of the initial #WGSL feature set due to our staffing load and suspected non portability. Revisiting it now. Sadly, and frustratingly, implementations don't do what programmers think should happen. We are seeing very very nonportable behavior. Still collecting data across devices and platforms that we will share soon enough. @dneto Out of curiosity, can you describe the discrepancy you've observed in expected programmer behavior vs driver behavior? Nice! Reese Levine, from Prof Tyler Sorensen's group at UC Santa Cruz will present work on effective memory model testing, demonstrated in #webgpu WebGL and WebGPU meetup March 22 in the Google San Francisco office. Details https://www.khronos.org/events/webglwebgpu-meetup-at-the-2023-game-developers-conference I'm on the Chrome team at Google, working on shader language standardization, compilers, and related tooling. Languages: SPIR-V, OpenCL C, and am currently a spec editor for #WebGPU Shading Language (#WGSL). Compilers: (a bit of) Glslang, Shaderc, Clspv, DXC's SPIR-V backend (as mentor), most currently Tint (Google's WGSL compiler stack). Tooling: SPIRV-Tools, Amber Previously I worked on OpenCL for FPGAs when at Altera (later bought by Intel), and original SPIR standard. |
Empirically, subgroups often don't behave like you think they do. Here's the data.
https://github.com/gpuweb/gpuweb/issues/4306#issuecomment-1795498468
Maximal reconvergence requires the intuitive behavior. And if you don't test it thoroughly, you can bet it doesn't work.
@dneto very exciting!!!