cubek_std/microkernel/mod.rs
1//! What kernels are built from.
2//!
3//! A **microkernel** is what one owner of a work item runs, and its **scope** is the owner: a
4//! unit, a plane, a cube. Owners at one scope never share a work item; the units inside one owner
5//! all work on the same one. A microkernel may be built from microkernels of a smaller scope: a
6//! cube's planes each running a plane microkernel on part of the cube's item.
7//!
8//! Nothing here is launched. A [`Routine`](crate::routine::Routine) is a whole kernel written
9//! around one microkernel, and the launch is its own.
10//!
11//! What every family's staged walk shares, whatever operands it stages, is here too: the
12//! [`StageRing`] that holds its stages, and what a stage of each operand costs.
13//!
14//! Autotune prioritizes routines, never microkernels. A routine and the microkernels under it each
15//! estimate their own part of the kernel's performance into a [`KernelEstimate`], in quantities
16//! every routine states alike.
17
18mod base;
19mod cube_planes;
20mod estimate;
21mod staging;
22
23pub use base::*;
24pub use cube_planes::*;
25pub use estimate::*;
26pub use staging::*;