library_name: kernels
license: apache-2.0
tags:
- kernel
- webgpu
- wgsl
com.microsoft.BiasSplitGelu
com.microsoft · ONNX Runtime contrib operator · contrib since_version 1
Description
Adds bias to X, splits the last dimension in half, then multiplies the left half elementwise by the GELU activation of the right half, producing an output with half the hidden dimension. Used as a fused activation in diffusion models.
See the ONNX Runtime BiasSplitGelu contrib-operator spec for the reference semantics.
Inputs
| Name | Bind key | Logical dtype | Rank | Shape | Description | Presence |
|---|---|---|---|---|---|---|
X |
X |
T |
3 |
— | Input tensor of shape (N, S, D), where N is the batch size, S is the spatial size, and D is the hidden dimension. |
required |
bias |
bias |
T |
1 |
— | 1-D bias tensor of length D, matching the hidden dimension of X. | required |
Outputs
| Name | Bind key | Logical dtype | Rank | Shape | Description | Presence |
|---|---|---|---|---|---|---|
Y |
Y |
T |
3 |
derived; see description | Output tensor of shape (N, S, D/2) after the split-GELU activation. |
required |
Type constraints
| Variable | Allowed dtypes |
|---|---|
T |
float32, float16 |
Files
metadata.json— kernel metadata (id, digests, provenance)manifest.json— the op contract (source of truth)test.json— correctness casesbench.json— benchmark + tuning casesbias-split-gelu.wgsl.jinja
Use with @huggingface/kernels
The loader derives every required output's shape and logical dtype from the manifest contract and this call. It then allocates the result tensors automatically.
The version: 1 option selects the published kernel contract; it is independent of any operator opset, contrib since_version, or model version.
Replace each *Data placeholder with a typed array containing the corresponding input data.
import { getKernel } from "@huggingface/kernels";
const kernel = await getKernel("webgpu-kernels/com.microsoft.BiasSplitGelu", { version: 1 });
const { Y } = await kernel({
X: { data: XData, shape: [1, 2, 4] },
bias: { data: biasData, shape: [4] },
});