cubecl_convolution/
error.rs

1use std::fmt::Debug;
2
3use cubecl_core::tune::AutotuneError;
4use cubecl_matmul::components::{MatmulAvailabilityError, MatmulSetupError};
5
6#[allow(clippy::large_enum_variant)]
7pub enum ConvLaunchError {
8    Matmul(MatmulSetupError),
9    Groups(usize),
10    Unknown,
11}
12
13impl Debug for ConvLaunchError {
14    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15        match self {
16            ConvLaunchError::Matmul(err) => {
17                write!(f, "{err:?}")
18            }
19            ConvLaunchError::Groups(groups) => {
20                writeln!(
21                    f,
22                    "Unable to launch matmul because groups must be one, is actually {groups}",
23                )
24            }
25            ConvLaunchError::Unknown => write!(f, "Unknown"),
26        }
27    }
28}
29
30impl From<MatmulSetupError> for ConvLaunchError {
31    fn from(value: MatmulSetupError) -> Self {
32        Self::Matmul(value)
33    }
34}
35
36impl From<MatmulAvailabilityError> for ConvLaunchError {
37    fn from(value: MatmulAvailabilityError) -> Self {
38        Self::Matmul(MatmulSetupError::Unavailable(value))
39    }
40}
41
42#[allow(clippy::from_over_into)]
43impl Into<AutotuneError> for ConvLaunchError {
44    fn into(self) -> AutotuneError {
45        AutotuneError::Unknown(format!("{self:?}"))
46    }
47}