1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! GPU-accelerated FFT pipeline for large-scale signal processing.
//!
//! This module provides a pure-Rust simulation of a tile-based GPU FFT
//! pipeline. The API surface mirrors what a real CUDA/ROCm back-end would
//! expose, so upgrading to hardware acceleration requires only a back-end
//! swap — no caller changes are needed.
//!
//! # Quick start
//!
//! ```rust
//! use scirs2_fft::gpu_fft::{GpuFftPipeline, GpuFftConfig, FftDirection};
//!
//! let pipeline = GpuFftPipeline::new(GpuFftConfig::default());
//!
//! // Real-to-complex forward FFT.
//! let signal: Vec<f64> = (0..8).map(|i| i as f64).collect();
//! let spectrum = pipeline.execute_r2c(&signal).expect("r2c FFT");
//! assert_eq!(spectrum.len(), 8);
//!
//! // Complex-to-real inverse FFT (roundtrip).
//! let recovered = pipeline.execute_c2r(&spectrum, signal.len()).expect("c2r FFT");
//! for (orig, rec) in signal.iter().zip(recovered.iter()) {
//! assert!((orig - rec).abs() < 1e-7);
//! }
//! ```
//!
//! # Modules
//!
//! | Sub-module | Contents |
//! |------------|----------|
//! | `types` | Configuration (`GpuFftConfig`), error (`GpuFftError`), plan (`GpuFftPlan`), result structs |
//! | `kernels` | Simulated GPU kernels: twiddles, bit-reversal, butterfly, Cooley-Tukey, Bluestein, tiling, normalisation |
//! | `pipeline` | `GpuFftPipeline` — plan cache, single/batch/R2C/C2R/signal execution |
// Flat re-exports for ergonomic usage.
pub use ;
pub use GpuFftPipeline;
pub use ;