Getting to the Point with Dex: Safe Parallel Programming for Scientific Applications
Adam Paszke ( Google )
The talk will be focused on the design of Dex, both in terms of the surface syntax and its typing discipline. Dex is a new domain specific programming language aiming to make it easier to implement parallel scientific computing workloads in a clear and safe way, while being able to achieve the efficiency of low-level numerical languages. The core idea underlying its design is the treatment of arrays as memoized representations of functions with finite domains, allowing abstract function manipulations, such as currying or abstraction, to work on arrays. Additionally, instead of following the well-trodden path of bulk-array combinators, we argue for a programming style heavy on explicit array indexing, that closely mirrors function applications. We associate the classical bulk-array programming with “pointfree” style of functional programming and try to rebuild the array paradigm in an (arguably more popular) “pointful” style instead. For increased expressiveness and efficiency (especially under automatic differentiation), we additionally extend the language with a fine-grained effect system that allows us to reason about performance in a type-directed way.