#[cfg(feature = "gpu")]
use burn::backend::wgpu::WgpuDevice;
#[cfg(feature = "gpu")]
use burn::tensor::Tensor;
use crate::kde::{KdeError, KdeResult};
use realfft::num_complex::Complex;
#[cfg(feature = "gpu")]
type Backend = burn::backend::wgpu::Wgpu;
#[cfg(feature = "gpu")]
pub fn is_gpu_available() -> bool {
std::env::var("FLOW_UTILS_USE_GPU").is_ok()
}
#[cfg(not(feature = "gpu"))]
pub fn is_gpu_available() -> bool {
false
}
#[cfg(feature = "gpu")]
pub fn kde_fft_gpu(
data: &[f64],
grid: &[f64],
bandwidth: f64,
n: f64,
) -> KdeResult<Vec<f64>> {
use crate::kde::fft::kde_fft;
use crate::common::gaussian_kernel;
kde_fft(data, grid, bandwidth, n)
}
#[cfg(not(feature = "gpu"))]
pub fn kde_fft_gpu(
_data: &[f64],
_grid: &[f64],
_bandwidth: f64,
_n: f64,
) -> KdeResult<Vec<f64>> {
Err(KdeError::StatsError("GPU support not compiled in".to_string()))
}