Skip to content

Domain Flow Architecture

Represent deep learning graphs as domain flow graphs — operators defined by Systems of Affine Recurrence Equations — and find schedules and spatial mappings that minimize data movement.

Domain Flow Graphs

DL graphs as chains of operators, each with a domain of computation derived from its tensor operands — not loop nests and memory views.

SURE / SARE Operators

Operators defined by Systems of Uniform or Affine Recurrence Equations, the formalism behind systolic and spatial dataflow execution.

Schedule Analysis

Prove a schedule legal (tau.theta >= 1 on every dependency edge) and measure the memory cardinality it implies — before committing silicon.

SURE Simulator

Execute recurrence systems numerically with dfactl: free vs linear schedules, legality reports, peak-live-value analysis, .dfg import.

MLIR Import

Read MLIR bytecode (TOSA, Torch, StableHLO) and lower DL graphs into domain flow form for analysis.

Header-Only C++20

Just #include <dfa/dfa.hpp> — no linking, no dependencies for the core library.

The same matrix-multiply recurrence under two schedules, driven by one clock. Left, the data-flow-earliest (free) schedule finishes in 29 steps and holds; right, the linear schedule keeps sweeping to 43 — the extra steps you watch it wait are the latency it trades for a smaller, regular, systolic footprint. Making that latency↔parallelism choice explicit is the point of the analysis. Rendered offline from the live interactive viewers with npm run video.

Data movement — not arithmetic — dominates the energy cost of deep learning execution. Domain Flow Architecture, rooted in E. Theodore Omtzigt’s Yale dissertation on domain flow and streaming architectures, structures computation by its computational domains: static schedules, maximal data locality, and spatial mappings that avoid resource contention. This repository provides the compiler-side tooling to analyze DL graphs in that form.