use cubecl::prelude::*;
use crate::Coords;
#[derive(CubeType, Clone)]
#[expand(derive(Clone))]
pub(crate) struct RuntimeMap {
pub(crate) coefficients: Coords<u32>,
pub(crate) residues: Coords<u32>,
}
#[cube]
impl RuntimeMap {
pub(crate) fn integral(#[comptime] physical_rank: usize) -> RuntimeMap {
RuntimeMap {
coefficients: Coords::<u32>::new(),
residues: Coords::constant(comptime!(vec![0; physical_rank])),
}
}
pub(crate) fn stored(&self) -> RuntimeMap {
RuntimeMap {
coefficients: self.coefficients.stored(),
residues: self.residues.stored(),
}
}
pub(crate) fn store_from(&mut self, src: &RuntimeMap) {
self.coefficients.store_from(&src.coefficients);
self.residues.store_from(&src.residues);
}
}