Simit is a new programming language that makes it easy to efficiently compute on sparse systems using linear algebra. Simit programs are typically shorter than MATLAB programs and yet are comparable in performance to hand-optimized codes.
Sparse data appears in many of applications ranging from mesh simulations and geometric optimization to data analytics and machine learning. It is hard to write fast code to compute on sparse data. The Simit programming language makes it easy by letting programmers view a sparse system both as a graph and as a set of vectors, matrices, and tensors (depending on which is more convenient). Simit provides a novel assembly construct that makes it conceptually easy and computationally efficient to move between the two abstractions. The Simit compiler exploits information provided by the assembly construct to automatically generate efficient in-place computations on graphs that exploit sparsity, leading to codes that are often simpler than equivalent MATLAB programs and yet are competitive with hand-optimized serial C++ code and also run on GPUs.