onnxruntime/tools/ci_build/github/azure-pipelines
Yulong Wang 7a8fa12850
Add implementation of WebGPU EP (#22591)
### Description

This PR adds the actual implementation of the WebGPU EP based on
https://github.com/microsoft/onnxruntime/pull/22318.

This change includes the following:

<details>
<summary><b>core framework of WebGPU EP</b></summary>

  - WebGPU EP factory classes for:
    - handling WebGPU options
    - creating WebGPU EP instance
    - creating WebGPU context
  - WebGPU Execution Provider classes
    - GPU Buffer allocator
    - data transfer
  - Buffer management classes
    - Buffer Manager
    - BufferCacheManager
      - DisabledCacheManager
      - SimpleCacheManager
      - LazyReleaseCacheManager
      - BucketCacheManager
  - Program classes
    - Program (base)
    - Program Cache Key
    - Program Manager
  - Shader helper classes
    - Shader Helper
    - ShaderIndicesHelper
    - ShaderVariableHelper
  - Utils
    - GPU Query based profiler
    - compute context
    - string utils
  - Miscs
    - Python binding webgpu support (basic)
 
</details>

<details>
<summary><b>Kernel implementation</b></summary>


  - onnx.ai (default opset):
- Elementwise (math): Abs, Neg, Floor, Ceil, Reciprocal, Sqrt, Exp, Erf,
Log, Sin, Cos, Tan, Asin, Acos, Atan, Sinh, Cosh, Asinh, Acosh, Atanh,
Tanh, Not, Cast
- Elementwise (activation): Sigmoid, HardSigmoid, Clip, Elu, Relu,
LeakyRelu, ThresholdedRelu, Gelu
- Binary (math): Add, Sub, Mul, Div, Pow, Equal, Greater,
GreaterOrEqual, Less, LessOrEqual
    - (Tensors): Shape, Reshape, Squeeze, Unsqueeze
    - Where
    - Transpose
    - Concat
    - Expand
    - Gather
    - Tile
    - Range
    - LayerNormalization
  - com.microsoft
    - FastGelu
    - MatMulNBits
    - MultiHeadAttention
    - RotaryEmbedding
    - SkipLayerNormalization
    - LayerNormalization
    - SimplifiedLayerNormalization
    - SkipSimplifiedLayerNormalization

</details>

<details>
<summary><b>Build, test and CI pipeline integration</b></summary>

  - build works for Windows, macOS and iOS
  - support onnxruntime_test_all and python node test
  - added a new unit test for `--use_external_dawn` build flag.
  - updated MacOS pipeline to build with WebGPU support
  - added a new pipeline for WebGPU Windows

</details>

This change does not include:

- Node.js binding support for WebGPU (will be a separate PR)
2024-10-29 18:29:40 -07:00
..
nodejs/templates Update pool to MacOS-13 (#17361) 2024-09-17 10:07:30 -07:00
nuget [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
stages [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
templates Add implementation of WebGPU EP (#22591) 2024-10-29 18:29:40 -07:00
triggers
android-arm64-v8a-QNN-crosscompile-ci-pipeline.yml Update QNN default version to 2.27 in CI pipeline (#22471) 2024-10-16 22:05:47 -07:00
android-x86_64-crosscompile-ci-pipeline.yml Update pool to MacOS-13 (#17361) 2024-09-17 10:07:30 -07:00
bigmodels-ci-pipeline.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
binary-size-checks-pipeline.yml
build-perf-test-binaries-pipeline.yml Refactor cuda packaging pipeline (#22542) 2024-10-23 08:14:10 -07:00
c-api-noopenmp-packaging-pipelines.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
c-api-training-packaging-pipelines.yml
cuda-packaging-pipeline.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
linux-ci-pipeline.yml Add python 3.13 support (#22380) 2024-10-14 18:07:54 -07:00
linux-cpu-minimal-build-ci-pipeline.yml
linux-dnnl-ci-pipeline.yml
linux-gpu-ci-pipeline.yml Update CMake (#22516) 2024-10-21 07:51:05 -07:00
linux-gpu-tensorrt-ci-pipeline.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
linux-gpu-tensorrt-daily-perf-pipeline.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
linux-migraphx-ci-pipeline.yml [ROCm] Python 3.10 in ROCm CI, and ROCm 6.2.3 in MigraphX CI (#22527) 2024-10-25 11:47:16 -07:00
linux-openvino-ci-pipeline.yml Memory Optimization for Compilation in OVEP (#21872) 2024-09-03 13:52:31 -07:00
linux-qnn-ci-pipeline.yml Update QNN default version to 2.27 in CI pipeline (#22471) 2024-10-16 22:05:47 -07:00
linux-rocm-ci-pipeline.yml [ROCm] Python 3.10 in ROCm CI, and ROCm 6.2.3 in MigraphX CI (#22527) 2024-10-25 11:47:16 -07:00
mac-ci-pipeline.yml
mac-coreml-ci-pipeline.yml Update pool to MacOS-13 (#17361) 2024-09-17 10:07:30 -07:00
mac-ios-ci-pipeline.yml Specify iOS simulator runtime version (#22474) 2024-10-18 09:26:06 -07:00
mac-ios-packaging-pipeline.yml Update pool to MacOS-13 (#17361) 2024-09-17 10:07:30 -07:00
mac-react-native-ci-pipeline.yml Re-enable codesign for maven packages (#22308) 2024-10-04 14:30:17 -07:00
npm-packaging-pipeline.yml Re-enable codesign for maven packages (#22308) 2024-10-04 14:30:17 -07:00
nuget-cuda-publishing-pipeline.yml
nuget-windows-ai.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
post-merge-jobs.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
publish-nuget.yml
py-cuda-alt-package-test-pipeline.yml Adding new Python package testing pipeline for Cuda Alt (#22584) 2024-10-24 19:24:53 -07:00
py-cuda-alt-packaging-pipeline.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
py-cuda-package-test-pipeline.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
py-cuda-packaging-pipeline.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
py-cuda-publishing-pipeline.yml
py-dml-packaging-pipeline.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
py-package-build-pipeline.yml
py-package-test-pipeline.yml Adding new Python package testing pipeline for Cuda Alt (#22584) 2024-10-24 19:24:53 -07:00
py-packaging-pipeline.yml Enable 1ES on Python CUDA Package Pipelines (#22560) 2024-10-24 09:51:00 -07:00
qnn-ep-nuget-packaging-pipeline.yml Update QNN default version to 2.27 in CI pipeline (#22471) 2024-10-16 22:05:47 -07:00
rocm-nuget-packaging-pipeline.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
rocm-publish-nuget-pipeline.yml New rocm nuget publish pipeline (#22418) 2024-10-13 08:30:06 +08:00
web-ci-pipeline.yml
win-ci-fuzz-testing.yml Update Node.js version from 18.x to 20.x in CI pipelines (#22576) 2024-10-24 07:34:42 -07:00
win-ci-pipeline.yml Remove training pipelines from Win CPI CI as redundant (#22190) 2024-09-23 18:15:41 -07:00
win-gpu-cuda-ci-pipeline.yml
win-gpu-dml-ci-pipeline.yml
win-gpu-doc-gen-ci-pipeline.yml
win-gpu-reduce-op-ci-pipeline.yml
win-gpu-tensorrt-ci-pipeline.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
win-gpu-training-ci-pipeline.yml
win-gpu-webgpu-ci-pipeline.yml Add implementation of WebGPU EP (#22591) 2024-10-29 18:29:40 -07:00
win-qnn-arm64-ci-pipeline.yml Update QNN default version to 2.27 in CI pipeline (#22471) 2024-10-16 22:05:47 -07:00
win-qnn-ci-pipeline.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00