ONNX Runtime WebGPU PR Monitor

Last Updated: 10/11/2026, 09:39 PM | Total: 609 PRs

Showing 1-10 of 102 PRs
Page 1 of 11
👤 dannyota📅 Created: 10/11/2026
🤖 AI 摘要

该 PR 将 Go 绑定同步到 ONNX Runtime C API 32,并补充插件执行提供程序(EP)的接入能力,主要涉及 Go 封装、C shim 桥接和测试,而非 GPU 算子实现。初始化时按已加载运行时的版本请求匹配的 API,并回退到 API 17,避免逐级探测失败时向 stderr 输出噪声;新增接口在运行时版本不足时返回类型化错误。新增能力包括 API 22 起支持的插件 EP 库注册与注销、设备发现和选择,以及 API 29 起支持的无权重编译模型源缓冲区设置,另有从内存读取 EPContext 数据的封装与桥接测试,但描述未完整给出后者的版本要求。这些改动为 Go 应用接入插件 EP、选择加速设备和使用编译模型提供了接口基础,但未提供 WebGPU 专用实现、支持矩阵或性能测试结果,因此不能据此认定新增了 WebGPU 支持或直接提升了 GPU 推理性能。

📁 Changed Files (24 files, 5397 changes: +5284/-113)
go/onnxruntime/compiler_command_test.go
go/onnxruntime/cshim.c
go/onnxruntime/cshim.h
go/onnxruntime/doc.go
go/onnxruntime/ep.go
go/onnxruntime/ep_context.go
go/onnxruntime/ep_context_bridge_test.go
go/onnxruntime/ep_context_test.go
go/onnxruntime/ep_context_testbridge.go
go/onnxruntime/ep_integration_test.go
go/onnxruntime/ep_test.go
go/onnxruntime/errors.go
go/onnxruntime/iobinding.go
go/onnxruntime/iobinding_test.go
go/onnxruntime/onnxruntime_c_api.h
go/onnxruntime/onnxruntime_ep_c_api.h
go/onnxruntime/onnxruntime_error_code.h
go/onnxruntime/options.go
go/onnxruntime/options_test.go
go/onnxruntime/ort.go
go/onnxruntime/ort_test.go
go/onnxruntime/session.go
go/testdata/gen_models.py
go/testdata/mul_f32.onnx
👤 gyagp📅 Created: 10/11/2026
🤖 AI 摘要

该 PR 将 Windows WebGPU CI 中重复执行的完整算子数值测试集中到共享插件任务,并补齐共享插件此前缺失的 WebGPU 算子与私有实现测试覆盖。实现上新增私有测试运行器、测试内核及插件测试入口,通过 CMake 接入构建,复用生产插件已编译的 provider 对象,并拆分或调整 MoE、并发上下文等测试。共享插件承担完整 provider/算子测试、插件集成、框架与设备选择及 Java WebGPU 推理验证;静态插件和内置 WebGPU 配置则保留分配器、并发、框架集成等针对性检查,内置配置继续覆盖 vcpkg 与非 vcpkg 构建及 D3D12 加速加载。此调整旨在减少不同构建模式之间的昂贵测试重复,同时加强共享插件路径的覆盖;现有信息未提供 CI 耗时对比,也不足以判断 GPU 推理性能或运行时兼容性是否发生变化。

📁 Changed Files (30 files, 1558 changes: +1328/-230)
.github/workflows/windows_webgpu.yml
cmake/CMakeLists.txt
cmake/onnxruntime_unittests.cmake
docs/WebGPU_CI.md
java/build.gradle
java/src/test/java/ai/onnxruntime/InferenceTest.java
onnxruntime/core/providers/webgpu/webgpu_execution_provider.h
onnxruntime/test/autoep/test_autoep_utils.h
onnxruntime/test/autoep/test_selection.cc
onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc
onnxruntime/test/contrib_ops/matmul_2bits_test.cc
onnxruntime/test/providers/webgpu/concurrent_context_test.cc
onnxruntime/test/providers/webgpu/concurrent_internal_test.cc
onnxruntime/test/providers/webgpu/contrib_ops/moe_internal_test.cc
onnxruntime/test/providers/webgpu/contrib_ops/moe_test.cc
onnxruntime/test/providers/webgpu/dispatch_normalization_test.cc
onnxruntime/test/providers/webgpu/internal_test.lds
onnxruntime/test/providers/webgpu/internal_test_api.h
onnxruntime/test/providers/webgpu/internal_test_kernel.cc
onnxruntime/test/providers/webgpu/internal_test_kernel.h
onnxruntime/test/providers/webgpu/internal_test_main.cc
onnxruntime/test/providers/webgpu/internal_test_runner.cc
onnxruntime/test/providers/webgpu/matmul_large_test.cc
onnxruntime/test/providers/webgpu/plugin_factory_test.cc
onnxruntime/test/providers/webgpu/test_plugin.cc
onnxruntime/test/providers/webgpu/test_plugin.h
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
onnxruntime/test/providers/webgpu/webgpu_stream_regression_test.cc
onnxruntime/test/util/default_providers.cc
onnxruntime/test/webgpu/delay_load/main.cc
👤 Jiawei-Shao📅 Created: 10/10/2026
🤖 AI 摘要

