Module dataflow

Module dataflow 

Source
Expand description

Dataflow Graph Representation for Energy-Aware Execution

This module provides a dataflow graph (DFG) representation that enables:

  • Implicit parallelism from data dependencies
  • Energy-aware scheduling decisions
  • RipTide-style ordered dataflow execution

§Key Concepts

  • Operators: Computation nodes that fire when inputs are ready
  • Channels: Bounded FIFO queues connecting operators
  • Steer: Conditional routing (RipTide’s control-flow primitive)
  • Stream: Fused loop induction variable (27-52% operator reduction)
  • Carry: Loop-carried dependencies

§Energy-Aware Scheduling

Unlike traditional dataflow, Joule’s scheduler considers:

  • Current thermal state
  • Power/energy budgets
  • Available parallelism

This allows the runtime to dynamically throttle parallelism when thermal or energy constraints are active.

Re-exports§

pub use extract::DfgExtractor;
pub use optimize::DfgOptimizer;
pub use optimize::StreamFusion;
pub use schedule::EnergyAwareScheduler;
pub use schedule::SchedulingConfig;
pub use schedule::ThermalConstraint;

Modules§

extract
MIR to Dataflow Graph Extraction
optimize
Dataflow Graph Optimizations
schedule
Energy-Aware Dataflow Scheduler

Structs§

Channel
A channel connecting operators
ChannelId
Unique identifier for a channel between operators
DataflowGraph
A complete dataflow graph
DependencyAnalysis
Dependency analysis for a dataflow graph
EnergyEstimate
Energy estimate for an operator
OperatorId
Unique identifier for a dataflow operator
ScheduleStep
A step in the schedule (operators that can execute in parallel)
ScheduledDfg
A scheduled dataflow graph ready for execution
TokenConversionError
Error when converting a token value to an incompatible type

Enums§

ComputeOp
Arithmetic/logic operations for Compute operators
DfOperator
A dataflow operator that fires when all inputs are ready
MemoryOp
Memory operations
TokenType
Type of token values
TokenValue
Value carried by a token through a channel