OptiML is a domain-specific language for machine learning written in Scala. This project primarily explores how scalable data and task parallelism can be implicitly extracted out of high level abstractions such as vectors, matrices, factor graphs, decision trees, and neural networks. The other major goal of OptiML is to encode domain knowledge about machine learning to design static and dynamic optimizations, efficient memory layouts, and the efficient use of bandwidth between potentially heterogeneous compute targets, into the language abstractions in a way that is transparent to the user.
OptiML strives to incorporate straightforward, MATLAB-like syntax that ML users are familiar with. OptiML allows programmers using the DSL to focus on high-level algorithm and application development, leveraging Scala's powerful productivity features, such as functional and imperative styles, static typing, type inference, and implicit parameters. Furthermore, OptiML is the first DSL written in the Delite framework and is a driving application domain for Delite's parallel and heterogeneous compiler and runtime. The integration between OptiML and Delite pushes difficult research questions; for example, what are the effective ways for DSL authors to describe data decomposition transparent to the underlying hardware, and how can kernels be written and scheduled to make use of an accelerator (e.g. a GPU) over the course of an application's execution.OptiML publications | OptiML alpha release