ONNX Runtime WebGPU PR Monitor

Last Updated: 10/20/2026, 09:25 PM | Total: 660 PRs

Showing 1-10 of 114 PRs
Page 1 of 12
👤 aciddelgado📅 Created: 10/20/2026
🤖 AI 摘要

该改动为 WebGPU 新增 com.microsoft::ConvStateReplay v1 contrib 算子,用于推测解码中根据传入的状态快照和已捕获输入的保留前缀重建滚动卷积历史,仅进行复制与选择,不执行卷积运算。实现通过完整底层张量和 CPU int64[8] 元数据描述字节偏移、几何布局及保留数量,支持 FP16/FP32、批次与通道维度,以及从零到捕获容量的全部保留数量,包括超过历史宽度的情况。其 WebGPU 内核使用 BufferView、逻辑偏移和整数访问进行位精确复制,支持仅按两字节对齐的 FP16 子视图,保留有符号零、次正规数和 NaN 载荷,并通过掩码边界写入保护相邻元素。改动还补齐了算子定义、WebGPU 内核注册、文档和专用测试,为状态重放提供独立执行路径;但现有信息未提供性能基准,且描述中的校验部分不完整,因此无法确认具体加速幅度或完整的参数校验范围。

📁 Changed Files (9 files, 866 changes: +864/-2)
docs/ContribOperators.md
onnxruntime/contrib_ops/webgpu/bert/conv_state_replay.cc
onnxruntime/contrib_ops/webgpu/bert/conv_state_replay.h
onnxruntime/contrib_ops/webgpu/bert/conv_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/ep/README.md
onnxruntime/test/contrib_ops/conv_state_replay_op_test.cc
👤 qjia7📅 Created: 10/20/2026
🤖 AI 摘要

此次改动将 WebGPU 输入上传批处理抽取为共享机制,供内置执行提供程序(EP)和插件 EP 使用,旨在减少大量小输入张量逐个上传时的 staging 缓冲区分配与队列提交开销。共享上传器将传输合并到单个容量不超过 16 MiB 的 staging 缓冲区中,内置路径覆盖符合条件的 CPU 到 GPU 输入复制,包括 UMA 设备;插件路径则要求输入共用同一个非空的所属会话流,并在复制前检查整个传输列表的批处理资格,以保持混合传输回退时的顺序。单输入、超大输入及不符合条件的传输仍走回退路径,插件端也保留映射缓冲区和无流场景的原有行为。新增六项回归测试覆盖重复写入的数据完整性、空张量与非对齐张量、staging 容量边界、超大输入及插件实际队列提交次数;预期收益是降低上传开销,但所给信息未包含端到端性能基准,无法量化推理加速幅度。

📁 Changed Files (9 files, 345 changes: +344/-1)
onnxruntime/core/providers/webgpu/buffer_manager.cc
onnxruntime/core/providers/webgpu/buffer_manager.h
onnxruntime/core/providers/webgpu/data_transfer.cc
onnxruntime/core/providers/webgpu/data_transfer.h
onnxruntime/core/providers/webgpu/ep/sync_stream.cc
onnxruntime/core/providers/webgpu/ep/sync_stream.h
onnxruntime/core/providers/webgpu/webgpu_provider_factory.cc
onnxruntime/test/providers/webgpu/data_transfer_test.cc
onnxruntime/test/providers/webgpu/plugin/test_webgpu_allocators.cc
👤 xgbtxy📅 Created: 10/20/2026
🤖 AI 摘要

该改动修复 ONNX Runtime 在 CPU FP16 回退插入 Cast 时的张量值命名冲突,避免因节点名与张量值名属于不同命名空间而产生重复定义或类型冲突。实现上,AddCastNode 使用 GenerateNodeArgName 独立生成输出张量名,并排除当前图、祖先图及后代子图中已存在的名称,以保护嵌套图的词法作用域。每次 InsertCastTransformer::ApplyImpl 会一次性收集后代图指针,并在分配名称时查询这些图的最新状态,因此父图也能避开此前子图递归中新插入的值名,同时保持遍历顺序和精度回退策略不变。修改还补充了相关回归测试,主要提升含精度转换和嵌套子图模型的正确性与兼容性;现有信息未显示 WebGPU 专属逻辑变更,也未提供性能测量,无法据此判断 WebGPU 推理速度或整体性能收益。