该改动针对 ONNX Runtime WebGPU 执行提供程序中的 im2col_matmul 内核,在支持 subgroup-size-control 扩展时启用现有的 subgroupShuffle 优化路径。实现涉及 C++ 侧内核配置与 WGSL 着色器模板,通过固定该内核的 subgroup 大小,满足这条优化路径对 subgroup 大小的要求,使其能够安全启用。该优化以扩展支持为前提,不能据此认为所有 WebGPU 设备都会受益;现有信息也未说明具体固定大小及不支持扩展时的回退细节。PR 报告 sd-turbo-vae-decoder-fp16-demo.onnx 和 sd-turbo-unet-fp16-demo.onnx 的性能分别提升 5.2% 和 2.2%,但未提供测试硬件与运行环境,因此这些收益不宜直接推广到其他设备或模型。

📁 Changed Files (3 files, 55 changes: +44/-11)
onnxruntime/core/providers/webgpu/nn/im2col_matmul.cc
onnxruntime/core/providers/webgpu/nn/im2col_matmul.wgsl.template
onnxruntime/test/optimizer/graph_transform_test.cc
👤 qjia7📅 Created: 10/10/2026
🤖 AI 摘要

该改动修复了 Python 在 WebGPU 插件宿主中创建执行提供程序(EP)时的工厂选择问题,避免以 `--use_webgpu shared_lib --build_wheel` 构建时引用不可用的内置工厂而导致 Windows 链接失败,并修正按 provider 名称选择时无法进入已注册插件路径的问题。原生修改仅限 WebGPU 分支:仅在内置实现被编译进来时使用内置工厂,否则非最小化宿主改用现有的已注册设备工厂辅助函数,保留原有内置模式行为。插件冒烟测试覆盖从已注册库选择设备、禁用 CPU 回退、验证推理结果和 provider 选项,以及在注销库前释放会话,并配套调整 Windows CI 和使用文档。最低运行时兼容性测试仍使用 `SessionOptions.add_provider_for_devices`,版本下限保持为 1.30.1,另通过环境变量启用按 provider 名称创建的测试;这些改动主要改善插件加载与构建兼容性,未提供 GPU 内核或性能基准变更,不能据此推断推理加速。

📁 Changed Files (4 files, 90 changes: +78/-12)
.github/workflows/windows_webgpu.yml
onnxruntime/python/onnxruntime_pybind_state.cc
plugin-ep-webgpu/python/README.md
plugin-ep-webgpu/python/test/test_webgpu_plugin_ep.py
👤 kunal-vaishnavi📅 Created: 10/09/2026
🤖 AI 摘要

该 PR 面向 MTP 稀疏注意力的索引复用场景,新增 PackedSparseAttentionIndexerMerge,将基础索引与额外索引合并,并为其提供 CUDA、WebGPU 实现及算子文档。接口层同步扩展算子 schema、输入输出槽位和内核注册,支持共享索引以及合并后的索引、计数和状态输出,并支持合并张量的原地操作。现有 CUDA Indexer 新增 indexshare_mode、max_output_entries 和 indexshare_state_policy,分别控制索引共享、统一输出形状与 QSA/CSA 内核容量参数,以及 CSA 状态推进和共享策略,同时校验不兼容的接口用法。WebGPU 侧明确新增了合并算子,但现有信息不足以确认其 Indexer 是否具备与 CUDA 相同的共享能力;索引复用和原地合并有望减少重复计算与内存开销,但缺少性能基准,无法量化收益。

