Hi,
In my opinion: OptiML and Delite are less polished, less focused on
deep networks, and more flexible. Most of these systems are based on
a data-flow graph and can execute the graph (or portions of it) on
multiple architectures. OptiML / Delite build the data-flow graph
using LMS (
https://scala-lms.github.io/), which is easily
customizable and extendable. Furthermore, Delite is based on a
parallel pattern intermediate representation (IR) with relatively
strong theoretical foundations and that is amenable to significant
analysis and optimization. These two things allow us to provide, out
of the box, several optimizations that most other libraries don't
perform. For example, our loop fusion algorithm is more aggressive
and general then most, and we also perform automatic array-of-struct
to struct-of-array conversion. Both of these can have huge impacts
on execution time.
We ride on Scala for the front-end, which is both a blessing and a
curse. The blessing is that we inherit a strong type system and
well-known syntax, and can invest all of our time into improving the
back-end. The curse is that we often exhibit error messages and
corner cases in the Scala compiler that are more confusing than
other frameworks. One important advantage of OptiML is that, because
we are based on LMS, we inherit most of the high-level abstractions
of Scala, but we don't pay a performance penalty for them, because
these abstractions are compiled away (see the papers on LMS and
Delite for more information). Side-by-side experiments comparing
results using a Scala multi-threaded library and an OptiML program
show that this can make a huge difference.
At this stage, OptiML / Delite is a great choice for a research
vehicle, because there is so much you can customize and extend
without having to dig too deeply into the internals (e.g. there are
built-in mechanisms for adding a new compiler pass). It is also a
great choice if you want to get the best performance on a single
machine (multicore or NUMA) using a high-level language. There is
still a ways to go for us before it becomes a great choice as a
production-ready framework that can compete with the others in
user-friendliness.
Hope that helps. CCing delite-devel in case others there are
interesting in adding their thoughts.
cheers,
Arvind