pub mod color;
pub mod filter;
pub mod reduce;
pub mod resize;
pub mod transform;
pub use color::{ColorConversionKernel, ColorSpace as KernelColorSpace};
pub use filter::{ConvolutionKernel, FilterKernel};
pub use reduce::{ReduceKernel, ReduceOp};
pub use resize::{ResizeFilter, ResizeKernel};
pub use transform::{TransformKernel, TransformType};
#[derive(Debug, Clone, Copy, Default)]
pub struct KernelStats {
pub workgroups: (u32, u32, u32),
pub total_threads: u64,
pub estimated_flops: u64,
}
impl KernelStats {
#[must_use]
pub fn new(workgroups: (u32, u32, u32), threads_per_workgroup: u32) -> Self {
let total_threads = u64::from(workgroups.0)
* u64::from(workgroups.1)
* u64::from(workgroups.2)
* u64::from(threads_per_workgroup);
Self {
workgroups,
total_threads,
estimated_flops: 0,
}
}
#[must_use]
pub fn with_flops(mut self, flops: u64) -> Self {
self.estimated_flops = flops;
self
}
}