1. Buffers (`in`, `out`)
in: Points to the input data (signal for forward FFT, frequency for backward FFT).
out: Points to the output data (frequency for forward FFT, signal for backward FFT).
Constraints:
Must not be
NULL.For in-place transforms (
flags.fft_placement == 0),inandoutmust be the same pointer.For out-of-place transforms (
flags.fft_placement == 1),inandoutmust be different pointers.
2. Ranks (`vec_rank`, `dim_rank`)
vec_rank: Number of batch dimensions (length of
vecsarray). Must be \(\geq 1\).dim_rank: Number of signal/frequency dimensions (length of
dimsarray). Must be \(\geq 1\).
3. Dimension Arrays (`dims`, `vecs`)
dims: Array of
aoclfftz_dim_tdescribing each signal/frequency dimension.vecs: Array of
aoclfftz_dim_tdescribing each batch dimension.Constraints for each element:
n(size): Must be > 0.in_stride,out_stride: Must be > 0.For in-place transforms,
in_stridemust equalout_stridefor each dimension.For real transforms (R2C/C2R), only 1D is supported (
dim_rank == 1) in this release, and special stride rules apply (see Stride Setting).
4. Flags (`flags`)
fft_type: Complex (0) or Real (1).
fft_direction: Forward (0) or Backward (1).
storage_order: Must be 0 (in-order only; out-of-order not supported).
fft_placement: In-place (0) or Out-of-place (1).
transpose_mode: Must be 0 (standalone transpose not supported).
5. Parallel FFT (`pthr_fft`)
num_threads: Number of threads (\(\geq 1\)). If greater than available CPUs, defaults to max CPUs. If less than 1, defaults to single-threaded execution.
dynamic_load_model: 0 (fixed threads) or 1 (dynamic threads - not supported in this release). Invalid values default to 0.
6. Control Parameters (`cntrl_params`)
opt_level: 0-3 (optimization level). Out-of-range values default to maximum opt level - 3.
opt_off: 0 (optimizations enabled) or 1 (disabled).
logger_mode: 0-3. Out-of-range values default to 0. Error logs are always enabled despite logger_mode setting.
measure_stats: Must be 0 (not supported).
Note
opt-off takes precedence over opt-level.
Setting opt_level to 3 on a non-AVX512 CPU will put dynamic dispatcher in action, where the next highest possible ISA will be chosen.