pub struct ScheduleItem {
pub kernel: Arc<UOp>,
pub ast: Arc<UOp>,
pub buffers: Vec<Buffer>,
pub buffer_uop_ids: Vec<u64>,
pub fixedvars: HashMap<String, i64>,
pub loop_var_names: HashSet<String>,
pub dependencies: Vec<u64>,
pub instance_dependencies: Vec<usize>,
pub alias_registered_ids: Vec<u64>,
}Expand description
A single executable callable with its buffers and variable bindings.
Each ScheduleItem represents one callable that needs to be compiled and executed. The callable AST contains STORE operations that write results to buffers.
Schedule items are fully expanded during schedule instantiation.
Fields§
§kernel: Arc<UOp>The callable wrapper UOp (CALL) used for dependency identity.
ast: Arc<UOp>The inner callable AST (typically SINK containing STORE ops) - for codegen
buffers: Vec<Buffer>Device buffers for this callable (in order expected by codegen)
buffer_uop_ids: Vec<u64>UOp IDs under which each buffer was registered in buffer index.
Same length as buffers. Used for cleanup - to remove buffers from
the global registry, we need to know what key they were registered under.
fixedvars: HashMap<String, i64>Fixed variable values for this specific kernel invocation. Maps variable name (e.g., “range_0”) to concrete i64 value. Always concrete in the strict scheduler path.
loop_var_names: HashSet<String>Names of variables in fixedvars whose values came from schedule-loop
counters. User var_vals must not override these — see
collect_non_overridable_fixedvars.
dependencies: Vec<u64>Callable UOp IDs that must complete before this item can execute. Empty for callables without dependencies (first in chain or independent). Dependencies are implicit in scheduling order after topological sort.
instance_dependencies: Vec<usize>Concrete schedule-item indices that must complete before this item. Used for ordering constraints that cannot be represented by callable ID after strict unrolling creates repeated callable IDs.
alias_registered_ids: Vec<u64>Additional UOp IDs registered as aliases in buffer index. These are IDs where the same buffer was registered under a different key for lookup convenience. They need to be cleaned up along with buffer_uop_ids.
Trait Implementations§
Source§impl Clone for ScheduleItem
impl Clone for ScheduleItem
Source§fn clone(&self) -> ScheduleItem
fn clone(&self) -> ScheduleItem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ScheduleItem
impl !RefUnwindSafe for ScheduleItem
impl Send for ScheduleItem
impl Sync for ScheduleItem
impl Unpin for ScheduleItem
impl UnsafeUnpin for ScheduleItem
impl !UnwindSafe for ScheduleItem
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more