use cubecl::cmma::MatrixIdent;
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct MmaIo {
pub lhs_load_method: LoadMethod,
pub rhs_load_method: LoadMethod,
pub acc_load_method: LoadMethod,
}
#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
pub enum LoadMethod {
Manual,
LoadMatrix,
}
impl Default for MmaIo {
fn default() -> Self {
Self {
lhs_load_method: LoadMethod::LoadMatrix,
rhs_load_method: LoadMethod::LoadMatrix,
..Self::manual()
}
}
}
impl MmaIo {
pub fn manual() -> Self {
Self {
lhs_load_method: LoadMethod::Manual,
rhs_load_method: LoadMethod::Manual,
acc_load_method: LoadMethod::Manual,
}
}
pub fn load_method(&self, ident: MatrixIdent) -> LoadMethod {
match ident {
MatrixIdent::A => self.lhs_load_method,
MatrixIdent::B => self.rhs_load_method,
MatrixIdent::Accumulator => self.acc_load_method,
}
}
}