Details
ggml-webgpu: JIT compile binary operators and handle binding overlaps (#19310)
-
ggml webgpu: port binary operators to use pre-wgsl
-
Add binary.wgsl: unified shader with conditionals for all 4 ops
-
Add gen_binary_shaders.cpp: build tool for using pre_wgsl preprocessor
-
Remove bin_op.tmpl.wgsl and binary.wgsl (Python template)
-
Update CMake to generate binary operator shaders at build time
-
ggml-webgpu: migrate binary ops to JIT compilation with overlap handling
-
port binary operators from AOT to pre-wgsl JIT compilation
-
add src1=dst overlap handling for binary ops
-
use compile-time workgroup size defines instead of runtime overrides
-
ggml-webgpu: complete overlap handling for binary ops
-
add support for inplace & overlap case in binding setup
-
restructure conditional logic to handle all overlap cases
-
ensure all buffer bindings are correctly assigned for edge cases
-
ggml-webgpu: remove unused binary overlap cases
Remove src0==src1 binary overlap case that never occurs in practice.
-
keep INPLACE (src0==dst), OVERLAP (src1==dst), DEFAULT
-
remove unused src0==src1 and all-same variant
-
refactor wgsl to eliminate duplication
macOS/iOS:
Linux:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.1 DLLs
- Windows x64 (Vulkan)
- Windows x64 (SYCL)
- Windows x64 (HIP)
openEuler: