What do you think of the strength of OptiML(Delite) over Torch, or TensorFlow, and etc. ?

56 views
Skip to first unread message

Qi Qi

unread,
Nov 13, 2015, 10:05:06 AM11/13/15
to OptiML
Hello,

I program in Scala, and it led me to Delite.
I wanted to ask this question -- what is the strength of OptiML(Delite) over other frameworks such as Torch, TensorFlow and so on? 


Arvind Sujeeth

unread,
Nov 15, 2015, 10:59:05 AM11/15/15
to opt...@googlegroups.com, delite...@googlegroups.com
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
--
You received this message because you are subscribed to the Google Groups "OptiML" group.
To unsubscribe from this group and stop receiving emails from it, send an email to optiml+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Arvind Sujeeth

unread,
Nov 16, 2015, 7:51:39 PM11/16/15
to opt...@googlegroups.com
Yes, both OptiML and Delite are being actively developed. There are no plans to move away from Scala. We are, however, working on using macros instead of the slightly modified Scala-virtualized compiler, so that the regular Scala compiler can be used moving forward. This effort is going well and should make OptiML / Delite easier to adopt.

Arvind

On 11/15/15 6:52 PM, Qi Qi wrote:
Thanks, Arvind. 

It seems to me that Delite allows to design new DSLs with embedded custom optimisations. I'm not sure about other frameworks for this point.
Is the development of Delite or OptiML being active, and will it continue to ride on Scala in future?

Qi
Reply all
Reply to author
Forward
0 new messages