rudnn/convolution/components/
error.rs1use 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}