📁 Changed Files (2 files, 319 changes: +315/-4)
onnxruntime/core/optimizer/insert_cast_transformer.cc
onnxruntime/test/framework/insert_cast_transformer_test.cc
👤 xiaofeihan1📅 Created: 10/20/2026
🤖 AI 摘要

该改动修复了同一 ONNX Runtime 会话内,独立 CPU IoBinding 操作与直接推理、图捕获及重放交叠时,对共享 WebGPU 命令录制状态的并发访问竞争。实现上引入操作级递归互斥锁,同步内核命令录制、内存分配与清零、张量拷贝、流刷新、运行回调以及计算图重放和释放,同时保持 Core Run 原有的串行化机制不变。回归测试覆盖上述并发场景、图重新捕获,以及主机端错误导致 OnRunEnd 被跳过后的恢复;现有 Windows 本地构建中的 WebGPU 插件并发测试套件共 45 项测试全部通过。该修复旨在提升 WebGPU 并发使用的正确性与稳定性,但未提供性能基准或其他平台验证结果,尚无法量化加锁开销或确认跨平台表现。

📁 Changed Files (7 files, 116 changes: +113/-3)
onnxruntime/core/providers/webgpu/allocator.cc
onnxruntime/core/providers/webgpu/data_transfer.cc
onnxruntime/core/providers/webgpu/ep/sync_stream.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/core/providers/webgpu/webgpu_execution_provider.cc
onnxruntime/core/providers/webgpu/webgpu_kernel.cc
onnxruntime/test/providers/webgpu/plugin/test_webgpu_concurrency.cc
👤 rvandermeulen📅 Created: 10/20/2026
🤖 AI 摘要

该 PR 新增默认关闭的 CMake 选项 onnxruntime_DISABLE_STREAM,允许非 minimal 构建不再定义 ORT_ENABLE_STREAM,从而排除受该宏保护的框架和会话流支持代码;minimal 构建原本就不启用该宏。该选项仅适用于纯 CPU 执行提供程序构建,WebGPU、CUDA、TensorRT、QNN 等注册流处理器的执行提供程序仍依赖流支持,因此它不是 GPU 推理优化开关。配置阶段会拒绝禁用流与完整训练同时启用的组合,但不会阻止启用上述执行提供程序,也无法据此保证运行时加载插件执行提供程序的兼容性。改动还修正了禁用流时分配规划器对会话执行顺序的遵循,并补充相关测试;描述中的优先级执行顺序说明被截断,且未提供性能或体积测量,无法量化该选项的收益。

📁 Changed Files (3 files, 36 changes: +33/-3)
cmake/CMakeLists.txt
onnxruntime/core/framework/allocation_planner.cc
onnxruntime/test/framework/allocation_planner_test.cc
👤 daijh📅 Created: 10/20/2026
🤖 AI 摘要

该 PR 为 ONNX Runtime 的 WebGPU 执行提供程序新增 disableSubgroupMatrix 选项,允许禁用 subgroup matrix 内核并改用其回退实现,且支持使用外部传入的 GPU device。改动覆盖 JS 会话选项类型、Web/WASM 与 Node 参数传递,以及 C++ provider 选项解析和 WebGPU 上下文配置;JS 可设置布尔值,C++ provider 选项或会话配置接受 "0" 或 "1"。该选项采用“首次创建上下文时的配置优先”语义,后续复用上下文时若传入冲突值或省略该选项,将记录警告,与 enableRobustness 的行为一致,并新增上下文及 Node API 层面的测试。此开关提供了绕过 subgroup matrix 内核的兼容性与故障排查手段,但禁用后可能影响推理性能;现有信息未提供具体受影响算子、设备兼容性验证或性能基准,无法量化其影响。

📁 Changed Files (9 files, 135 changes: +135/-0)
js/common/lib/inference-session.ts
js/node/src/session_options_helper.cc
js/node/test/api/simple-api-tests.ts
js/web/lib/wasm/session-options.ts
onnxruntime/core/providers/webgpu/webgpu_context.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/core/providers/webgpu/webgpu_provider_factory.cc
onnxruntime/core/providers/webgpu/webgpu_provider_options.h
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
🤖 AI 摘要

