CAOS - Cells, Agents and Observers for Simulation


CAOS is a domain-specific parallel programming language for what we coined extended cellular automata. In fact, this extension is quite substantial: a cell may hold arbitrary data, the grid may have any number of dimensions and either fixed or cyclic boundary conditions. Any neighbourhood for cells is supported and likewise any number of cell generations can be taken into account by the state transition function. This makes CAOS a powerful tool for simulation, but it can likewise be used to define image filters, PDE solvers, etc.

The deliberate restriction to a specific algorithmic model (here stencil computations) allows us to completely automatically compile extremely concise CAOS programs into highly efficient code for clusters of multi-core nodes using both MPI for inter-node communication and OpenMP for intra-node multithreading.

The eminent research question behind the CAOS project was (and is) how the deliberate restriction to a specific, though wide-spread, algorithmic model (i.e. stencil computations) can benefit on the one hand the expressiveness of a programming language and on the other hand the compilation to efficiently executable code for scalable architectures. Both aspects were highly influenced by our experience from the SAC project.

Recommended reading: