Data parallel Haskell: a status report

We describe the design and current status of our effort to implement the programming model of nested data parallelism into the Glasgow Haskell Compiler. We extended the original programming model and its implementation, both of which were first popularised by the NESL language, in terms of expressiveness as well as efficiency. Our current aim is to provide a convenient programming environment for SMP parallelism, and especially multicore architectures. Preliminary benchmarks show that we are, at least for some programs, able to achieve good absolute performance and excellent speedups.

[1]  Guy E. Blelloch,et al.  Implementation of a portable nested data-parallel language , 1993, PPOPP '93.

[2]  Simon L. Peyton Jones,et al.  A short cut to deforestation , 1993, FPCA '93.

[3]  Simon L. Peyton Jones,et al.  Associated type synonyms , 2005, ICFP '05.

[4]  Sven-Bodo Scholz,et al.  Single Assignment C: efficient support for high-level array operations in a functional setting , 2003, Journal of Functional Programming.

[5]  Guy E. Blelloch,et al.  Programming parallel algorithms , 1996, CACM.

[6]  Manuel M. T. Chakravarty,et al.  Functional array fusion , 2001, ICFP '01.

[7]  Manuel M. T. Chakravarty,et al.  On the Distribution Implementation of Aggregate Data Structures by Program Transformation , 1999, IPPS/SPDP Workshops.

[8]  Simon L. Peyton Jones,et al.  Compiling Haskell by Program Transformation: A Report from the Trenches , 1996, ESOP.

[9]  John H. Reppy,et al.  Manticore: a heterogeneous parallel language , 2007, DAMP '07.

[10]  Roman Leshchinskiy,et al.  Rewriting Haskell Strings , 2007, PADL.

[11]  Manuel M. T. Chakravarty,et al.  Higher Order Flattening , 2006, International Conference on Computational Science.

[12]  Simon L. Peyton Jones,et al.  System F with type equality coercions , 2007, TLDI '07.

[13]  K. Kennedy,et al.  Loop Fusion in High Performance Fortran Loop Fusion in High Performance Fortran , 1998 .

[14]  Hans-Wolfgang Loidl,et al.  Algorithm + strategy = parallelism , 1998, Journal of Functional Programming.

[15]  Manuel M. T. Chakravarty,et al.  More types for nested data parallel programming , 2000, ICFP '00.

[16]  Simon Peyton Jones,et al.  Playing by the rules: rewriting as a practical optimisation technique in GHC , 2001 .

[17]  Simon L. Peyton Jones,et al.  Unboxed Values as First Class Citizens in a Non-Strict Functional Language , 1991, FPCA.

[18]  Lawrence Snyder,et al.  The implementation and evaluation of fusion and contraction in array languages , 1998, PLDI '98.

[19]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[20]  Simon L. Peyton Jones,et al.  State in Haskell , 1995, LISP Symb. Comput..

[21]  Daniel W. Palmer,et al.  Work-efficient nested data-parallelism , 1995, Proceedings Frontiers '95. The Fifth Symposium on the Frontiers of Massively Parallel Computation.

[22]  Naraig Manjikian,et al.  Combining loop fusion with prefetching on shared-memory multiprocessors , 1997, Proceedings of the 1997 International Conference on Parallel Processing (Cat. No.97TB100162).

[23]  Ken Kennedy,et al.  Maximizing Loop Parallelism and Improving Data Locality via Loop Fusion and Distribution , 1993, LCPC.

[24]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[25]  Guy E. Blelloch,et al.  Implementation of a portable nested data-parallel language , 1993, PPOPP '93.

[26]  Simon L. Peyton Jones,et al.  Algorithms + Strategy = Parallelism , 1998, J. Funct. Program..

[27]  Simon L. Peyton Jones,et al.  Associated types with class , 2005, POPL '05.

[28]  Simon L. Peyton Jones,et al.  Secrets of the Glasgow Haskell Compiler inliner , 2002, Journal of Functional Programming.

[29]  Josef Svenningsson Shortcut fusion for accumulating parameters & zip-like functions , 2002, ICFP '02.

[30]  Youfeng Wu,et al.  Optimizing Data Parallel Operations on Many-Core Platforms , 2006 .

[31]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1988, Theoretical Computer Science.