该 PR 针对动态形状或模型未提供形状信息时、加载阶段无法拦截的非法输入,在 CPU 及 contrib 算子的执行路径中补充运行时校验,使其返回明确的错误 Status,而非发生越界访问。已明确的实现包括 ReverseSequence 在读取前两维前检查秩至少为 2,DFT 在访问末维前检查输入秩,以及 opset ≥ 20 的 DFT 在读取可选 axis 输入前检查其是否存在且仅含一个元素,缺省时保留默认轴设置。文件路径还表明 GatherND、量化查表激活基类 QLinearLookupBase 和 Inverse 的 CPU 实现得到调整,并为相关算子补充测试,但描述被截断,无法确认这些算子及 STFT 的完整校验条件。此次修改未涉及 WebGPU 内核,主要提升 CPU 执行路径对非法输入和可选输入的健壮性;新增检查的性能影响尚无基准数据支持,也不能据此推断 GPU 推理性能变化。

📁 Changed Files (10 files, 145 changes: +142/-3)
onnxruntime/contrib_ops/cpu/inverse.cc
onnxruntime/contrib_ops/cpu/quantization/qlinear_activations.cc
onnxruntime/core/providers/cpu/signal/dft.cc
onnxruntime/core/providers/cpu/tensor/gather_nd.h
onnxruntime/core/providers/cpu/tensor/reverse_sequence.cc
onnxruntime/test/contrib_ops/inverse_test.cc
onnxruntime/test/contrib_ops/qlinear_lookup_table_test.cc
onnxruntime/test/providers/cpu/signal/signal_ops_test.cc
onnxruntime/test/providers/cpu/tensor/gather_nd_op_test.cc
onnxruntime/test/providers/cpu/tensor/reverse_sequence_test.cc
👤 apsonawane📅 Created: 10/19/2026
🤖 AI 摘要

该 PR 主要优化 ONNX Runtime CUDA 后端的量化 MoE 结果收尾和块缩放 FP8 投影解码路径,同时保留原有 packed-INT、原生 decode 及 FP32 输出路径,以维持既有用法的兼容性。关键实现包括支持拆分输出的 FP8 投影、新增 FP8 到 BF16 的反量化 CUDA 实现,并补齐 Float8E4M3FN_BFloat16 工厂,使 FP32 缩放因子与 BF16 输出保持独立。配套更新了算子定义、类型解析和文档,增加 MoE 压缩、FP8 矩阵乘及反量化测试,并在满足内部测试、FP4 和 contrib 配置条件时,为普通与插件 CUDA 构建启用 FP4 QMoE 回归测试。现有信息表明改动面向 CUDA,未见 WebGPU 实现变更;性能优化目标明确,但缺少基准数据及对应硬件、输入规模,无法量化加速收益。

📁 Changed Files (27 files, 2099 changes: +1615/-484)
cmake/onnxruntime_unittests.cmake
docs/ContribOperators.md
docs/OperatorKernels.md
onnxruntime/contrib_ops/cuda/cuda_contrib_kernels.cc
onnxruntime/contrib_ops/cuda/llm/moe_gemm/moe_gemv_fp4.cu
onnxruntime/contrib_ops/cuda/llm/moe_gemm/moe_gemv_fp4.h
onnxruntime/contrib_ops/cuda/llm/moe_gemm/moe_kernels.cu
onnxruntime/contrib_ops/cuda/math/matmul_block_scaled_fp8.cc
onnxruntime/contrib_ops/cuda/math/matmul_block_scaled_fp8.cu
onnxruntime/contrib_ops/cuda/math/matmul_block_scaled_fp8.h
onnxruntime/contrib_ops/cuda/moe/moe_quantization.cc
onnxruntime/contrib_ops/cuda/moe/qmoe_kernels.cu
onnxruntime/contrib_ops/cuda/moe/qmoe_kernels.h
onnxruntime/contrib_ops/cuda/quantization/dequantize_fp8_bf16.cu
onnxruntime/contrib_ops/cuda/quantization/dequantize_fp8_bf16.h
onnxruntime/contrib_ops/cuda/quantization/quantize_dequantize_linear.cc
onnxruntime/core/framework/kernel_type_str_resolver_utils.cc
onnxruntime/core/graph/contrib_ops/contrib_defs.cc
onnxruntime/core/graph/contrib_ops/quantization_defs.cc
onnxruntime/core/optimizer/qdq_transformer/qdq_propagation.cc
onnxruntime/core/providers/cpu/quantization/quantize_linear.cc
onnxruntime/test/contrib_ops/cuda_kernels/qmoe_fp8_compaction_test.cc
onnxruntime/test/contrib_ops/dequantize_fp8_bf16_test.cc
onnxruntime/test/contrib_ops/matmul_block_scaled_fp8_test.cc
onnxruntime/test/contrib_ops/moe_test.cc
onnxruntime/test/contrib_ops/quantize_ops_test.cc
onnxruntime/test/optimizer/qdq_transformer_test.cc
👤 apsonawane📅 Created: 10/19/2026
🤖 AI 摘要

