Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
9ca4c42 verified
Raw
History Blame
7.14 kB
{
"op": "com.microsoft.Gelu",
"cases": [
{
"name": "dispatch_cliff_scalar_f32",
"inputs": {
"X": { "dtype": "float32", "shape": [16776961], "data": { "kind": "linspace", "start": -2.0, "end": 2.0 } }
},
"outputs": { "Y": { "dtype": "float32", "shape": [16776961], "tolerance": 0.0001 } }
},
{
"name": "ort_float32_erf_extreme_edges",
"provenance": {
"source": "onnxruntime/test/contrib_ops/activation_op_test.cc",
"test": "ActivationOpTest.Gelu",
"notes": "Exact erf-form GELU with large finite values that should saturate to zero/pass-through without overflowing."
},
"inputs": {
"X": {
"dtype": "float32",
"shape": [1, 1, 9],
"data": { "kind": "values", "values": [-1000.0, -100.0, -10.0, -1.0, 0.0, 1.0, 10.0, 100.0, 1000.0] }
}
},
"outputs": {
"Y": {
"dtype": "float32",
"shape": [1, 1, 9],
"tolerance": 0.000001,
"data": {
"kind": "values",
"values": [0.0, 0.0, 0.0, -0.15865525603294373, 0.0, 0.8413447141647339, 10.0, 100.0, 1000.0]
}
}
}
},
{
"name": "ort_float32_nonfinite_edges",
"provenance": {
"source": "onnxruntime/test/contrib_ops/activation_op_test.cc",
"test": "ActivationOpTest.Gelu_bfloat16",
"notes": "Float32 counterpart of ORT's nonfinite activation coverage; -Infinity produces NaN under the exact erf expression."
},
"inputs": {
"X": {
"dtype": "float32",
"shape": [5],
"data": { "kind": "values", "values": ["-Infinity", "Infinity", "NaN", 0.0, 0.0] }
}
},
"outputs": {
"Y": {
"dtype": "float32",
"shape": [5],
"allowNaN": true,
"data": { "kind": "values", "values": ["NaN", "Infinity", "NaN", 0.0, 0.0] }
}
}
},
{
"name": "ort_float32_empty_rank3",
"provenance": {
"source": "onnxruntime/test/contrib_ops/activation_op_test.cc",
"notes": "Empty tensors should preserve shape and produce no values."
},
"inputs": { "X": { "dtype": "float32", "shape": [1, 0, 4], "data": { "kind": "values", "values": [] } } },
"outputs": { "Y": { "dtype": "float32", "shape": [1, 0, 4], "data": { "kind": "values", "values": [] } } }
},
{
"name": "f32_subnormal_linear_region_vec4_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: WebGPU/Metal flushes subnormals to zero (f32 and f16); the kernel cannot preserve denormal inputs/outputs bit-exactly."
},
"provenance": {
"source": "onnxruntime/test/contrib_ops/activation_op_test.cc",
"test": "ActivationOpTest.Gelu",
"notes": "Near zero, exact erf-form GELU is approximately x/2; the com.microsoft path should preserve finite subnormal outputs."
},
"inputs": {
"X": {
"dtype": "float32",
"shape": [4],
"data": { "kind": "values", "values": [1e-40, -1e-40, 1e-38, -1e-38] }
}
},
"outputs": {
"Y": {
"dtype": "float32",
"shape": [4],
"tolerance": 2e-45,
"data": {
"kind": "values",
"values": [4.99997305055738e-41, -4.99997305055738e-41, 4.999999675228202e-39, -4.999999675228202e-39]
}
}
}
},
{
"name": "f32_subnormal_linear_region_scalar_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: WebGPU/Metal flushes subnormals to zero (f32 and f16); the kernel cannot preserve denormal inputs/outputs bit-exactly."
},
"provenance": {
"source": "onnxruntime/test/contrib_ops/activation_op_test.cc",
"test": "ActivationOpTest.Gelu",
"notes": "Scalar-path companion for com.microsoft.Gelu subnormal linear-region behavior."
},
"inputs": {
"X": { "dtype": "float32", "shape": [3], "data": { "kind": "values", "values": [1e-40, -1e-40, 1e-38] } }
},
"outputs": {
"Y": {
"dtype": "float32",
"shape": [3],
"tolerance": 2e-45,
"data": { "kind": "values", "values": [4.99997305055738e-41, -4.99997305055738e-41, 4.999999675228202e-39] }
}
}
},
{
"name": "rank0_negative_scalar",
"provenance": {
"source": "onnxruntime/test/contrib_ops/activation_op_test.cc",
"test": "ActivationOpTest.Gelu",
"notes": "Additional edge: scalar tensors use the same exact erf-form GELU path."
},
"inputs": { "X": { "dtype": "float32", "shape": [], "data": { "kind": "values", "values": [-0.5] } } },
"outputs": {
"Y": {
"dtype": "float32",
"shape": [],
"tolerance": 0.000001,
"data": { "kind": "values", "values": [-0.15426877] }
}
}
},
{
"name": "vec4_f32_4x8",
"inputs": {
"X": {
"dtype": "float32",
"shape": [4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 2.0 }
}
},
"outputs": { "Y": { "dtype": "float32", "shape": [4, 8], "tolerance": 0.00001 } }
},
{
"name": "vec4_f16_4x8",
"inputs": {
"X": {
"dtype": "float16",
"shape": [4, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.29, "scale": 2.0 }
}
},
"outputs": { "Y": { "dtype": "float16", "shape": [4, 8], "tolerance": 0.01 } }
},
{
"name": "scalar_numel_not_div4_inline",
"inputs": {
"X": {
"dtype": "float32",
"shape": [6],
"data": { "kind": "values", "values": [1.5, -1.5, 0.7, -0.7, 0.3, -0.3] }
}
},
"outputs": {
"Y": {
"dtype": "float32",
"shape": [6],
"tolerance": 0.000001,
"data": {
"kind": "values",
"values": [1.39978915, -0.10021085, 0.53062549, -0.16937451, 0.18537341, -0.11462659]
}
}
}
},
{
"name": "vec4_odd_last_dim_still_routes_vec4",
"inputs": {
"X": {
"dtype": "float32",
"shape": [6, 2],
"data": { "kind": "values", "values": [-1.0, 0.5, 1.0, -0.5, 2.0, -2.0, 0.0, 1.5, -1.5, 0.25, -0.25, 0.75] }
}
},
"outputs": {
"Y": {
"dtype": "float32",
"shape": [6, 2],
"tolerance": 0.000001,
"data": {
"kind": "values",
"values": [-0.15865527, 0.34573123, 0.84134471, -0.15426877, 1.95449984, -0.04550013, 0.0, 1.39978909, -0.10021085, 0.14967656, -0.10032343, 0.58002955]
}
}
}
}
]
}