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.
If you would like to contact us about our work, please scroll down to the people section and click on one of the group leads' people pages, where you can reach out to them directly.