scirs2_series/gpu_acceleration/
traits.rs

1//! GPU acceleration traits for time series operations
2//!
3//! This module defines the core traits for GPU-accelerated time series processing,
4//! including data transfer, forecasting, decomposition, and feature extraction.
5
6use scirs2_core::ndarray::Array1;
7use scirs2_core::numeric::Float;
8use std::fmt::Debug;
9
10use super::config::GpuConfig;
11use crate::error::Result;
12
13/// Trait for GPU-accelerated time series operations
14pub trait GpuAccelerated<F: Float + Debug> {
15    /// Transfer data to GPU
16    fn to_gpu(&self, config: &GpuConfig) -> Result<Self>
17    where
18        Self: Sized;
19
20    /// Transfer data from GPU to CPU
21    fn to_cpu(&self) -> Result<Self>
22    where
23        Self: Sized;
24
25    /// Check if data is on GPU
26    fn is_on_gpu(&self) -> bool;
27
28    /// Get GPU memory usage in bytes
29    fn gpu_memory_usage(&self) -> usize;
30}
31
32/// Type alias for decomposition result (trend, seasonal, residual)
33pub type DecompositionResult<F> = (Array1<F>, Array1<F>, Array1<F>);
34
35/// GPU-accelerated forecasting operations
36pub trait GpuForecasting<F: Float + Debug> {
37    /// Perform forecasting on GPU
38    fn forecast_gpu(&self, steps: usize, config: &GpuConfig) -> Result<Array1<F>>;
39
40    /// Batch forecasting for multiple series
41    fn batch_forecast_gpu(
42        &self,
43        data: &[Array1<F>],
44        steps: usize,
45        config: &GpuConfig,
46    ) -> Result<Vec<Array1<F>>>;
47}
48
49/// GPU-accelerated decomposition operations
50pub trait GpuDecomposition<F: Float + Debug> {
51    /// Perform decomposition on GPU
52    fn decompose_gpu(&self, config: &GpuConfig) -> Result<DecompositionResult<F>>;
53
54    /// Batch decomposition for multiple series
55    fn batch_decompose_gpu(
56        &self,
57        data: &[Array1<F>],
58        config: &GpuConfig,
59    ) -> Result<Vec<DecompositionResult<F>>>;
60}
61
62/// GPU-accelerated feature extraction
63pub trait GpuFeatureExtraction<F: Float + Debug> {
64    /// Extract features on GPU
65    fn extract_features_gpu(&self, config: &GpuConfig) -> Result<Array1<F>>;
66
67    /// Batch feature extraction for multiple series
68    fn batch_extract_features_gpu(
69        &self,
70        data: &[Array1<F>],
71        config: &GpuConfig,
72    ) -> Result<Vec<Array1<F>>>;
73}