in crates/ratchet-core/src/ops/norm/mod.rs [339:371]
fn build_kernel(
&self,
inplace: bool,
dst: &Tensor,
workgroup_size: &WorkgroupSize,
) -> Result<KernelSource, OperationError> {
let kernel_element = self.kernel_element(dst);
match (dst.dt(), &kernel_element) {
(DType::F32, KernelElement::Scalar) => {
self.render::<Scalar<f32>>(inplace, dst, workgroup_size)
}
(DType::F32, KernelElement::Vec2) => {
self.render::<Vec2<f32>>(inplace, dst, workgroup_size)
}
(DType::F32, KernelElement::Vec4) => {
self.render::<Vec4<f32>>(inplace, dst, workgroup_size)
}
(DType::F16, KernelElement::Scalar) => {
self.render::<Scalar<f16>>(inplace, dst, workgroup_size)
}
(DType::F16, KernelElement::Vec2) => {
self.render::<Vec2<f16>>(inplace, dst, workgroup_size)
}
(DType::F16, KernelElement::Vec4) => {
self.render::<Vec4<f16>>(inplace, dst, workgroup_size)
}
_ => Err(OperationError::CompileError(format!(
"Unsupported dtype {:?} or kernel element {:?}",
dst.dt(),
kernel_element
))),
}
}