onnxruntime/js/web/docs/webgpu-operators.md
Arthur Islamov d0519a7603
[js/web] BiasSplitGelu and BiasAdd kernels (#17161)
### Description
Two contrib kernels that supposed to speed-up StableDiffusion according
to this doc
https://github.com/microsoft/onnxruntime/blob/main/onnxruntime/python/tools/transformers/models/stable_diffusion/README.md

However, there is no noticable effect in speed or memory consumption. So
i guess the only way to make it faster is to implement
MultiHeadAttention but i'm not capable of doing that right now. So i'll
focus on existing PRs and finding the JSEP kernel that produces
incorrect results. It should be one of the old ones (i suspect Conv or
ConvTranspose), as SD was not generating images correctly on webgpu
since i started working on it. I hoped someone else would fix that by
the time i finish with kernels/optimizations 😅

---------

Co-authored-by: Guenther Schmuelling <guschmue@microsoft.com>
Co-authored-by: Yulong Wang <7679871+fs-eire@users.noreply.github.com>
2023-10-03 12:20:20 -07:00

4.2 KiB

Operators Support Table

The following table shows ONNX operators and the supported opset domain/versions in WebGPU EP by ONNX Runtime Web. For example, 4-6, 8+ means ONNX Runtime Web currently support opset version 4 to 6, 8 and above.

This file is automatically generated from the def files via this script. Do not modify directly.

Operator Opset Comments
Abs ai.onnx(6-12,13+)
Acos ai.onnx(7+)
Acosh ai.onnx(9+)
Add ai.onnx(7-12,13,14+)
ArgMax ai.onnx(1-10,11-12,13+)
ArgMin ai.onnx(1-10,11-12,13+)
Asin ai.onnx(7+)
Asinh ai.onnx(9+)
Atan ai.onnx(7+)
Atanh ai.onnx(9+)
AveragePool ai.onnx(7-9,10,11+); com.ms.internal.nhwc(11+) need perf optimization; need implementing activation
BiasAdd com.microsoft(1+)
BiasSplitGelu com.microsoft(1+)
Cast ai.onnx(6-8,9-12,13-18,19+)
Ceil ai.onnx(6-12,13+)
Clip ai.onnx(6-10,11,12,13+)
Concat ai.onnx(1-3,4-10,11-12,13+)
Conv ai.onnx(1-10,11+); com.ms.internal.nhwc(11+) need perf optimization; conv3d is not supported; need implementing activation
ConvTranspose ai.onnx(1-10,11+); com.ms.internal.nhwc(11+) need perf optimization; ConvTranspose3d is not supported; need implementing activation
Cos ai.onnx(7+)
Cosh ai.onnx(9+)
Div ai.onnx(7-12,13,14+)
Einsum ai.onnx(12+)
Elu ai.onnx(6+)
Equal ai.onnx(7-10,11-12,13-18,19+)
Erf ai.onnx(9-12,13+)
Exp ai.onnx(6-12,13+)
Expand ai.onnx(8-12,13+)
Flatten ai.onnx(1-8,9-10,11-12,13+)
Floor ai.onnx(6-12,13+)
Gather ai.onnx(1-10,11-12,13+)
GatherElements ai.onnx(11-12,13+)
Gelu com.microsoft(1+)
Gemm ai.onnx(7-8,9-10,11-12,13+)
GlobalAveragePool ai.onnx(1+); com.ms.internal.nhwc(1+)
GlobalMaxPool ai.onnx(1+); com.ms.internal.nhwc(1+)
Greater ai.onnx(7-8,9-12,13+)
GreaterOrEqual ai.onnx(12-15,16+)
If ai.onnx(1-10,11-12,13-18,19+)
InstanceNormalization ai.onnx(6+); com.ms.internal.nhwc(6+)
LayerNormalization ai.onnx(17+)
LeakyRelu ai.onnx(6-15,16+)
Less ai.onnx(7-8,9-12,13+)
LessOrEqual ai.onnx(12-15,16+)
Log ai.onnx(6-12,13+)
MatMul ai.onnx(1-12,13+)
MaxPool ai.onnx(1-7,8-9,10,11,12+); com.ms.internal.nhwc(11,12+) need perf optimization; need implementing activation
MemcpyFromHost ai.onnx(1+)
MemcpyToHost ai.onnx(1+)
Mul ai.onnx(7-12,13,14+)
Neg ai.onnx(6-12,13+)
Not ai.onnx(1+)
Pad ai.onnx(2-10,11-12,13-17,18,19+)
Pow ai.onnx(7-11,12,13-14,15+)
Range ai.onnx(11+)
Reciprocal ai.onnx(6-12,13+)
ReduceL1 ai.onnx(1-10,11-12,13-17,18+)
ReduceL2 ai.onnx(1-10,11-12,13-17,18+)
ReduceLogSum ai.onnx(1-10,11-12,13-17,18+)
ReduceLogSumExp ai.onnx(1-10,11-12,13-17,18+)
ReduceMax ai.onnx(1-10,11,12,13-17,18+)
ReduceMean ai.onnx(1-10,11-12,13-17,18+)
ReduceMin ai.onnx(1-10,11,12,13-17,18+)
ReduceProd ai.onnx(1-10,11-12,13-17,18+)
ReduceSum ai.onnx(1-10,11-12,13+)
ReduceSumSquare ai.onnx(1-10,11-12,13-17,18+)
Relu ai.onnx(6-12,13,14+)
Reshape ai.onnx(5-12,13,14+) no GPU kernel
Resize ai.onnx(10,11-12,13-17,18,19+); com.ms.internal.nhwc(11-12,13-17,18,19+) CoordinateTransformMode align_corners is not supported with downsampling
Shape ai.onnx(1-12,13-14,15+) no GPU kernel; an ORT warning is generated - need to fix
Sigmoid ai.onnx(6-12,13+)
Sin ai.onnx(7+)
Sinh ai.onnx(9+)
SkipLayerNormalization com.microsoft(1+)
Slice ai.onnx(1-9,10,11-12,13+)
Softmax ai.onnx(1-10,11-12,13+)
Split ai.onnx(1,2-10,11-12,13-17,18+)
Sqrt ai.onnx(6-12,13+)
Squeeze ai.onnx(1-10,11-12,13+)
Sub ai.onnx(7-12,13,14+)
Tan ai.onnx(7+)
Tanh ai.onnx(6-12,13+)
ThresholdedRelu ai.onnx(10+)
Tile ai.onnx(6-12,13+)
Transpose ai.onnx(1-12,13+) need perf optimization
Unsqueeze ai.onnx(1-10,11-12,13+)