Skip to main content

rudnn/convolution/components/
error.rs

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