use strum_macros::{Display, EnumIter, EnumString, IntoStaticStr};
#[derive(Debug, Copy, Clone, Eq, PartialEq, IntoStaticStr, EnumString, EnumIter, Display)]
#[strum(serialize_all = "snake_case")]
pub enum Accelerator {
#[cfg(feature = "cuda")]
Cuda,
#[cfg(feature = "rocm")]
Rocm,
#[cfg(feature = "vulkan")]
Vulkan,
#[cfg(feature = "metal")]
Metal,
#[cfg(feature = "cpu")]
Cpu,
}
pub fn get_default_accelerators() -> Vec<Accelerator> {
use strum::IntoEnumIterator;
let mut accelerator = Vec::new();
for enabled in Accelerator::iter() {
accelerator.push(enabled);
}
accelerator
}