| { |
| "fixtureArrays": { |
| "ort_l1_axis1_rank3_input_input": [5.93932154, 7.4367043, 6.42487038, 5.90394865, 4.81289319, 6.81304702, 4.9382849, 9.02595701, 9.67296484, 4.45097367, 8.12552534, 5.76005428, 6.11240105, 9.33036974, 1.63932452, 1.7841637, 1.18196558, 8.49357861, 8.00341076, 8.83010933, 9.80756508, 8.19242708, 5.15331426, 8.02476259] |
| }, |
| "cases": [ |
| { |
| "name": "p2_last_axis_f32", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [3.0, 4.0, 0.0, 1.0, 2.0, 2.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 3] } }, |
| "tolerance": 0.000001 |
| }, |
| { |
| "name": "p1_axis0_f32", |
| "attrs": { "axis": 0, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [1.0, -2.0, 3.0, 4.0, 5.0, -6.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 3] } }, |
| "tolerance": 0.000001 |
| }, |
| { |
| "name": "p1_tiny_nonzero_norm_not_clamped", |
| "attrs": { "axis": 1, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [1e-20, 0.0, -1e-20, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "p2_tiny_square_subnormal_norm_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 in f32; bit-exact subnormal preservation is unattainable on GPU." |
| }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2NormalizationWithZeroNorm", |
| "notes": "The inputs are nonzero and normal, but their squares are subnormal; the L2 norm must not be treated as zero." |
| }, |
| "attrs": { "axis": 1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [1e-20, 1e-20, -1e-20, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "p2_tiny_square_subnormal_norm_axis0_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 in f32; bit-exact subnormal preservation is unattainable on GPU." |
| }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2NormalizationWithZeroNorm", |
| "notes": "Along axis 0, normal inputs whose squared L2 sums are finite subnormals must still produce nonzero normalized values." |
| }, |
| "attrs": { "axis": 0, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [1e-20, -1e-20, 1e-20, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "p2_tiny_square_subnormal_norm_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 in f32; bit-exact subnormal preservation is unattainable on GPU." |
| }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2NormalizationWithZeroNorm", |
| "notes": "On the vec4 last-axis path, a tiny nonzero L2 norm must preserve the vector's direction." |
| }, |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [1, 4], |
| "data": { "kind": "values", "values": [1e-20, 1e-20, 0.0, -1e-20] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [1, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "p1_subnormal_norm_ratio_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 in f32; bit-exact subnormal preservation is unattainable on GPU." |
| }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1NormalizationWithZeroNorm", |
| "notes": "Finite subnormal inputs can still form a nonzero L1 norm; normalization should return ratios, not the zero-norm branch." |
| }, |
| "attrs": { "axis": 1, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [1e-40, 1e-40, -1e-40, 0.0] } |
| } |
| }, |
| "outputs": { |
| "output": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [0.5, 0.5, -1.0, 0.0] } |
| } |
| } |
| }, |
| { |
| "name": "p1_subnormal_norm_ratio_axis0_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 in f32; bit-exact subnormal preservation is unattainable on GPU." |
| }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1NormalizationWithZeroNorm", |
| "notes": "Along axis 0, the strided two-pass p=1 path must not collapse finite subnormal L1 norms to zero." |
| }, |
| "attrs": { "axis": 0, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "data": { "kind": "values", "values": [1e-40, -1e-40, 1e-40, 0.0] } |
| } |
| }, |
| "outputs": { |
| "output": { |
| "dtype": "float32", |
| "shape": [2, 2], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [0.5, -1.0, 0.5, 0.0] } |
| } |
| } |
| }, |
| { |
| "name": "p1_subnormal_norm_ratio_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 in f32; bit-exact subnormal preservation is unattainable on GPU." |
| }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1NormalizationWithZeroNorm", |
| "notes": "On the vec4 last-axis path, finite subnormal L1 totals must produce stable signed ratios." |
| }, |
| "attrs": { "axis": -1, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [1, 4], |
| "data": { "kind": "values", "values": [1e-40, 1e-40, -1e-40, 0.0] } |
| } |
| }, |
| "outputs": { |
| "output": { |
| "dtype": "float32", |
| "shape": [1, 4], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.0] } |
| } |
| } |
| }, |
| { |
| "name": "p2_f16", |
| "attrs": { "axis": 1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [2, 3], |
| "data": { "kind": "values", "values": [3.0, 4.0, 0.0, 1.0, 2.0, 2.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float16", "shape": [2, 3] } }, |
| "tolerance": 0.002 |
| }, |
| { |
| "name": "ort_f16_p2_last_axis_large_values_float_accumulation", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2Normalization_FP16", |
| "notes": "Large float16 values require float32 accumulation for the p=2 norm." |
| }, |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { "input": { "dtype": "float16", "shape": [2, 128], "data": { "kind": "constant", "value": 100.0 } } }, |
| "outputs": { "output": { "dtype": "float16", "shape": [2, 128] } }, |
| "tolerance": 0.002 |
| }, |
| { |
| "name": "ort_f16_p1_last_axis_large_values_float_accumulation", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1Normalization_FP16", |
| "notes": "Large float16 values require float32 accumulation for the p=1 norm." |
| }, |
| "attrs": { "axis": -1, "p": 1 }, |
| "inputs": { "input": { "dtype": "float16", "shape": [2, 128], "data": { "kind": "constant", "value": 200.0 } } }, |
| "outputs": { "output": { "dtype": "float16", "shape": [2, 128], "tolerance": 0.00002, "relTolerance": 0.002 } } |
| }, |
| { |
| "name": "f16_p1_last_axis_constant200_norm_scale_lock", |
| "provenance": { |
| "notes": "Each 128-element row contains 200, so its L1 norm is 25,600 and every normalized value is exactly 2^-7 in float16. A 1e-6 tolerance makes an incorrect divisor observable." |
| }, |
| "attrs": { "axis": -1, "p": 1 }, |
| "inputs": { "input": { "dtype": "float16", "shape": [2, 128], "data": { "kind": "constant", "value": 200.0 } } }, |
| "outputs": { "output": { "dtype": "float16", "shape": [2, 128], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l1_axis1_rank3", |
| "attrs": { "axis": 1, "p": 1 }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1Normalization" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3, 4], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_l1_axis1_rank3_input_input" } } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 3, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l2_axis1_rank3", |
| "attrs": { "axis": 1, "p": 2 }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2Normalization" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3, 4], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_l1_axis1_rank3_input_input" } } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 3, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_default_axis_p2_rank1", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.LpNormalizationDefaultAxisAndP" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [16], |
| "data": { |
| "kind": "values", |
| "values": [0.0, 0.5, 2.0, 2.0, 1.0, 0.5, 2.0, 2.5, 1.0, 1.5, 3.0, 3.0, 1.5, 2.0, 3.5, 3.5] |
| } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [16], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l1_default_axis_zero_norm", |
| "attrs": { "p": 1 }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1NormalizationWithZeroNorm" |
| }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 2], "data": { "kind": "values", "values": [2.0, 2.0, 0.0, 0.0] } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l2_default_axis_zero_norm", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2NormalizationWithZeroNorm" |
| }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 2], "data": { "kind": "values", "values": [1.0, 0.0, 0.0, 0.0] } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l1_valid_negative_axis_rank3", |
| "attrs": { "axis": -2, "p": 1 }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L1NormalizationWithValidNegativeAxis" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 3, 4], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_l1_axis1_rank3_input_input" } } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 3, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l2_last_axis_rank2", |
| "attrs": { "axis": -1, "p": 2 }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2Normalization_LastAxis" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [3.0, 4.0, 0.0, 0.0, 1.0, 2.0, 2.0, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_l2_axis0_rank2", |
| "attrs": { "axis": 0, "p": 2 }, |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/lp_norm_op_test.cc", |
| "test": "LpNormalizationTest.L2Normalization_Axis0" |
| }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 2], "data": { "kind": "values", "values": [3.0, 1.0, 4.0, 2.0] } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "onnx_backend_l1normalization_axis_0", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_l1normalization_axis_0", |
| "test": "test_l1normalization_axis_0" |
| }, |
| "attrs": { "axis": 0, "p": 1 }, |
| "inputs": { "input": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [3.0, 4.0] } } }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "onnx_backend_l1normalization_axis_1", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_l1normalization_axis_1", |
| "test": "test_l1normalization_axis_1" |
| }, |
| "attrs": { "axis": 1, "p": 1 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 2], "data": { "kind": "values", "values": [3.0, 4.0, 6.0, 8.0] } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "onnx_backend_l1normalization_axis_last", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_l1normalization_axis_last", |
| "test": "test_l1normalization_axis_last" |
| }, |
| "attrs": { "axis": -1, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 2.0, 3.0, 4.0, 0.0, 0.0, 5.0, 5.0, 6.0, 8.0, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "onnx_backend_l2normalization_axis_0", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_l2normalization_axis_0", |
| "test": "test_l2normalization_axis_0" |
| }, |
| "attrs": { "axis": 0, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 2.0, 3.0, 4.0, 0.0, 0.0, 5.0, 5.0, 6.0, 8.0, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "onnx_backend_l2normalization_axis_1", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_l2normalization_axis_1", |
| "test": "test_l2normalization_axis_1" |
| }, |
| "attrs": { "axis": 1, "p": 2 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [2, 2], "data": { "kind": "values", "values": [3.0, 4.0, 6.0, 8.0] } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "onnx_backend_lpnormalization_default", |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_lpnormalization_default", |
| "test": "test_lpnormalization_default" |
| }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 2.0, 3.0, 4.0, 0.0, 0.0, 5.0, 5.0, 6.0, 8.0, 0.0] } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 2, 3], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "empty_input_zero_dim", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { "input": { "dtype": "float32", "shape": [0, 3], "data": { "kind": "values", "values": [] } } }, |
| "outputs": { "output": { "dtype": "float32", "shape": [0, 3], "tolerance": 0 } } |
| }, |
| { |
| "name": "p2_axis0_large_strided_splitk", |
| "attrs": { "axis": 0, "p": 2 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [512, 256], "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [512, 256] } }, |
| "tolerance": 0.0001 |
| }, |
| { |
| "name": "p1_axis0_large_strided_splitk", |
| "attrs": { "axis": 0, "p": 1 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [512, 256], "data": { "kind": "linspace", "start": -2.0, "end": 3.0 } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [512, 256] } }, |
| "tolerance": 0.0001 |
| }, |
| { |
| "name": "f16_p2_axis0_splitk_decode", |
| "provenance": { |
| "notes": "Shape [512,256] uses a split reduction along axis 0 for the p=2 norm. Float16-resolution tolerances expose an omitted final square root or a reciprocal square root applied separately to partial sums." |
| }, |
| "attrs": { "axis": 0, "p": 2 }, |
| "inputs": { |
| "input": { "dtype": "float16", "shape": [512, 256], "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } } |
| }, |
| "outputs": { "output": { "dtype": "float16", "shape": [512, 256], "tolerance": 0.0002, "relTolerance": 0.002 } } |
| }, |
| { |
| "name": "f16_p1_rank3_axis0_splitk_scalardiv", |
| "provenance": { |
| "notes": "Shape [512,86,3] uses a split L1 reduction along axis 0 followed by scalar division. The normalized outputs peak near 4.5e-3, so float16-resolution tolerances make partial-sum, combine, and divisor errors observable." |
| }, |
| "attrs": { "axis": 0, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [512, 86, 3], |
| "data": { "kind": "linspace", "start": -2.0, "end": 3.0 } |
| } |
| }, |
| "outputs": { |
| "output": { "dtype": "float16", "shape": [512, 86, 3], "tolerance": 0.00002, "relTolerance": 0.002 } |
| } |
| }, |
| { |
| "name": "f16_p2_last_axis_hidden2048", |
| "provenance": { |
| "notes": "A 2,048-wide row exercises vec4 last-axis normalization with tolerance scaled to the approximately 0.0383 output magnitude, making uniform norm-scale errors observable." |
| }, |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { "dtype": "float16", "shape": [256, 2048], "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } } |
| }, |
| "outputs": { "output": { "dtype": "float16", "shape": [256, 2048], "tolerance": 0.0001, "relTolerance": 0.002 } } |
| }, |
| { |
| "name": "f32_p1_rank4_axis1_fallback", |
| "attrs": { "axis": 1, "p": 1 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 4, 8, 16], |
| "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 4, 8, 16], "tolerance": 0.0001 } } |
| }, |
| { |
| "name": "f16_p2_rank3_axis1_splitk", |
| "attrs": { "axis": 1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [8, 1024, 768], |
| "data": { "kind": "linspace", "start": -0.5, "end": 0.5 } |
| } |
| }, |
| "outputs": { |
| "output": { "dtype": "float16", "shape": [8, 1024, 768], "tolerance": 0.0001, "relTolerance": 0.002 } |
| }, |
| "provenance": { |
| "notes": "A rank-3 p=2 norm over 1,024 elements of axis 1 runs split partials and a combine. Float16-resolution tolerances scaled to the roughly 0.05 outputs expose an omitted square root or a rescaled divisor." |
| } |
| }, |
| { |
| "name": "f16_vec4_last_axis_zero_norm_guard", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float16", |
| "shape": [2, 4], |
| "data": { "kind": "values", "values": [0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 4.0, 0.0] } |
| } |
| }, |
| "outputs": { |
| "output": { |
| "dtype": "float16", |
| "shape": [2, 4], |
| "tolerance": 0.002, |
| "data": { "kind": "values", "values": [0.0, 0.0, 0.0, 0.0, 0.6, 0.0, 0.8, 0.0] } |
| } |
| } |
| }, |
| { |
| "name": "splitk_vec4_divide_indexing_rowNorms", |
| "attrs": { "axis": 0, "p": 2 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [512, 512], "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [512, 512], "tolerance": 0.0001 } } |
| }, |
| { |
| "name": "empty_last_dim_zero_norm_dim", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { "input": { "dtype": "float32", "shape": [2, 0], "data": { "kind": "values", "values": [] } } }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 0], "tolerance": 0 } } |
| }, |
| { |
| "name": "empty_nonlast_axis_splitk_path", |
| "attrs": { "axis": 1, "p": 2 }, |
| "inputs": { "input": { "dtype": "float32", "shape": [0, 3, 4], "data": { "kind": "values", "values": [] } } }, |
| "outputs": { "output": { "dtype": "float32", "shape": [0, 3, 4], "tolerance": 0 } } |
| }, |
| { |
| "name": "last_axis_2d_dispatch_fold_boundary_row", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { "dtype": "float32", "shape": [65537, 4], "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [65537, 4], "tolerance": 0.0001 } } |
| }, |
| { |
| "name": "rank7_last_axis", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 1, 2, 1, 2, 1, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.31, "scale": 2.0 } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 1, 2, 1, 2, 1, 3], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "rank8_last_axis", |
| "attrs": { "axis": -1, "p": 2 }, |
| "inputs": { |
| "input": { |
| "dtype": "float32", |
| "shape": [2, 1, 2, 1, 2, 1, 2, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.21 } |
| } |
| }, |
| "outputs": { "output": { "dtype": "float32", "shape": [2, 1, 2, 1, 2, 1, 2, 3], "tolerance": 0.000001 } } |
| } |
| ] |
| } |
|
|