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
- Channel
Id - Unique identifier for a channel between operators
- Dataflow
Graph - A complete dataflow graph
- Dependency
Analysis - Dependency analysis for a dataflow graph
- Energy
Estimate - Energy estimate for an operator
- Operator
Id - Unique identifier for a dataflow operator
- Schedule
Step - A step in the schedule (operators that can execute in parallel)
- Scheduled
Dfg - A scheduled dataflow graph ready for execution
- Token
Conversion Error - Error when converting a token value to an incompatible type
Enums§
- Compute
Op - Arithmetic/logic operations for Compute operators
- DfOperator
- A dataflow operator that fires when all inputs are ready
- Memory
Op - Memory operations
- Token
Type - Type of token values
- Token
Value - Value carried by a token through a channel