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(any(feature = "cuda", docsrs))]
#[cfg_attr(docsrs, doc(cfg(feature = "cuda")))]
Cuda,
#[cfg(any(feature = "rocm", docsrs))]
#[cfg_attr(docsrs, doc(cfg(feature = "rocm")))]
Rocm,
#[cfg(any(feature = "vulkan", docsrs))]
#[cfg_attr(docsrs, doc(cfg(feature = "vulkan")))]
Vulkan,
#[cfg(any(feature = "metal", docsrs))]
#[cfg_attr(docsrs, doc(cfg(feature = "metal")))]
Metal,
#[cfg(any(feature = "cpu", docsrs))]
#[cfg_attr(docsrs, doc(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
}