Why New Programming Languages for Simulation?
Abstract
Simulations are complicated, performance-critical applications that combine sophisticated computer science data structures with advanced mathematical computation. Best practice suggests using optimized linear algebra libraries, yet programmers of high- performance simulations invariably abandon this ideal in order to optimize computation around application data structures. Getting good performance requires a lot of human effort to manage data layout, vectorize, and parallelize code. And the situation is getting worse. High-performance systems in the near future will need to support concurrent execution on GPUs, multicore CPUs, a host of new architectures, and across distributed systems.
In response to similar trends, graphics researchers have proposed new programming languages to manage and abstract away from hardware complexity. Renderman [Upstill 1989], GPU Shading Languages, Cuda [Nvidia 2008], and more recently Halide [Ragan-Kelley et al. 2013] and Darkroom [Hegarty et al. 2014] are excellent examples. These languages promise considerable reductions in programmer effort, as reflected both by the amount of code that must be written and the degree to which programmers must optimize for specific hardware. We believe simulation is now primed to move to such programming languages. Although simulation is a complicated domain, we are starting to understand how to represent a large class of simulations with simple, general, and flexible high level programming language concepts built on solid foundations. We believe the ideas behind the relational algebra and modern databases have direct relevance to simulation, and we expect to see similar benefits to those the database community has accrued.
In these proceedings, two such languages are presented: Ebb [Bernstein et al. 2016] and Simit [Kjolstad et al. 2016]. These languages were developed independently by two separate groups centered at Stanford and MIT, and we believe they are first steps in a larger roadmap. We will let the articles speak for themselves on the strengths of their different operators and data structures. However, we encourage readers to note the common foundations we will lay out and join us in exploring a fascinating new research direction.
Article
BibTeX
@article{bernstein2016why,
title={Why New Programming Languages for Simulation?},
author={Gilbert Louis Bernstein and Fredrik Kjolstad},
journal={ACM Transactions on Graphics},
year={2016},
month={May}
}