#[cfg(feature = "gpu-wgpu")]
use wgpu::{Device, Queue};
use crate::{ClusteringError, Result};
#[cfg(feature = "gpu-wgpu")]
pub struct RocmKMeans {
n_clusters: usize,
device: Device,
queue: Queue,
}
#[cfg(feature = "gpu-wgpu")]
impl RocmKMeans {
pub async fn new(n_clusters: usize) -> Result<Self> {
unimplemented!("RocmKMeans::new")
}
pub fn fit(&self, data: &[Vec<f64>]) -> Result<RocmClusteringResult> {
unimplemented!("RocmKMeans::fit")
}
}
#[cfg(feature = "gpu-wgpu")]
pub struct RocmClusteringResult {
pub labels: Vec<usize>,
pub centroids: Vec<Vec<f64>>,
}
#[cfg(not(feature = "gpu-wgpu"))]
pub struct RocmKMeans;
#[cfg(not(feature = "gpu-wgpu"))]
impl RocmKMeans {
pub fn new(_n_clusters: usize) -> Result<Self> {
Err(ClusteringError::GpuError(
"GPU-wgpu support not enabled. Compile with --features gpu-wgpu".to_string(),
))
}
}