#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![recursion_limit = "138"]
#[cfg(not(any(
feature = "cpu",
feature = "cuda",
wgpu_metal,
feature = "rocm",
wgpu_vulkan,
wgpu_webgpu,
feature = "flex",
feature = "ndarray",
feature = "tch",
)))]
compile_error!("At least one backend feature must be enabled.");
#[macro_use]
mod macros;
mod backend;
mod device;
mod ops;
mod tensor;
pub use backend::*;
pub use device::*;
pub use tensor::*;
extern crate alloc;
pub(crate) mod backends {
#[cfg(feature = "autodiff")]
pub use burn_autodiff::Autodiff;
#[cfg(feature = "cpu")]
pub use burn_cpu::{Cpu, CpuDevice};
#[cfg(feature = "cuda")]
pub use burn_cuda::{Cuda, CudaDevice};
#[cfg(feature = "rocm")]
pub use burn_rocm::{Rocm, RocmDevice};
#[cfg(wgpu_metal)]
pub use burn_wgpu::Metal;
#[cfg(wgpu_vulkan)]
pub use burn_wgpu::Vulkan;
#[cfg(wgpu_webgpu)]
pub use burn_wgpu::Wgpu;
#[cfg(any(wgpu_metal, wgpu_vulkan, wgpu_webgpu))]
pub use burn_wgpu::WgpuDevice;
#[cfg(feature = "flex")]
pub use burn_flex::{Flex, FlexDevice};
#[cfg(feature = "ndarray")]
pub use burn_ndarray::{NdArray, NdArrayDevice};
#[cfg(feature = "tch")]
pub use burn_tch::{LibTorch, LibTorchDevice};
}