onnxruntime/cmake/external
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
..
emsdk@d52c465201 Revert "Upgrade emsdk from 3.1.59 to 3.1.62" (#21817) 2024-08-22 11:21:00 -07:00
git.Win32.2.41.03.patch Fix ability to use patch on Windows CI machines (#18356) 2023-11-11 07:32:14 +10:00
libprotobuf-mutator@7a2ed51a6b
onnx@595228d99e Update to onnx 1.16.1 (#20702) 2024-06-04 11:06:28 -07:00
abseil-cpp.cmake Upgrade absl to the latest released version (#22365) 2024-10-09 20:21:40 -07:00
abseil-cpp.natvis Upgrade absl to the latest released version (#22365) 2024-10-09 20:21:40 -07:00
composable_kernel.cmake [MIGraphX EP/ ROCm EP] add gfx1200, gfx1201 to CMAKE_HIP_ARCHITECTURES (#22348) 2024-10-11 17:31:36 -07:00
cuDNN.cmake [CUDA] cuDNN Flash Attention (#21629) 2024-08-20 08:50:22 -07:00
cudnn_frontend.cmake Adding CUDNN Frontend and use for CUDA NN Convolution (#19470) 2024-08-02 15:16:42 -07:00
cutlass.cmake Upgrade cutlass to 3.5.1 and cudnn frontend to 1.7.0 (#22316) 2024-10-04 11:48:50 -07:00
dml.cmake [DML EP] Update DML to 1.15.4 (#22635) 2024-10-29 17:13:57 -07:00
dnnl.cmake Update oneDNN to v3.0.1 in order to support gcc 13 (#19344) 2024-02-01 15:39:03 -08:00
eigen.cmake [AIX] Python binding enablement and gcc support (#21934) 2024-08-30 12:17:26 -07:00
extensions.cmake Update C/C++ dependencies: abseil, date, nsync, googletest, wil, mp11, cpuinfo and safeint (#15470) 2023-09-08 13:35:04 -07:00
find_snpe.cmake
FindNumPy.cmake
helper_functions.cmake Put all external project targets under the 'External' folder in VS (#21765) 2024-08-16 15:51:50 +10:00
ipp-crypto.cmake
mimalloc.cmake
onnx_minimal.cmake
onnx_protobuf.natvis
onnxruntime_external_deps.cmake Add implementation of WebGPU EP (#22591) 2024-10-29 18:29:40 -07:00
protobuf_function.cmake
pybind11.cmake
pyxir.cmake
tvm.cmake
wil.cmake
xnnpack.cmake Patch fp16 to fix Xcode 16 builds with XNNPACK EP targeting x86_64. (#22294) 2024-10-03 14:17:15 -07:00