//! The device type of each runtime, named without naming the runtime crate,
//! and [which hardware](crate::device::HardwareIdentity) a device is.
//!
//! Each one is a value and nothing more: which GPU, which index, which kind of
//! card. So they live here rather than in the runtime crates that act on them,
//! which lets a caller hold one, and lets `cubecl` put a single enum over the
//! devices, without depending on any runtime.
pub use CpuDevice;
pub use CudaDevice;
pub use HardwareIdentity;
pub use AmdDevice;
pub use MetalDevice;
pub use ;
pub use DeviceId;
/// A device index as a [`DeviceId`] carries it.
///
/// Kept at the largest the id holds rather than wrapped: wrapped, an index
/// past the end lands on a device that exists; kept, it names one no machine
/// has, and naming it is refused.