mirror of
https://github.com/huggingface/candle.git
synced 2025-06-17 02:58:50 +00:00
81 lines
2.3 KiB
Rust
81 lines
2.3 KiB
Rust
use crate::{DType, DeviceLocation, Shape};
|
|
|
|
/// Main library error type.
|
|
#[derive(thiserror::Error, Debug)]
|
|
pub enum Error {
|
|
#[error("unexpected dtype, expected: {expected:?}, got: {got:?}")]
|
|
UnexpectedDType { expected: DType, got: DType },
|
|
|
|
#[error("{op} only supports contiguous tensors")]
|
|
RequiresContiguous { op: &'static str },
|
|
|
|
#[error("{op} expects at least one tensor")]
|
|
OpRequiresAtLeastOneTensor { op: &'static str },
|
|
|
|
#[error("backward is not supported for {op}")]
|
|
BackwardNotSupported { op: &'static str },
|
|
|
|
#[error("{op} invalid index {index} with vocab {vocab_size}")]
|
|
InvalidIndex {
|
|
op: &'static str,
|
|
index: usize,
|
|
vocab_size: usize,
|
|
},
|
|
|
|
#[error("the candle crate has not been built with cuda support")]
|
|
NotCompiledWithCudaSupport,
|
|
|
|
#[error(
|
|
"Shape mismatch, got buffer of size {buffer_size} which is compatible with shape {shape:?}"
|
|
)]
|
|
ShapeMismatch { buffer_size: usize, shape: Shape },
|
|
|
|
#[error("shape mismatch in {op}, lhs: {lhs:?}, rhs: {rhs:?}")]
|
|
ShapeMismatchBinaryOp {
|
|
lhs: Shape,
|
|
rhs: Shape,
|
|
op: &'static str,
|
|
},
|
|
|
|
#[error("shape mismatch in cat for dim {dim}, shape for arg 1: {first_shape:?} shape for arg {n}: {nth_shape:?}")]
|
|
ShapeMismatchCat {
|
|
dim: usize,
|
|
first_shape: Shape,
|
|
n: usize,
|
|
nth_shape: Shape,
|
|
},
|
|
|
|
#[error("device mismatch in {op}, lhs: {lhs:?}, rhs: {rhs:?}")]
|
|
DeviceMismatchBinaryOp {
|
|
lhs: DeviceLocation,
|
|
rhs: DeviceLocation,
|
|
op: &'static str,
|
|
},
|
|
|
|
#[error("dtype mismatch in {op}, lhs: {lhs:?}, rhs: {rhs:?}")]
|
|
DTypeMismatchBinaryOp {
|
|
lhs: DType,
|
|
rhs: DType,
|
|
op: &'static str,
|
|
},
|
|
|
|
#[error("unexpected rank, expected: {expected}, got: {got} ({shape:?})")]
|
|
UnexpectedNumberOfDims {
|
|
expected: usize,
|
|
got: usize,
|
|
shape: Shape,
|
|
},
|
|
|
|
// TODO this is temporary when we support arbitrary matmul
|
|
#[error("temporary error where matmul doesn't support arbitrary striding")]
|
|
UnexpectedStriding,
|
|
|
|
#[error(transparent)]
|
|
Cuda(#[from] crate::CudaError),
|
|
|
|
#[error(transparent)]
|
|
TryFromIntError(#[from] core::num::TryFromIntError),
|
|
}
|
|
|
|
pub type Result<T> = std::result::Result<T, Error>;
|