📁 Changed Files (21 files, 1286 changes: +1246/-40)
docs/ContribOperators.md
docs/OperatorKernels.md
docs/contrib_ops/PackedSparseAttentionIndexerMerge.md
onnxruntime/contrib_ops/cpu/sparse/packed_sparse_attention_indexer_common.h
onnxruntime/contrib_ops/cpu/sparse/packed_sparse_attention_indexer_merge_common.h
onnxruntime/contrib_ops/cuda/cuda_contrib_kernels.cc
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer.cc
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer.h
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_impl.cu
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_impl.h
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_merge.cc
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_merge_impl.cu
onnxruntime/contrib_ops/cuda/sparse/packed_sparse_attention_indexer_merge_impl.h
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer.cc
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer_merge.cc
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer_merge.h
onnxruntime/contrib_ops/webgpu/webgpu_contrib_kernels.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/core/graph/contrib_ops/ms_opset.h
onnxruntime/test/contrib_ops/packed_sparse_attention_indexer_merge_op_test.cc
onnxruntime/test/contrib_ops/packed_sparse_attention_indexer_op_test.cc
👤 aciddelgado📅 Created: 10/08/2026
🤖 AI 摘要

该 PR 为 ONNX Runtime 新增 com.microsoft::GatedDeltaNetStateReplay v1 contrib 算子,可直接在 WebGPU 上回放已捕获的 GatedDeltaNet 状态转移,为部分接受场景重建循环状态,无需将状态下载到 CPU。实现采用每个状态元素一个调用、每个工作组 128 个线程,按保留的前缀长度依次执行衰减和 key×delta 累加,并通过头索引映射支持不同的 key/value 头数。算子复用 ProgramBase、ComputeContext 和 BufferView,支持无需满足存储缓冲区绑定对齐要求的逻辑偏移;当前范围限定为单请求、单描述符及 FP32 状态和 capsule 底层张量,由 CPU 元数据提供偏移、头几何、原始捕获容量和保留步数。改动还补齐了算子 schema、opset 与 WebGPU 内核注册、文档及相关测试;避免状态回传有望降低传输和同步开销,但现有信息未提供性能基准或测试运行结果,无法确认具体加速幅度。

📁 Changed Files (11 files, 1034 changes: +1034/-0)
docs/ContribOperators.md
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_state_replay.cc
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_state_replay.h
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_state_replay.wgsl.template
onnxruntime/contrib_ops/webgpu/webgpu_contrib_kernels.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/core/graph/contrib_ops/ms_opset.h
onnxruntime/core/providers/webgpu/compute_context.h
onnxruntime/core/providers/webgpu/ep/README.md
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc
onnxruntime/test/contrib_ops/gated_delta_net_state_replay_op_test.cc
👤 prathikr📅 Created: 10/08/2026
🤖 AI 摘要

该 PR 旨在减少 Qwen GatedDeltaNet 在 WebGPU 上执行 A/B 门控投影时的算子与调度开销;从修改路径看,核心涉及算子接口、WebGPU 实现、着色器和测试,并非通用 LayerNorm 融合。实现通过新增可选 gate_projections 输入接收打包的 FP16 A/B 投影结果,在着色器内转换为 FP32,门控计算和循环状态仍保持 FP32,同时保留现有分块预填充与循环解码内核。PR 描述称配套 ONNX 重写可移除 48 个 MatMul 和 96 个 Cast 节点且不引入 Split 调度,并通过避免不必要的 QKV 拷贝,使满足条件的路径继续使用向量化循环读写。原有模型保持兼容,融合后的模型需要更新 ORT 主机运行时和 WebGPU 执行提供程序,无需修改 GenAI;验证中 24 项测试全部通过,首层投影在 1 行和 256 行输入下逐位一致,但缺少具体延迟、吞吐量及对照基线,无法量化实际性能收益。

📁 Changed Files (7 files, 184 changes: +165/-19)
docs/ContribOperators.md
docs/OperatorKernels.md
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.cc
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.h
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net_params.wgsl.template
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc
👤 gyagp📅 Created: 10/08/2026
🤖 AI 摘要

