Search papers, labs, and topics across Lattice.
This paper introduces a compilation framework leveraging Dimensional Type Systems (DTS) to preserve semantic information through MLIR lowering stages, enabling joint optimization of numeric representation and deterministic memory management. DTS extends Hindley-Milner unification with constraints from finitely generated abelian groups for efficient dimensional inference, while Deterministic Memory Management (DMM) uses coeffects to unify escape analysis and memory placement. The framework's ability to verify coeffect signatures in forward-mode gradient computation has implications for auto-differentiation, providing design-time insights into allocation, representation, and cache locality.
Imagine a compiler that understands the size and lifetime of your data so well it can automatically optimize memory allocation and representation, giving you design-time insights into performance.
We present a compilation framework in which dimensional type annotations persist through multi-stage MLIR lowering, enabling the compiler to jointly resolve numeric representation selection and deterministic memory management as coeffect properties of a single program semantic graph (PSG). Dimensional inference determines value ranges; value ranges determine representation selection; representation selection determines word width and memory footprint; and memory footprint, combined with escape classification, determines allocation strategy and cross-target transfer fidelity. The Dimensional Type System (DTS) extends Hindley-Milner unification with constraints drawn from finitely generated abelian groups, yielding inference that is decidable in polynomial time, complete, and principal. Where conventional systems erase dimensional annotations before code generation, DTS carries them as compilation metadata through each lowering stage, making them available where representation and memory placement decisions occur. Deterministic Memory Management (DMM), formalized as a coeffect discipline within the same graph, unifies escape analysis and memory placement with the dimensional framework. Escape analysis classifies value lifetimes into four categories (stack-scoped, closure-captured, return-escaping, byref-escaping), each mapping to a verified allocation strategy. We identify implications for auto-differentiation: the dimensional algebra is closed under the chain rule, and forward-mode gradient computation exhibits a coeffect signature that the framework can verify. The practical consequence is a development environment where escape diagnostics, allocation strategy, representation fidelity, and cache locality estimation are design-time views over the compilation graph.