Domain-specific languages

Simit: A Language for Physical Simulation

A programming language that lets a simulation be written simultaneously as a hypergraph of local update functions and as global vectors, matrices, and tensors.

C++ LLVM CUDA

The problem

Physical simulations are naturally described locally, at the level of vertices and edges, but run efficiently as global linear algebra — and reconciling those two views by hand is difficult.

The idea

Give the programmer both views of the same data at once, and compile the local description down to efficient global sparse linear algebra on CPUs and GPUs.

How it fits the group's work

Simit is an early expression of the group’s recurring theme: decoupling how a computation is described from how its data is represented and executed. The hypergraph-and-tensor duality it introduced for simulation foreshadows the later, more general work on languages over collections of data and compilers that are polymorphic over data structures.

Key publications

All software