solvr 0.2.0

Advanced computing library for real-world problem solving - optimization, differential equations, interpolation, statistics, and more
Documentation
//! CUDA implementation of Wiener filter algorithms.
//!
//! Wiener filtering is CPU-only because it requires computing local statistics
//! over sliding windows with sequential access patterns.

use crate::signal::traits::wiener::WienerAlgorithms;
use numr::error::{Error, Result};
use numr::runtime::cuda::{CudaClient, CudaRuntime};
use numr::tensor::Tensor;

impl WienerAlgorithms<CudaRuntime> for CudaClient {
    fn wiener(
        &self,
        _x: &Tensor<CudaRuntime>,
        _kernel_size: Option<usize>,
        _noise: Option<f64>,
    ) -> Result<Tensor<CudaRuntime>> {
        Err(Error::backend_limitation(
            "cuda",
            "wiener",
            "Wiener filtering is CPU-only due to local statistics computation. Transfer data to CPU first.",
        ))
    }

    fn wiener2d(
        &self,
        _x: &Tensor<CudaRuntime>,
        _kernel_size: Option<(usize, usize)>,
        _noise: Option<f64>,
    ) -> Result<Tensor<CudaRuntime>> {
        Err(Error::backend_limitation(
            "cuda",
            "wiener2d",
            "Wiener filtering is CPU-only due to local statistics computation. Transfer data to CPU first.",
        ))
    }
}