Skip to main content

CubeclUtilsErrors

Enum CubeclUtilsErrors 

Source
#[non_exhaustive]
pub enum CubeclUtilsErrors { CubeCountExceeded { kernel: &'static str, requested: (u32, u32, u32), limit: (u32, u32, u32), }, GridTooLarge { total_cubes: u32, max_dim: u32, }, BindingTooLarge { requested: u64, limit: u64, }, SharedMemoryExceeded { kernel: &'static str, requested: usize, available: usize, }, CubeClServerError(ServerError), }
Expand description

All error variants that can occur across cubecl-utils-rs operations.

Marked #[non_exhaustive] so that added variants do not break a downstream exhaustive match. Match on the variants you care about and keep a _ arm.

Every variant here describes a condition that CubeCL itself reports either silently or in the wrong place. See the crate-level docs for why that matters.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

CubeCountExceeded

A dispatch exceeds the device’s per-dimension cube-count limit.

Not a soft failure on wgpu: the launch is rejected on the CubeCL server thread, that thread dies, and every subsequent call on the client returns an unrelated CallError from somewhere else entirely.

Fields

§kernel: &'static str

Name of the kernel whose dispatch was rejected

§requested: (u32, u32, u32)

Requested cube count as (x, y, z)

§limit: (u32, u32, u32)

Per-dimension device limit as (x, y, z)

§

GridTooLarge

A flat cube count cannot be expressed as a 2D grid within the limit.

Reachable only when total_cubes exceeds max_dim * max_dim, i.e. past roughly 4.29e9 cubes against a 65535 limit.

Fields

§total_cubes: u32

Flat cube count that was requested

§max_dim: u32

Per-dimension limit the decomposition had to respect

§

BindingTooLarge

A single buffer exceeds the device’s per-binding size limit.

Over-sized bindings are rejected without an error surfacing: the kernel does no work and returns zeros, so the condition is caught on the host before the allocation instead.

Fields

§requested: u64

Bytes the buffer requires

§limit: u64

Per-binding limit reported by the device

§

SharedMemoryExceeded

A kernel’s shared-memory footprint exceeds the device’s per-workgroup budget.

Carries the budget so the caller can report what would have fitted. Apple Silicon reports 32768 bytes, which is at the low end of what desktop hardware offers but above the 16384 that some integrated parts report.

Fields

§kernel: &'static str

Name of the kernel whose staging does not fit

§requested: usize

Bytes the kernel would allocate

§available: usize

Bytes the device offers per workgroup

§

CubeClServerError(ServerError)

Propagate errors from the CubeCL runtime.

Trait Implementations§

Source§

impl Debug for CubeclUtilsErrors

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for CubeclUtilsErrors

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for CubeclUtilsErrors

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<ServerError> for CubeclUtilsErrors

Source§

fn from(source: ServerError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoComptime for T

Source§

fn comptime(self) -> Self

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.