Practical Parallel Array Fusion with Repa
YOW! Lambda Jam 2013
Array fusion is an approach to writing numerical code that allows the program to be written in terms of high-level bulk array combinators (map, fold, filter etc) but then compiled down to efficient object code. If done correctly, the resulting code can run as fast as hand written loops expressed in imperative languages. Repa-style array fusion is one method that also provides parallel evaluation without the programmer needing to write anything extra to enable it. In effect, array fusion converts the program you want to write into the one you want to run. I’ll discuss how Repa-style array fusion works, covering enough technical detail so that client programmers can reliably get good performance out of their own programs. I’ll also discuss the limitations inherent in the fusion model, to give a feel for how much performance can reasonably be expected.
I am a programming languages researcher and compiler engineer. Most of my work has been in the fields of type theory, stream fusion and parallel programming. Until recently I worked at Digital Asset in smart contract languages, and am an an adjunct at the University of New South Wales.