oximedia_gpu/kernels/
mod.rs1pub mod color;
7pub mod filter;
8pub mod reduce;
9pub mod resize;
10pub mod transform;
11
12pub use color::{ColorConversionKernel, ColorSpace as KernelColorSpace};
13pub use filter::{ConvolutionKernel, FilterKernel};
14pub use reduce::{ReduceKernel, ReduceOp};
15pub use resize::{ResizeFilter, ResizeKernel};
16pub use transform::{TransformKernel, TransformType};
17
18#[derive(Debug, Clone, Copy, Default)]
20pub struct KernelStats {
21 pub workgroups: (u32, u32, u32),
23 pub total_threads: u64,
25 pub estimated_flops: u64,
27}
28
29impl KernelStats {
30 #[must_use]
32 pub fn new(workgroups: (u32, u32, u32), threads_per_workgroup: u32) -> Self {
33 let total_threads = u64::from(workgroups.0)
34 * u64::from(workgroups.1)
35 * u64::from(workgroups.2)
36 * u64::from(threads_per_workgroup);
37
38 Self {
39 workgroups,
40 total_threads,
41 estimated_flops: 0,
42 }
43 }
44
45 #[must_use]
47 pub fn with_flops(mut self, flops: u64) -> Self {
48 self.estimated_flops = flops;
49 self
50 }
51}