ai.onnx.DFT / build /webgpu /test.json
Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
34eff6e verified
Raw
History Blame
57 kB
{
"op": "ai.onnx.DFT",
"fixtureArrays": {
"ort_rank2_complex_axis0_output_output": [36, 0, -4, 9.65685, -4, 4, -4, 1.65685, -4, 0, -4, -1.65685, -4, -4, -4, -9.65685]
},
"cases": [
{
"name": "dispatch_cliff_batch_axis1_over_8m_elements",
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": { "input": { "dtype": "float32", "shape": [2099200, 4, 1] } },
"outputs": { "output": { "dtype": "float32", "shape": [2099200, 4, 2], "tolerance": 0.001 } }
},
{
"name": "dispatch_cliff_rank4_axis1_over_8m_elements",
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": { "dtype": "float32", "shape": [1050000, 4, 2, 1] },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [1050000, 4, 2, 2], "tolerance": 0.001 } }
},
{
"name": "dispatch_cliff_rank4_axis2_over_8m_elements",
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": { "input": { "dtype": "float32", "shape": [1050000, 2, 4, 1] } },
"outputs": { "output": { "dtype": "float32", "shape": [1050000, 2, 4, 2], "tolerance": 0.001 } }
},
{
"name": "real_full_default_axis",
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 0.0, -1.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0.00001 } }
},
{
"name": "default_axis_minus2_rank2",
"provenance": {
"source": "ONNX DFT-20 schema",
"notes": "Omitting the optional axis input must use -2. For rank 2 that normalizes to axis 0, the only signal axis."
},
"inputs": {
"input": { "dtype": "float32", "shape": [4, 1], "data": { "kind": "values", "values": [1.0, 0.0, 0.0, 0.0] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [4, 2],
"tolerance": 0.00001,
"data": { "kind": "values", "values": [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0] }
}
}
},
{
"name": "default_axis_minus2_rank4",
"provenance": {
"source": "ONNX DFT-20 schema",
"notes": "Omitting the optional axis input must use -2. For rank 4 that is axis 2, independently transforming each [batch, inner] signal."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 2, 4, 1],
"data": { "kind": "values", "values": [1.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0] }
}
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 2, 4, 2],
"tolerance": 0.00001,
"data": {
"kind": "values",
"values": [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 2.0, 0.0, 2.0, 0.0]
}
}
}
},
{
"name": "real_subnormal_impulse_preserves_all_bins_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: Metal FTZ: subnormal 1e-40 input flushes to zero on GPU, every output bin reads 0 instead of the subnormal value (tolerance 0)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2",
"notes": "Focused amplitude edge: a real impulse of 1e-40 has a DFT with every real frequency bin equal to that subnormal value."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 1],
"data": { "kind": "values", "values": [1e-40, 0.0, 0.0, 0.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0 } }
},
{
"name": "complex_subnormal_impulse_preserves_all_bins_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: Metal FTZ: subnormal 1e-40 input flushes to zero on GPU, every output bin reads 0 instead of the subnormal value (tolerance 0)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2",
"notes": "Complex companion to the real impulse edge: a subnormal complex impulse at sample zero should appear unchanged in every frequency bin."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 2],
"data": { "kind": "values", "values": [1e-40, -1e-40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0 } }
},
{
"name": "complex_inverse_subnormal_dc_preserves_time_signal_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: Metal FTZ: subnormal 1e-40 input flushes to zero on GPU, every output bin reads 0 instead of the subnormal value (tolerance 0)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_inverse",
"notes": "Inverse companion: a subnormal DC bin scaled by 1/N should produce a valid finite subnormal constant signal."
},
"attrs": { "inverse": 1, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 2],
"data": { "kind": "values", "values": [4e-40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0 } }
},
{
"name": "rank2_axis0_subnormal_impulse_preserves_all_bins_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: Metal FTZ: subnormal 1e-40 input flushes to zero on GPU, every output bin reads 0 instead of the subnormal value (tolerance 0)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2",
"notes": "Rank-2 axis-0 FFT companion: a real subnormal impulse should preserve the same subnormal real value in every bin."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": { "dtype": "float32", "shape": [4, 1], "data": { "kind": "values", "values": [1e-40, 0.0, 0.0, 0.0] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [4, 2], "tolerance": 0 } }
},
{
"name": "rank4_axis1_subnormal_impulse_preserves_all_bins_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: Metal FTZ: subnormal 1e-40 input flushes to zero on GPU, every output bin reads 0 instead of the subnormal value (tolerance 0)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2",
"notes": "Rank-4 axis-1 FFT companion: the subnormal impulse is along the first signal axis with one inner position."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 4, 1, 1],
"data": { "kind": "values", "values": [1e-40, 0.0, 0.0, 0.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 1, 2], "tolerance": 0 } }
},
{
"name": "rank4_axis2_subnormal_impulse_preserves_all_bins_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: Metal FTZ: subnormal 1e-40 input flushes to zero on GPU, every output bin reads 0 instead of the subnormal value (tolerance 0)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2",
"notes": "Rank-4 axis-2 FFT companion: the subnormal impulse is along the second signal axis with one outer channel."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 1, 4, 1],
"data": { "kind": "values", "values": [1e-40, 0.0, 0.0, 0.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 1, 4, 2], "tolerance": 0 } }
},
{
"name": "negative_axis_minus2_rank3",
"provenance": {
"source": "https://github.com/onnx/onnx/blob/main/docs/Operators.md#DFT",
"notes": "DFT axis accepts negative values in [-r, -2]; for rank 3, axis=-2 is the last signal axis and matches axis=1."
},
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 0.0, -1.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0.00001 } }
},
{
"name": "ort_axis_input_overrides_default_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_invertible_real",
"notes": "Opset-20 axis is an input tensor. This same-shape axis=0 case is a regression lock ensuring the runtime axis overrides the default axis attribute."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [4, 3, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.09, "cosStep": 0.21, "scale": 4.0 }
},
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [0] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [4, 3, 2], "tolerance": 0.0001 } }
},
{
"name": "ort_axis_input_overrides_default_rank4_axis2",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_invertible_real",
"notes": "Rank-4 projection of the opset-20 axis-input path. The output shape also matches the default axis, so this locks correct runtime-axis decoding rather than allowing a silent axis-1 transform."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 4, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.17, "scale": 3.0 }
},
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [2] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 4, 2], "tolerance": 0.0001 } }
},
{
"name": "real_onesided_even",
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 0.0, -1.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 3, 2], "tolerance": 0.00001 } }
},
{
"name": "complex_inverse",
"attrs": { "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 2],
"data": { "kind": "values", "values": [2.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 1.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0.00001 } }
},
{
"name": "real_onesided_odd_length",
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 5, 1],
"data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 3, 2], "tolerance": 0.00001 } }
},
{
"name": "real_full_batch2",
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 4, 1],
"data": { "kind": "values", "values": [1.0, 0.0, -1.0, 0.0, 0.0, 2.0, 0.0, -2.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 4, 2], "tolerance": 0.00001 } }
},
{
"name": "complex_inverse_length3",
"attrs": { "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 3, 2],
"data": { "kind": "values", "values": [6.0, 0.0, -3.0, 1.7320508, -3.0, -1.7320508] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 3, 2], "tolerance": 0.00001 } }
},
{
"name": "real_radix2_onesided_length8_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2_onesided"
},
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 8, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 5, 2], "tolerance": 0.00002 } }
},
{
"name": "fft_batch_axis1_len256_batch4_real_onesided_perf_compact",
"provenance": {
"notes": "Compact correctness sibling for the batch-axis onesided FFT benchmark; preserves real input, axis=1, power-of-two length, and onesided output without benchmark-scale tensors."
},
"attrs": { "onesided": 1 },
"inputs": { "input": { "dtype": "float32", "shape": [4, 256, 1] } },
"outputs": { "output": { "dtype": "float32", "shape": [4, 129, 2], "tolerance": 0.0002 } }
},
{
"name": "complex_full_batch2_length3",
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 3, 2],
"data": { "kind": "values", "values": [1.0, 0.0, 0.0, 1.0, -1.0, 0.0, 2.0, 0.0, 0.0, -1.0, 1.0, 1.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 3, 2], "tolerance": 0.00001 } }
},
{
"name": "real_naive_length5_full_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_naive"
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 5, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 5, 2], "tolerance": 0.00002 } }
},
{
"name": "real_radix2_length8_full_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_radix2"
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 8, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 8, 2], "tolerance": 0.00004 } }
},
{
"name": "real_naive_length5_onesided_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_naive_onesided"
},
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 5, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 3, 2], "tolerance": 0.00002 } }
},
{
"name": "ort_dft_length_truncates_forward",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_Float_naive",
"notes": "Valid opset-20 dft_length input that truncates the transform length below the input extent."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 5, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [3] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 3, 2],
"tolerance": 0.00002,
"data": { "kind": "values", "values": [6.0, 0.0, -1.5, 0.866025, -1.5, -0.866025] }
}
}
},
{
"name": "ort_dft_length_zero_pads_forward",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_Float_naive",
"notes": "Valid opset-20 dft_length input that zero-pads the transform length beyond the input extent."
},
"inputs": {
"input": { "dtype": "float32", "shape": [1, 3, 1], "data": { "kind": "values", "values": [1.0, 2.0, 3.0] } },
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [5] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 5, 2],
"tolerance": 0.00002,
"data": {
"kind": "values",
"values": [6.0, 0.0, -0.809017, -3.665469, 0.309017, 1.677599, 0.309017, -1.677599, -0.809017, 3.665469]
}
}
}
},
{
"name": "complex_inverse_length5_ort",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT17_Float_inverse"
},
"attrs": { "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 5, 2],
"data": {
"kind": "values",
"values": [15.0, 0.0, -2.499999, 3.440955, -2.5, 0.8123, -2.499999, -0.812299, -2.500003, -3.440953]
}
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 5, 2], "tolerance": 0.0001 } }
},
{
"name": "ort_irfft_radix2_even_length",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_IRFFT_radix2"
},
"attrs": { "onesided": 1, "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 5, 2],
"data": { "kind": "values", "values": [36.0, 0.0, -4.0, 9.65685, -4.0, 4.0, -4.0, 1.65685, -4.0, 0.0] }
}
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 8, 1],
"tolerance": 0.0001,
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
}
},
{
"name": "ort_irfft_radix2_rank3_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_IRFFT_radix2",
"notes": "Axis-0 rank-3 projection of ORT's even-length IRFFT case."
},
"attrs": { "onesided": 1, "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [5, 1, 2],
"data": { "kind": "values", "values": [36.0, 0.0, -4.0, 9.65685, -4.0, 4.0, -4.0, 1.65685, -4.0, 0.0] }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [8] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [0] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [8, 1, 1],
"tolerance": 0.0001,
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
}
},
{
"name": "ort_irfft_naive_odd_length",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_IRFFT_naive",
"notes": "Odd-length IRFFT needs explicit dft_length to disambiguate from the even default."
},
"attrs": { "onesided": 1, "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 3, 2],
"data": { "kind": "values", "values": [15.0, 0.0, -2.499999, 3.440955, -2.5, 0.8123] }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [5] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 5, 1],
"tolerance": 0.0001,
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] }
}
}
},
{
"name": "ort_invertible_real_rank4_axis1_projection",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_invertible_real",
"notes": "Single forward DFT projection from ORT's rank-4 real invertibility sweep."
},
"attrs": {},
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [2, 3, 2, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.19, "scale": 8.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 3, 2, 2], "tolerance": 0.0001 } }
},
{
"name": "ort_invertible_complex_rank4_axis2_projection",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_invertible_complex",
"notes": "Single forward DFT projection from ORT's rank-4 complex invertibility sweep."
},
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 2, 4, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23, "scale": 5.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 2, 4, 2], "tolerance": 0.0001 } }
},
{
"name": "ort_invertible_complex_rank4_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_invertible_complex",
"notes": "Single forward DFT projection from ORT's rank-4 complex invertibility sweep."
},
"attrs": {},
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [0] } },
"input": {
"dtype": "float32",
"shape": [4, 2, 3, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.17, "scale": 3.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [4, 2, 3, 2], "tolerance": 0.0001 } }
},
{
"name": "ort_invertible_real_rank3_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_invertible_real",
"notes": "Single forward DFT projection from ORT's axis-0 invertibility sweep."
},
"attrs": {},
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [0] } },
"input": {
"dtype": "float32",
"shape": [4, 3, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.09, "cosStep": 0.21, "scale": 4.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [4, 3, 2], "tolerance": 0.0001 } }
},
{
"name": "ort_rank2_complex_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_2D_complex"
},
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [8, 2],
"data": {
"kind": "values",
"values": [1.0, 0.0, 2.0, 0.0, 3.0, 0.0, 4.0, 0.0, 5.0, 0.0, 6.0, 0.0, 7.0, 0.0, 8.0, 0.0]
}
}
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [8, 2],
"tolerance": 0.0001,
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_rank2_complex_axis0_output_output" } }
}
}
},
{
"name": "ort_rank2_real_onesided_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_2D_real"
},
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [8, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [5, 2],
"tolerance": 0.0001,
"data": { "kind": "values", "values": [36.0, 0.0, -4.0, 9.65685, -4.0, 4.0, -4.0, 1.65685, -4.0, 0.0] }
}
}
},
{
"name": "ort_rank2_real_full_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_2D_real"
},
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [8, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [8] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [0] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [8, 2],
"tolerance": 0.0001,
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_rank2_complex_axis0_output_output" } }
}
}
},
{
"name": "ort_rank2_irfft_even_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_2D_complex_onesided_inverse"
},
"attrs": { "onesided": 1, "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [5, 2],
"data": { "kind": "values", "values": [36.0, 0.0, -4.0, 9.65685, -4.0, 4.0, -4.0, 1.65685, -4.0, 0.0] }
}
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [8, 1],
"tolerance": 0.0001,
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
}
},
{
"name": "ort_rank2_irfft_odd_axis0",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_IRFFT_naive",
"notes": "Rank-2 axis-0 projection of ORT's odd-length IRFFT case; explicit output length disambiguates odd from even."
},
"attrs": { "onesided": 1, "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [3, 2],
"data": { "kind": "values", "values": [15.0, 0.0, -2.499999, 3.440955, -2.5, 0.8123] }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [5] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [0] } }
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [5, 1],
"tolerance": 0.0001,
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0] }
}
}
},
{
"name": "onnx_backend_dft_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": {},
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.019, "cosStep": 0.031, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_axis2_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_axis",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.019, "cosStep": 0.031, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_inverse_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_inverse",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": { "inverse": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.029, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_irfft_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_irfft",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": { "inverse": 1, "onesided": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 6, 10, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.037, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 1], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_rfft_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_rfft",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": { "onesided": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.021, "cosStep": 0.034, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 6, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_opset19_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_opset19",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": {},
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.026, "cosStep": 0.041, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_axis_opset19_axis2_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_axis_opset19",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.026, "cosStep": 0.041, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_inverse_opset19_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_inverse_opset19",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": { "inverse": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.027, "cosStep": 0.039, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_irfft_opset19_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_irfft_opset19",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": { "inverse": 1, "onesided": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 6, 10, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.025, "cosStep": 0.043, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 10, 10, 1], "tolerance": 0.0001 } }
},
{
"name": "onnx_backend_dft_rfft_opset19_axis1_rank4",
"provenance": {
"source": "cmake/external/onnx/onnx/backend/test/data/node/test_dft_rfft_opset19",
"notes": "Uses the official shape and attributes with deterministic generated data to avoid committing the large random tensor literal."
},
"attrs": { "onesided": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 10, 10, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.029, "cosStep": 0.046, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 6, 10, 2], "tolerance": 0.0001 } }
},
{
"name": "fft_rank2_axis0_real_onesided_len256",
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [256, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.021, "cosStep": 0.031, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [129, 2], "tolerance": 0.001, "relTolerance": 0.0001 } }
},
{
"name": "fft_rank2_axis0_complex_full_len512",
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [512, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.029, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [512, 2], "tolerance": 0.02, "relTolerance": 0.0001 } }
},
{
"name": "fft_batch_axis1_real_full_len1024_batch2",
"attrs": {},
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 1024, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.041, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 1024, 2], "tolerance": 0.1, "relTolerance": 0.0001 } }
},
{
"name": "tiled_real_nonpow2_len513_full",
"provenance": {
"notes": "Compact correctness lock for the large non-power-of-two tiled direct DFT, including its 64-lane tunable dispatch, final partial frequency workgroup, and twiddle resets."
},
"tunables": { "WORKGROUP_SIZE": 64 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 513, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.5 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 513, 2], "tolerance": 0.03, "relTolerance": 0.0002 } }
},
{
"name": "tiled_real_nonpow2_len4095_full_boundary",
"provenance": {
"notes": "Boundary-length accuracy lock for the non-power-of-two tiled DFT. Exercises all shared-memory slots and many twiddle resets at the largest supported signal length."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4095, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.0013, "cosStep": 0.0027, "scale": 0.05 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4095, 2], "tolerance": 0.1, "relTolerance": 0.0005 } }
},
{
"name": "fft_batch_axis1_complex_inverse_len512",
"attrs": { "inverse": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 512, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.037, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 512, 2], "tolerance": 0.0001, "relTolerance": 0.0001 } }
},
{
"name": "fft_batch_axis1_real_onesided_len2048",
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 2048, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.019, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 1025, 2], "tolerance": 0.06, "relTolerance": 0.0001 } }
},
{
"name": "fft_batch_axis1_real_full_len4096_storage_inplace",
"provenance": {
"notes": "Locks the portable single-dispatch storage-buffer radix-2 route above the shared Stockham size ceiling."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4096, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.009, "cosStep": 0.017, "scale": 0.5 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4096, 2], "tolerance": 0.35, "relTolerance": 0.001 } }
},
{
"name": "fft_batch_axis1_complex_inverse_len4096_storage_inplace",
"provenance": {
"notes": "The storage-buffer radix-2 route only takes over above the shared-memory ceiling at length 2048, and every case that long was a forward transform of a real signal. This one is the inverse of a complex signal, which is the route's other three knobs at once: the twiddle sign, the two-component load, and the 1/N scaling."
},
"attrs": { "inverse": 1, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4096, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.009, "cosStep": 0.017, "scale": 0.5 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4096, 2], "tolerance": 0.0001, "relTolerance": 0.001 } }
},
{
"name": "fft_batch_axis1_real_onesided_len4096_storage_scratch",
"provenance": {
"notes": "Covers the one-dispatch storage-buffer DIT route when a onesided output is too small to serve as its own FFT scratch."
},
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4096, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.009, "cosStep": 0.017, "scale": 0.5 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 2049, 2], "tolerance": 0.35, "relTolerance": 0.001 } }
},
{
"name": "fft_rank4_axis1_real_full_len256_inner3",
"attrs": {},
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [2, 256, 3, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.027, "cosStep": 0.033, "scale": 1.0 }
}
},
"outputs": {
"output": { "dtype": "float32", "shape": [2, 256, 3, 2], "tolerance": 0.015, "relTolerance": 0.0001 }
}
},
{
"name": "fft_rank4_axis1_real_onesided_len16_inner5",
"attrs": { "onesided": 1 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [1, 16, 5, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.043, "cosStep": 0.021, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 9, 5, 2], "tolerance": 0.0001 } }
},
{
"name": "fft_rank4_axis2_real_onesided_len512",
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 3, 512, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.039, "scale": 1.0 }
}
},
"outputs": {
"output": { "dtype": "float32", "shape": [2, 3, 257, 2], "tolerance": 0.002, "relTolerance": 0.0001 }
}
},
{
"name": "empty_zero_dim",
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": { "input": { "dtype": "float32", "shape": [0, 4, 1], "data": { "kind": "values", "values": [] } } },
"outputs": { "output": { "dtype": "float32", "shape": [0, 4, 2], "tolerance": 0 } }
},
{
"name": "ort_caseB_empty",
"attrs": { "onesided": 1 },
"inputs": { "input": { "dtype": "float32", "shape": [1, 0, 1], "data": { "kind": "values", "values": [] } } },
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 1, 2],
"data": { "kind": "values", "values": [0.0, 0.0] },
"tolerance": 0.001
}
}
},
{
"name": "irfft_naive_axis1_over_128_dispatch_guard",
"provenance": {
"source": "synthetic",
"test": "naive batch_axis1 IRFFT, numel(output) > 128 dispatch coverage",
"notes": "Odd output length 255 (non-power-of-2) forces the naive batch_axis1 variant (FFT radix-2 paths don't apply). dim(output,2)==1 on the onesided-inverse path, so the dispatch numerator must be numel(output)/dim(output,2)=255, not numel(output)/2=127: the latter only launches ceil(127/WG) workgroups and silently drops outputs >= ~128. numel(output)=255 > WG(128) so the drop is observable."
},
"attrs": { "inverse": 1, "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 128, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.019, "scale": 1.0 }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [255] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 255, 1], "tolerance": 0.01, "relTolerance": 0.01 } }
},
{
"name": "dft_length_default_axis_no_axis_input",
"provenance": {
"notes": "dft_length input present, axis input omitted (default transform axis 1). Exercises the general_len variant: forward DFT of a real rank-3 signal where dft_length matches the signal extent."
},
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4, 1],
"data": { "kind": "values", "values": [1.0, 2.0, 0.0, -1.0] }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [4] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4, 2], "tolerance": 0.00001 } }
},
{
"name": "general_axis_input_len2048_naive_vs_fft_batch32",
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [32, 2048, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.0007, "cosStep": 0.0013, "scale": 1.0 }
},
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [32, 2048, 2], "tolerance": 0.05, "relTolerance": 0.01 } }
},
{
"name": "general_axis_input_gidy_fold_over_8m_rows",
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [2099200, 4, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.019, "scale": 1.0 }
},
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": {
"output": { "dtype": "float32", "shape": [2099200, 4, 2], "tolerance": 0.0001, "relTolerance": 0.0001 }
}
},
{
"name": "whisper_nfft400_naive_batch_axis1_onesided",
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [200, 400, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.017, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [200, 201, 2], "tolerance": 0.02, "relTolerance": 0.001 } }
},
{
"name": "irfft_batch_axis1_len512_reconstruct_real",
"attrs": { "inverse": 1, "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [8, 257, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.031, "scale": 1.0 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [8, 512, 1], "tolerance": 0.02, "relTolerance": 0.01 } }
},
{
"name": "general_len_rank4_axis1_dftlength_zeropad_len6",
"provenance": {
"notes": "dft_length=6 zero-pads a rank-4 axis-1 signal of length 4 up to 6 samples, forcing the general_len variant (rank-4 coordinate decode + zero-pad guard n>=input_axis_length). Untested rank-4 dft_length path."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } },
"input": {
"dtype": "float32",
"shape": [2, 4, 3, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.037, "cosStep": 0.061, "scale": 2.0 }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [6] } }
},
"outputs": {
"output": { "dtype": "float32", "shape": [2, 6, 3, 2], "tolerance": 0.0002, "relTolerance": 0.0001 }
}
},
{
"name": "general_irfft_rank4_axis2_odd_len5_no_nyquist",
"provenance": {
"source": "onnxruntime/test/providers/cpu/signal/signal_ops_test.cc",
"test": "SignalOpsTest.DFT20_IRFFT_naive",
"notes": "Rank-4 axis-2 odd-length IRFFT via general_axis_len: odd output length 5 has no exact Nyquist bin, so no weight-2 doubling should occur. Exercises the general kernel onesided_inverse branch + rank-4 coordinate decode."
},
"attrs": { "inverse": 1, "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 2, 3, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.029, "cosStep": 0.047, "scale": 3.0 }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [5] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [2] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 2, 5, 1], "tolerance": 0.0005, "relTolerance": 0.001 } }
},
{
"name": "general_axis_len_negative_axis_rank3_dftlength_truncate",
"provenance": {
"notes": "Negative axis input (-2 -> axis 1 for rank 3) combined with a truncating dft_length (6 -> 4) forces general_axis_len and exercises runtime resolve_axis() negative normalization together with signal truncation. Untested combination."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [3, 6, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.033, "cosStep": 0.052, "scale": 2.0 }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [4] } },
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [-2] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [3, 4, 2], "tolerance": 0.0002, "relTolerance": 0.0001 } }
},
{
"name": "general_len_rank2_axis0_dftlength_zeropad_odd",
"provenance": {
"notes": "Rank-2 axis-0 with dft_length=5 zero-padding a length-3 signal forces general_len; validates the rank-2 (n_logical=1, pad=2) coordinate decode of dft-general under zero-padding."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": { "dtype": "float32", "shape": [3, 1], "data": { "kind": "values", "values": [1.0, 2.0, 3.0] } },
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [5] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [5, 2], "tolerance": 0.00002 } }
},
{
"name": "fft_explicit_equal_length128_batch4_onesided",
"provenance": {
"notes": "Correctness lock for the optimized explicit-dft_length route when the runtime length equals the power-of-two signal length."
},
"attrs": { "inverse": 0, "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [4, 128, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.033, "cosStep": 0.052, "scale": 2.0 }
},
"dft_length": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [128] } }
},
"outputs": { "output": { "dtype": "float32", "shape": [4, 65, 2], "tolerance": 0.002, "relTolerance": 0.001 } }
},
{
"name": "fft_runtime_axis1_full_len16_batch2",
"provenance": {
"notes": "A scalar runtime axis selects axis 1, checking the guarded Stockham FFT and the complementary general-axis pass on the same input."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 16, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.031, "cosStep": 0.047, "scale": 1.5 }
},
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [1] } }
},
"outputs": {
"output": { "dtype": "float32", "shape": [2, 16, 2], "tolerance": 0.00002, "relTolerance": 0.00001 }
}
},
{
"name": "fft_batch_axis1_real_full_len8192_storage_inplace_generic",
"provenance": { "notes": "Non-4096 correctness lock for the geometry-derived storage-buffer radix-2 route." },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 8192, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.0045, "cosStep": 0.0085, "scale": 0.25 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 8192, 2], "tolerance": 0.7, "relTolerance": 0.002 } }
},
{
"name": "fft_batch_axis1_real_onesided_len8192_storage_scratch_generic",
"provenance": { "notes": "Non-4096 correctness lock for the geometry-derived one-sided radix-2 scratch route." },
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 8192, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.0045, "cosStep": 0.0085, "scale": 0.25 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 4097, 2], "tolerance": 0.7, "relTolerance": 0.002 } }
},
{
"name": "tiled_real_nonpow2_len4097_onesided_above_old_boundary",
"provenance": {
"notes": "Proves the tiled direct transform is bounded by device workgroup storage rather than the former 4095 shape cutoff."
},
"attrs": { "onesided": 1 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 4097, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.0013, "cosStep": 0.0027, "scale": 0.05 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [1, 2049, 2], "tolerance": 0.15, "relTolerance": 0.001 } }
},
{
"name": "rank5_batched_axis3",
"provenance": {
"notes": "ONNX DFT permits arbitrary batch rank around the transformed axis. With the axis given as an attribute the general kernel needs only (outer, axis, inner), so the batch rank never reaches it."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [2, 1, 2, 4, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 0.5 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 1, 2, 4, 2], "tolerance": 0.00001 } }
},
{
"name": "rank6_axis2_batch_and_inner",
"provenance": {
"notes": "A rank the packing has never seen, with batch dims on both sides of the transform axis (outer 4, inner 2). If any rank ceiling had merely been raised rather than removed, this is the case that finds it."
},
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"axis": { "dtype": "int32", "shape": [], "data": { "kind": "values", "values": [2] } },
"input": {
"dtype": "float32",
"shape": [2, 2, 3, 1, 2, 1],
"data": { "kind": "fillFloat32", "sinStep": 0.23, "cosStep": 0.41, "scale": 0.6 }
}
},
"outputs": { "output": { "dtype": "float32", "shape": [2, 2, 3, 1, 2, 2], "tolerance": 0.00001 } }
},
{
"name": "rank8_default_axis_contract_ceiling",
"provenance": { "notes": "Exercises the manifest's advertised rank-8 ceiling with the ONNX default axis (-2)." },
"attrs": { "inverse": 0, "onesided": 0 },
"inputs": {
"input": {
"dtype": "float32",
"shape": [1, 1, 1, 1, 1, 1, 2, 1],
"data": { "kind": "values", "values": [1.0, 2.0] }
}
},
"outputs": {
"output": {
"dtype": "float32",
"shape": [1, 1, 1, 1, 1, 1, 2, 2],
"tolerance": 0.00001,
"data": { "kind": "values", "values": [3.0, 0.0, -1.0, 0.0] }
}
}
}
]
}