Parallelization of divide-and-conquer by translation to nested loops

CHRISTOPH A. HERRMANN, CHRISTIAN LENGAUER
1999 Journal of functional programming  
We present a hierarchical classification of specializations of the divide-and-conquer paradigm. The aim is to identify a subclass of divide-and-conquer algorithms with an efficient parallel implementation which can be viewed as a static space-time mapping. The specializations impose a balanced call tree, a fixed degree of the problem division, and elementwise operations. The correctness of our compile-time transformations is proved by equational reasoning in Haskell; recursion and iteration are
more » ... handled by induction. We demonstrate the practicality of the skeleton by some examples, one of which is Strassen's matrix multiplication. Capsule Review The divide-and-conquer paradigm is simple and intuitive, but has subtle technical dimensions when studied closely. This paper describes a variety of divide-and-conquer strategies (expressed as 'skeletons' in Haskell), proves various properties/equivalences amongst them, and shows how to translate them into iterative loops in C for execution on either sequential or parallel architectures. Although the number of different versions of the paradigm may seem daunting, their definition and use is well motivated, and their interrelations are carefully defined.
doi:10.1017/s0956796899003287 fatcat:ywez4nexifec7gjtjp54zpzu5y