ONNX Runtime WebGPU PR Monitor

Last Updated: 10/21/2026, 09:28 PM | Total: 664 PRs

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

该 PR 完善了 ONNX Runtime WebGPU 执行提供程序(EP)的发布流程文档,重点补充最终发布步骤的操作细节,并对其他说明做了小幅调整。改动位于 plugin-ep-webgpu/RELEASE.md,属于发布指南维护,旨在提高发布流程的清晰度和可操作性,而非修改 WebGPU 算子、GPU 推理逻辑或运行时实现。现有描述未提供具体新增的发布指令、检查项或版本要求,因此无法判断流程细节如何变化,也没有依据认为此次改动会直接影响推理性能或运行兼容性。

📁 Changed Files (1 files, 32 changes: +22/-10)
plugin-ep-webgpu/RELEASE.md
👤 gyagp📅 Created: 10/21/2026
🤖 AI 摘要

该改动针对 ONNX Runtime WebGPU 在 Windows 上的原生 D3D12 外部权重加载,在受支持的 UMA 设备上将文件数据直接读入 CPU 可见、采用写回缓存的目标 UAV 缓冲区,绕过默认的 192 MiB 上传暂存池及后续 GPU 拷贝。新路径需通过设备架构检查和缓冲区创建、映射能力探测,否则保留原有上传流程,且无需新增 WebGPU Provider 配置。读取使用八个工作线程、16 MiB 分块和有界队列,并在继续分配堆与资源时逐步向读取线程提供已映射的目标缓冲区,同时保持范围顺序与填充语义。失败或取消时会串行处理取消回调,并确保读取任务结束、线程回收后再解除映射或释放资源;新增原生 D3D12 测试,保留上传槽位测试对旧路径的覆盖及禁用异常的构建支持。该优化可减少 UMA 权重加载中的暂存内存需求与数据搬运,但描述未提供加载耗时或峰值内存的实测数据,无法量化收益。

📁 Changed Files (4 files, 615 changes: +606/-9)
onnxruntime/core/platform/windows/d3d12_file_loader/d3d12_file_buffer_loader.cc
onnxruntime/core/platform/windows/d3d12_file_loader/d3d12_file_buffer_loader.h
onnxruntime/test/providers/webgpu/d3d12_file_buffer_loader_test.cc
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
👤 qjia7📅 Created: 10/21/2026
🤖 AI 摘要

该改动修复 WebGPU 图捕获重放遗漏显式缓冲区清零的问题,避免 GRU/LSTM 在序列长度至少为 2 时,后续调用从残留的隐藏态或细胞态开始计算,同时恢复空序列输出在重放时的清零行为。实现上将 ComputeContext::FillZero 记录为独立的缓冲区清零命令,保留目标缓冲区及请求清零的大小,并与复制和计算调度按原顺序重放;这些命令不占用性能分析时间戳槽位,分配器初始化清零则保持原有行为。共享修复也覆盖 CausalConvWithState、PagedAttention 和 PackedSparseAttentionIndexer 中已有的 FillZero 调用,但这些算子的模型级效果尚未单独验证。测试改动涉及图捕获、WebGPU 上下文和流回归测试,但提供的验证信息仅说明复用了现有 Windows Release 构建,未给出测试执行结果、性能数据或跨平台兼容性结论。

📁 Changed Files (6 files, 243 changes: +236/-7)
onnxruntime/core/providers/webgpu/compute_context.h
onnxruntime/core/providers/webgpu/webgpu_context.cc
onnxruntime/core/providers/webgpu/webgpu_context.h
onnxruntime/test/providers/graph_capture_test.cc
onnxruntime/test/providers/webgpu/webgpu_context_test.cc
onnxruntime/test/providers/webgpu/webgpu_stream_regression_test.cc
👤 aciddelgado📅 Created: 10/20/2026
🤖 AI 摘要

该 PR 为 WebGPU 的量化 MatMulNBits 引入实验性的形状感知内核选择策略,针对小 M 场景优先使用现有常规内核,而非 subgroup-matrix 内核。该策略仅在原有 subgroup 资格检查通过后,对 INT4 量化、FP16 输入与输出、wave32 的 16×16×16 配置生效,触发条件为 4 ≤ M ≤ 8 且以 64 位整数计算的 M×N ≤ 131072;命中后会跳过中间的 DP4A 和宽 tile 路径,直接选择常规 MatMulNBits。改动仅涉及内核选择逻辑,保留全局 tile 优化阈值 M=4、M=1 解码路径及其他配置的既有行为,不修改着色器实现或推测解码逻辑。PR 补充了选择边界测试、性能实验及数值正确性调查文档,并报告九项聚焦 WebGPU 的 C++ 测试通过;但所给信息未包含具体性能数据或数值调查结论,因此无法量化收益或确认不同内核间的数值一致性。

📁 Changed Files (5 files, 549 changes: +534/-15)
docs/contrib_ops/webgpu/matmul_nbits_small_m_correctness.md
docs/contrib_ops/webgpu/matmul_nbits_small_m_experiments.md
onnxruntime/contrib_ops/webgpu/quantization/matmul_nbits.cc
onnxruntime/contrib_ops/webgpu/quantization/subgroup_matrix_matmul_nbits.h
onnxruntime/test/providers/webgpu/quantization/matmul_nbits_test.cc
👤 qjia7📅 Created: 10/20/2026
🤖 AI 摘要

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

📁 Changed Files (9 files, 408 changes: +407/-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, 178 changes: +175/-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