Cellato: a DSL for Cellular Automata based on C++ Template Meta-programming
Cellato is a tool with embedded DSL in C++ that leverages template meta-programming to define and execute cellular automata (CA) via concise type-level expressions that are specialized into efficient kernels at compile time. Its modular architecture decouples the Algorithm (rules), Evaluator (per-cell update), Layout (memory representation), and Traverser (grid iterator), allowing users to mix and match components without altering rule definitions. We demonstrate Cellato on Conway’s Game of Life, Forest Fire, Wireworld, and the Greenberg-Hastings excitable medium, which cover binary as well as multi-state models and Moore to von Neumann neighborhoods. We experimented with three memory layouts (standard arrays, bit-packed arrays, and bit-planes) for transparent bit-level encodings and data-parallel optimizations. Targeting both CPU and GPU back-ends, Cellato delivers performance on par with hand-tuned code, while its zero-overhead abstractions, flexible scheduling, and portable optimizations provide a robust foundation for high-performance CA computations.
Wed 2 JulDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:45 - 12:30 | |||
10:45 15mDay opening | Opening Remarks ICOOOLPS | ||
11:00 60mTalk | Invited Talk: Implementing Object Tracking in the Emerald Object-Oriented Language ICOOOLPS Eric Jul University of Oslo | ||
12:00 30mFull-paper | Cellato: a DSL for Cellular Automata based on C++ Template Meta-programming ICOOOLPS Pre-print |