
User-friendly language for programming efficient simulations - muhic
http://news.mit.edu/2016/user-friendly-language-programming-efficient-simulations-0810
======
sanxiyn
It is worth noting that Simit shares an author with Halide: [http://halide-
lang.org/](http://halide-lang.org/)

I'd say Halide was definitely a success of domain specific high performance
language, so hopefully Simit is too.

~~~
fredrikbk
It actually shares two authors (Jon and Saman). Their work on Halide was
amazing!

~~~
iamcreasy
Could you please explain what's so special about Halide?

------
faizshah
Much more info on their site/github: [http://simit-
lang.org/language](http://simit-lang.org/language)

Also, the paper is available here: [http://simit-lang.org/tog16](http://simit-
lang.org/tog16)

------
santaclaus
Also coming out this year with the same goal is Ebb from Stanford:
[http://ebblang.org](http://ebblang.org)

Both languages look cool, but seem fairly limited at the moment -- they are
basically DSLs for assembling and solving PSD systems.

~~~
bmer
What does PSD stand for?

~~~
wfunction
Positive semi-definite, I believe.

------
pasbesoin
Server housing publication PDF's appears to have problems, at the moment.

Archived copies:

[http://wayback.archive.org/web/20160828234821/http://groups....](http://wayback.archive.org/web/20160828234821/http://groups.csail.mit.edu/commit/papers/2016/simit.pdf)

[http://wayback.archive.org/web/20160828234958/http://groups....](http://wayback.archive.org/web/20160828234958/http://groups.csail.mit.edu/commit/papers/2016/why.pdf)

------
lowestwhisper
A presentation of this work is available at:
[https://www.youtube.com/watch?v=raPkxhHy5ro](https://www.youtube.com/watch?v=raPkxhHy5ro)

------
hclgckxjtxjfxur
It seems like it would be much more straightforward to write a graph-based FEM
library for MATLAB than to make an entirely new language around a feature with
a very specific and very narrow use case. Still, the high performance aspects
of simit seem interesting, assuming that they weren't too badly cherrypicked.

~~~
fredrikbk
We needed new language constructs (the matrix assembly) and a new type system
for matrices that ties back to the graph to make it simple and fast. It is
also not limited to FEM codes. It can be used to write any application that
computes on sparse systems using linear algebra. Some application areas are
optimization, machine learning, data analytics, fluid dynamics, image
processing, and robotics.

For more information about the language, why it is designed the way it is, why
it is fast, and what applications it can be used for, see the talk I gave at
Microsoft Research last Friday:
[https://youtu.be/raPkxhHy5ro?t=40m32s](https://youtu.be/raPkxhHy5ro?t=40m32s)

~~~
bmer
This is really cool! You have coded up some timesteppers in Simit already; any
plans to release them as a standard package which would be officially
optimized, or do you mostly expect users to just roll their own as needed?

~~~
fredrikbk
Thanks! Yes, we have an `apps` directory in the source tree that we will add
programs to. These programs are tested by our test suites, and will later be
our performance regressions.

I'm actually working with some people at Adobe this summer to add Local-Global
Solvers for ARAP energies (an optimization code) to the set of applications we
provide there. We also have an implementation of PageRank.