该改动在 ONNX Runtime 算子测试框架中增加显式启用的 FP16 能力跳过机制,使设备缺少 ShaderF16 时可跳过 WebGPU 执行,同时继续测试其他执行提供程序,仅当没有任何提供程序能够执行时才将整个测试标记为跳过。实现覆盖会话初始化、权重预打包和执行阶段,且只识别预期成功的 WebGPU 测试中由共享着色器生成器报告的能力错误,不改变预期失败、无关错误或未启用该机制的测试行为。现有 FP16 Conv 和 ConvTranspose 测试辅助函数已接入该机制,输入、容差和排除的执行提供程序列表保持不变,并新增六个回归用例,其中包含禁用 ShaderF16 的真实原生 WebGPU 设备,且为该设备启用了上游原生 ORT 所需的 ImplicitDeviceSynchronization。该 PR 将 FP16 测试能力处理从 ConvTranspose3D 支持工作中独立出来,改善无 ShaderF16 设备上的测试兼容性;所提供信息未涉及算子计算实现或性能测量,不能据此推断推理性能提升。

📁 Changed Files (5 files, 232 changes: +232/-0)
onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc
onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc
onnxruntime/test/providers/webgpu/fp16_capability_test.cc
onnxruntime/test/unittest_util/base_tester.cc
onnxruntime/test/unittest_util/base_tester.h
👤 danielsongmicrosoft📅 Created: 10/07/2026
🤖 AI 摘要

该改动修复了 ONNX Runtime WebGPU GEMM 在调度网格归一化后,额外工作组可能超出逻辑批次范围并继续执行的问题。在 GEMM 公共实现中,重建逻辑工作组 z 索引后增加边界检查,当索引超出 `logical_dispatch_z` 的有效范围时立即返回,阻止无效工作组继续参与计算。新增的 70,000 批次 MatMul 回归用例专门覆盖归一化调度产生多余工作组的场景,以验证不会访问超出批次范围的数据。验证包括 WebGPU provider 的 RelWithDebInfo 构建、该回归测试及格式检查;改动主要提升大批量推理的正确性,现有信息未提供性能基准或跨设备兼容性测试结果。

📁 Changed Files (2 files, 5 changes: +5/-0)
onnxruntime/core/providers/webgpu/math/gemm_utils.cc
onnxruntime/test/providers/webgpu/matmul_large_test.cc
👤 mustjab📅 Created: 10/07/2026
🤖 AI 摘要

该 PR 为可选 LoRA 增加默认关闭的图融合优化,通过 optimization.enable_matmul_nbits_lora_fusion=1 启用,将符合条件的量化投影与 LoRA 子图融合为 com.microsoft.MatMulNBitsLora,避免空秩适配器仍执行额外的 MatMul 和 Add。实现涵盖算子定义、图优化器及 CPU/WebGPU 内核:秩为零时仅运行基础量化投影,启用适配器时仍保留两次低秩 MatMul 和独立的增量加法,因此并非将活跃 LoRA 的全部计算合并成单个 GPU 内核。支持范围为 CPU FP32 和原生 WebGPU FP32/FP16,融合要求执行提供程序与数据类型兼容、可覆盖的默认适配器张量为空且中间结果仅被单处使用,同时保留适配器输入名称和模型元数据,不修改量化权重,也不引入 ONNX 控制流。新增回归测试覆盖执行、向量输入、融合限制与显式启用行为;预期收益主要是减少无适配器时的冗余计算和调度,但所给验证描述不完整且缺少性能数据,无法确认具体加速幅度或完整验证范围。

📁 Changed Files (18 files, 1228 changes: +1222/-6)
docs/ContribOperators.md
docs/OperatorKernels.md
docs/design/optional_quantized_lora_mul_add.md
include/onnxruntime/core/session/onnxruntime_session_options_config_keys.h
onnxruntime/contrib_ops/cpu/cpu_contrib_kernels.cc
onnxruntime/contrib_ops/cpu/quantization/lora_mul_add_helper.h
onnxruntime/contrib_ops/cpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.h
onnxruntime/contrib_ops/webgpu/webgpu_contrib_kernels.cc
onnxruntime/core/graph/contrib_ops/contrib_defs.cc
onnxruntime/core/optimizer/graph_transformer_utils.cc
onnxruntime/core/optimizer/matmul_nbits_fusion.cc
onnxruntime/core/optimizer/matmul_nbits_fusion.h
onnxruntime/core/providers/webgpu/quantization/quantize_linear.cc
onnxruntime/test/contrib_ops/lora_mul_add_test.cc
onnxruntime/test/optimizer/lora_mul_add_fusion_test.cc
onnxruntime/test/providers/webgpu/tensor/quantize_linear_test.cc