#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#[macro_use]
extern crate derive_new;
extern crate alloc;
pub mod backend;
pub use backend::*;
pub use burn_std::reader::*; pub use burn_std::{
AllocationProperty, BoolDType, BoolStore, Bytes, DType, DataError, DeviceHandle, Distribution,
DistributionSampler, DistributionSamplerKind, Element, ElementConversion, ElementEq,
ElementOrdered, ElementRandom, FloatDType, IntDType, Scalar, SplitPolicy, TensorData,
Tolerance, bf16, distribution, element, f16, stream_id::StreamId,
};
pub mod shape {
pub use burn_std::shape::*;
}
pub use shape::*;
pub mod slice {
pub use burn_std::{s, slice::*};
}
pub use slice::*;
pub mod indexing {
pub use burn_std::indexing::*;
}
pub use indexing::*;
mod alias;
pub use alias::*;
pub mod quantization;
#[cfg(feature = "cubecl")]
pub mod cubecl;
#[cfg(any(
feature = "cubecl-wgpu",
feature = "cubecl-metal",
feature = "cubecl-vulkan",
feature = "cubecl-webgpu"
))]
mod cube_wgpu {
use crate::backend::DeviceOps;
use burn_std::{BoolStore, DType, DeviceSettings};
use cubecl::wgpu::WgpuDevice;
impl DeviceOps for WgpuDevice {
#[cfg(not(any(feature = "cubecl-metal", feature = "cubecl-vulkan")))]
fn defaults(&self) -> DeviceSettings {
DeviceSettings::new(
DType::F32,
DType::I32,
DType::Bool(BoolStore::U32),
Default::default(),
)
}
#[cfg(any(feature = "cubecl-metal", feature = "cubecl-vulkan"))]
fn defaults(&self) -> DeviceSettings {
DeviceSettings::new(
DType::F32,
DType::I32,
DType::Bool(BoolStore::U8),
Default::default(),
)
}
}
}
#[cfg(feature = "cubecl-cuda")]
mod cube_cuda {
use crate::backend::DeviceOps;
use burn_std::{BoolStore, DType, DeviceSettings};
use cubecl::cuda::CudaDevice;
impl DeviceOps for CudaDevice {
fn defaults(&self) -> DeviceSettings {
DeviceSettings::new(
DType::F32,
DType::I32,
DType::Bool(BoolStore::U8),
Default::default(),
)
}
}
}
#[cfg(feature = "cubecl-cpu")]
mod cube_cpu {
use crate::backend::DeviceOps;
use burn_std::{BoolStore, DType, DeviceSettings};
use cubecl::cpu::CpuDevice;
impl DeviceOps for CpuDevice {
fn defaults(&self) -> DeviceSettings {
DeviceSettings::new(
DType::F32,
DType::I32,
DType::Bool(BoolStore::U8),
Default::default(),
)
}
}
}
#[cfg(feature = "cubecl-hip")]
mod cube_hip {
use crate::backend::DeviceOps;
use burn_std::{BoolStore, DType, DeviceSettings};
use cubecl::hip::AmdDevice;
impl DeviceOps for AmdDevice {
fn defaults(&self) -> DeviceSettings {
DeviceSettings::new(
DType::F32,
DType::I32,
DType::Bool(BoolStore::U8),
Default::default(),
)
}
}
}
#[macro_export]
macro_rules! doc_tensor {
() => {
concat!(
"[`Tensor`](https://docs.rs/burn-tensor/",
env!("CARGO_PKG_VERSION"),
"/burn_tensor/struct.Tensor.html)"
)
};
($method:literal) => {
concat!(
"[`Tensor::",
$method,
"`](",
"https://docs.rs/burn-tensor/",
env!("CARGO_PKG_VERSION"),
"/burn_tensor/struct.Tensor.html#method.",
$method,
")"
)
};
}