← Back

Module scheduler

struct GraphNode

Source: scheduler.joule:26

fn new(op: ScheduleOp) -> Self

Create a new graph node

Source: scheduler.joule:49

struct HeterogeneousGraph

Source: scheduler.joule:69

fn new() -> Self

Create empty graph

Source: scheduler.joule:90

fn add_op(&mut self, op: ScheduleOp) -> usize

Add an operation to the graph

Source: scheduler.joule:104

fn add_ops(&mut self, ops: Vec<ScheduleOp>) -> Vec<usize>

Add multiple operations

Source: scheduler.joule:119

fn finalize(&mut self)

Finalize graph (compute outputs, topo order, critical path)

Source: scheduler.joule:124

fn compute_topo_order(&self) -> Vec<usize>

Compute topological order using Kahn's algorithm

Source: scheduler.joule:158

fn get_node(&self, id: usize) -> Option<&GraphNode>

Get node by ID

Source: scheduler.joule:190

fn get_node_mut(&mut self, id: usize) -> Option<&mut GraphNode>

Get mutable node by ID

Source: scheduler.joule:195

fn topo_order(&self) -> &[usize]

Get topological order

Source: scheduler.joule:200

fn total_flops(&self) -> u64

Get total FLOPS

Source: scheduler.joule:205

fn aggregate_arithmetic_intensity(&self) -> f64

Get aggregate arithmetic intensity

Source: scheduler.joule:210

fn len(&self) -> usize

Number of nodes

Source: scheduler.joule:219

fn is_empty(&self) -> bool

Is graph empty?

Source: scheduler.joule:224

fn iter_topo(&self) -> impl Iterator<Item = &GraphNode>

Iterate over nodes in topological order

Source: scheduler.joule:229

fn default() -> Self

Source: scheduler.joule:235

struct ExecutionStep

Source: scheduler.joule:246

struct ExecutionPlan

Source: scheduler.joule:265

fn new() -> Self

Create empty plan

Source: scheduler.joule:284

fn utilization(&self, engine: Engine) -> f64

Get utilization for an engine

Source: scheduler.joule:297

fn ops_on(&self, engine: Engine) -> usize

Get operation count for an engine

Source: scheduler.joule:302

fn summary(&self) -> String

Summary of the plan

Source: scheduler.joule:307

fn default() -> Self

Source: scheduler.joule:325

enum SchedulingStrategy

Source: scheduler.joule:336

struct SchedulerConfig

Source: scheduler.joule:349

fn default() -> Self

Source: scheduler.joule:365

struct Scheduler

Main heterogeneous scheduler

Source: scheduler.joule:378

struct SchedulerStats

Source: scheduler.joule:391

fn new(capabilities: Vec<EngineCapabilities>) -> Self

Create scheduler with given engine capabilities

Source: scheduler.joule:410

fn with_config(capabilities: Vec<EngineCapabilities>, config: SchedulerConfig) -> Self

Create with custom config

Source: scheduler.joule:425

fn set_config(&mut self, config: SchedulerConfig)

Update configuration

Source: scheduler.joule:432

fn get_capabilities(&self, engine: Engine) -> Option<&EngineCapabilities>

Get capabilities for an engine

Source: scheduler.joule:437

fn schedule_op(&self, op: &ScheduleOp) -> ScheduleDecision

Schedule a single operation

Source: scheduler.joule:446

fn schedule_min_latency(&self, op: &ScheduleOp) -> ScheduleDecision

Schedule for minimum latency

Source: scheduler.joule:474

fn schedule_min_energy(&self, op: &ScheduleOp) -> ScheduleDecision

Schedule for minimum energy

Source: scheduler.joule:494

fn schedule_balanced(&self, op: &ScheduleOp) -> ScheduleDecision

Schedule with balanced latency/energy tradeoff

Source: scheduler.joule:514

fn schedule_max_throughput(&self, op: &ScheduleOp) -> ScheduleDecision

Schedule for maximum throughput

Source: scheduler.joule:563

fn can_execute(&self, cap: &EngineCapabilities, op: &ScheduleOp) -> bool

Check if engine can execute operation

Source: scheduler.joule:582

fn estimate_time(&self, op: &ScheduleOp, cap: &EngineCapabilities) -> u64

Estimate execution time (nanoseconds)

Source: scheduler.joule:587

fn estimate_energy(&self, op: &ScheduleOp, cap: &EngineCapabilities) -> u64

Estimate energy consumption (microjoules)

Source: scheduler.joule:603

fn make_decision(&self, op: &ScheduleOp, engine: Engine, reason: &str) -> ScheduleDecision

Create scheduling decision

Source: scheduler.joule:616

fn schedule_graph(&self, graph: &mut HeterogeneousGraph) -> ExecutionPlan

Schedule an entire graph

Source: scheduler.joule:653

fn compute_critical_path(&self, graph: &HeterogeneousGraph) -> u64

Compute critical path length through graph

Source: scheduler.joule:740

fn schedule_transformer(

Create optimal schedule for transformer inference

Source: scheduler.joule:766

fn stats(&self) -> SchedulerStats

Get current statistics

Source: scheduler.joule:854

fn reset_stats(&self)

Reset statistics

Source: scheduler.joule:859

fn clone(&self) -> Self

Source: scheduler.joule:866

fn schedule_gemm(m: usize, n: usize, k: usize, dtype: ComputeDType) -> ScheduleDecision

Create a simple GEMM schedule decision

Source: scheduler.joule:884

fn schedule_transformer_inference(

Create a transformer schedule

Source: scheduler.joule:892

fn print_model_schedules()

Print recommended schedule for common model sizes

Source: scheduler.joule:907

fn test_graph_construction()

Source: scheduler.joule:942

fn test_scheduler_small_op()

Source: scheduler.joule:959

fn test_scheduler_large_gemm()

Source: scheduler.joule:971

fn test_scheduler_quantized_decode()

Source: scheduler.joule:983

fn test_transformer_schedule()

Source: scheduler.joule:996