onnxruntime/tools/ci_build/github/azure-pipelines/templates
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
..
jobs [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
stages update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
android-binary-size-check-stage.yml
android-dump-logs-from-steps.yml
android-java-api-aar-test.yml Enable BrowserStack tests (#22457) 2024-10-16 11:10:12 -07:00
android-java-api-aar.yml RC releases to Maven for Android (#22391) 2024-10-11 08:58:02 -07:00
build-linux-wasm-step.yml
c-api-artifacts-package-and-publish-steps-posix.yml
c-api-artifacts-package-and-publish-steps-windows.yml
c-api-cpu.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
c-api-linux-cpu.yml Add python 3.13 support (#22380) 2024-10-14 18:07:54 -07:00
check-cache-stats.yml
check_test_result.yml
clean-agent-build-directory-step.yml
common-variables.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
compliance.yml
component-governance-component-detection-steps.yml
download-deps.yml Upgrade absl to the latest released version (#22365) 2024-10-09 20:21:40 -07:00
esrp_nuget.yml
explicitly-defined-final-tasks.yml
final-jar-testing.yml
flex-downloadPipelineArtifact.yml
get-docker-image-steps.yml
install-appcenter.yml
jar-esrp-dll.yml Add Digital Signature to DLLs in Maven Build (#22401) 2024-10-11 12:14:03 -07:00
jar-maven-signing-linux.yml Fix Maven Sha256 Checksum Issue (#22600) 2024-10-25 08:13:02 -07:00
jar-maven-signing-win.yml Fix Maven Sha256 Checksum Issue (#22600) 2024-10-25 08:13:02 -07:00
java-api-artifacts-package-and-publish-steps-posix.yml
linux-build-step-with-cache.yml
linux-ci.yml
linux-cpu-packaging-pipeline.yml
linux-wasm-ci.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
linux-web-init-and-check.yml
mac-build-step-with-cache.yml
mac-cpu-packaging-pipeline.yml use mac 12 for esrp code sign (#22134) 2024-09-19 12:06:41 +08:00
mac-cpu-packaging-steps.yml
mac-cpu-packing-jobs.yml Add implementation of WebGPU EP (#22591) 2024-10-29 18:29:40 -07:00
mac-esrp-dylib.yml
make_java_win_binaries.yml
nodejs-artifacts-package-and-publish-steps-posix.yml
nodejs-artifacts-package-and-publish-steps-windows.yml
ondevice-training-cpu-packaging-pipeline.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
orttraining-linux-gpu-test-ci-pipeline.yml
publish-nuget-steps.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
py-linux-qnn.yml Update QNN default version to 2.27 in CI pipeline (#22471) 2024-10-16 22:05:47 -07:00
py-linux.yml
py-package-smoking-test.yml Add python 3.13 support (#22380) 2024-10-14 18:07:54 -07:00
py-packaging-linux-test-cpu.yml
py-packaging-linux-test-cuda.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
py-packaging-selectable-stage.yml [TensorRT EP] Refactor TRT version update logic & apply TRT 10.5 (#22483) 2024-10-29 09:23:41 -07:00
py-packaging-training-cuda-stage-steps.yml
py-packaging-training-cuda-stage.yml
py-win-arm64-qnn.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
py-win-arm64ec-qnn.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
py-win-x64-qnn.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
qnn-ep-win.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
react-native-ci.yml Update Node.js version from 18.x to 20.x in CI pipelines (#22576) 2024-10-24 07:34:42 -07:00
rocm.yml
run-docker-build-steps.yml
set-nightly-build-option-variable-step.yml
set-python-manylinux-variables-step.yml Add python 3.13 support (#22380) 2024-10-14 18:07:54 -07:00
set-version-number-variables-step.yml
telemetry-steps.yml
upload-code-coverage-data.yml
use-android-emulator.yml
use-android-ndk.yml Update Android NDK version to 27.0.12077973. (#21989) 2024-09-05 17:57:24 -07:00
use-xcode-version.yml Update pool to MacOS-13 (#17361) 2024-09-17 10:07:30 -07:00
validate-package.yml update pipline python version from 3.8 to 3.12 (#22517) 2024-10-21 07:50:31 -07:00
web-browserstack-ci.yml Update Node.js version from 18.x to 20.x in CI pipelines (#22576) 2024-10-24 07:34:42 -07:00
web-ci.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.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
win-esrp-dll.yml Add DoEsrp Check for Signature Verification (#22570) 2024-10-24 16:55:36 +08:00
win-wasm-ci.yml Update Node.js version from 18.x to 20.x in CI pipelines (#22576) 2024-10-24 07:34:42 -07:00
win-web-ci.yml Update Node.js version from 18.x to 20.x in CI pipelines (#22576) 2024-10-24 07:34:42 -07:00
win-web-multi-browsers.yml Update Node.js version from 18.x to 20.x in CI pipelines (#22576) 2024-10-24 07:34:42 -07:00
windowsai-steps.yml Add pipauth to more ADO pipelines and enable CSV (#22612) 2024-10-28 16:39:22 -07:00
with-container-registry-steps.yml