该 PR 主要扩展 DynamicSparseAttention 的缓存能力与分组 CUDA prefill/decode 路径,并优化 PackedSparseAttentionIndexer 的打包索引处理,支持 BF16 QSA 使用 FP32 key-state、可选中间状态与状态输出,以及确定性的分块选择。实现上修复了分组浮点缓存 decode 在单 split 时仍需分配局部结果缓冲区的问题,并增加 FP16/BF16 参考一致性测试,覆盖不完整查询头分组、空或部分选择、局部窗口、sink logits 及特定单 split 回归场景。算子 schema、CUDA 和 WebGPU 统一了 QSA 可选参数的位置,WebGPU 则显式拒绝仅 CUDA 支持的模式,避免接口对齐被误认为后端功能完全一致。实验性的 radix/warp-head 控制保持默认关闭并注明适用范围;这些修改旨在改善 CUDA 执行效率与边界场景正确性,但提供的信息不含性能基准,无法量化加速收益或判断 WebGPU 是否提速。

📁 Changed Files (18 files, 2825 changes: +2400/-425)
docs/ContribOperators.md
docs/OperatorKernels.md
docs/contrib_ops/packed_sparse_attention_indexer.md
onnxruntime/contrib_ops/cpu/sparse/packed_sparse_attention_indexer_common.h
onnxruntime/contrib_ops/cuda/bert/dynamic_sparse_attention.cc
onnxruntime/contrib_ops/cuda/bert/dynamic_sparse_attention_impl.cu
onnxruntime/contrib_ops/cuda/bert/dynamic_sparse_attention_impl.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/webgpu/bert/dynamic_sparse_attention.cc
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer.cc
onnxruntime/contrib_ops/webgpu/bert/packed_sparse_attention_indexer.h
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/dynamic_sparse_attention_op_test.cc
onnxruntime/test/contrib_ops/packed_sparse_attention_indexer_op_test.cc
👤 apsonawane📅 Created: 10/19/2026
🤖 AI 摘要

该 PR 扩展 Gated Delta Net(GDN)与带状态因果卷积的融合处理,支持激活类型的 GDN 门控、融合打包投影,并完善卷积状态及归一化处理,同时保留现有默认模式。核心实现主要位于 CUDA 算子与内核,并同步调整算子 schema、执行提供程序校验和文档;其中修复了变长批次中空请求的 mid_state 初始化,使其继承输入状态或在无输入状态时清零,并覆盖两种头维度及有无初始状态的回归场景。WebGPU 两类算子的入口也有配套修改,但现有信息不足以确认其是否完整支持新增融合路径;CPU 因果卷积入口同样进行了调整。融合处理有望减少独立算子调度或中间数据开销,但未提供性能基准,无法判断实际加速幅度;兼容性方面则通过保留默认行为及既有回归覆盖降低变更风险。

📁 Changed Files (19 files, 1002 changes: +844/-158)
docs/ContribOperators.md
docs/OperatorKernels.md
onnxruntime/contrib_ops/cpu/bert/causal_conv_with_state.cc
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state.cc
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state.h
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state_impl.cu
onnxruntime/contrib_ops/cuda/bert/causal_conv_with_state_impl.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net.cc
onnxruntime/contrib_ops/cuda/bert/gated_delta_net.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_impl.cu
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_impl.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_mma.cuh
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_plan.h
onnxruntime/contrib_ops/cuda/bert/gated_delta_net_split_impl.cu
onnxruntime/contrib_ops/webgpu/bert/causal_conv_with_state.cc
onnxruntime/contrib_ops/webgpu/bert/gated_delta_net.cc
onnxruntime/core/graph/contrib_ops/bert_defs.cc
onnxruntime/test/contrib_ops/causal_conv_with_state_op_test.cc
onnxruntime/test/contrib_ops/gated_delta_net_op_test.cc