Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Compiling collection-oriented languages onto massively parallel computers
Journal of Parallel and Distributed Computing - Massively parallel computation
Retire Fortran?: a debate rekindled
Communications of the ACM
Transforming high-level data-parallel programs into vector operations
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Programming parallel algorithms
Communications of the ACM
A provable time and space efficient implementation of NESL
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Foundations of programming languages
Foundations of programming languages
Space-efficient implementation of nested parallelism
PPOPP '97 Proceedings of the sixth ACM SIGPLAN symposium on Principles and practice of parallel programming
A new approach to generic functional programming
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
APL '98 Proceedings of the APL98 conference on Array processing language
Costing parallel programs as a function of shapes
Science of Computer Programming - Special issue on mathematics of program construction
On the Distribution Implementation of Aggregate Data Structures by Program Transformation
Proceedings of the 11 IPPS/SPDP'99 Workshops Held in Conjunction with the 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing
A Calculational Approach to Flattening Nested Data Parallelism in Functional Languages
ASIAN '96 Proceedings of the Second Asian Computing Science Conference on Concurrency and Parallelism, Programming, Networking, and Security
Euro-Par '98 Proceedings of the 4th International Euro-Par Conference on Parallel Processing
Work-efficient nested data-parallelism
FRONTIERS '95 Proceedings of the Fifth Symposium on the Frontiers of Massively Parallel Computation (Frontiers'95)
Aspects of the Compilation of Nested Parallel Imperative Languages
MPPM '97 Proceedings of the Conference on Massively Parallel Programming Models
Provably correct vectorization of nested-parallel programs
PMMP '95 Proceedings of the conference on Programming Models for Massively Parallel Computers
PMMP '95 Proceedings of the conference on Programming Models for Massively Parallel Computers
Generalizing generalized tries
Journal of Functional Programming
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Nepal - Nested Data Parallelism in Haskell
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
MPC '02 Proceedings of the 6th International Conference on Mathematics of Program Construction
Parallel and Distributed Haskells
Journal of Functional Programming
Science of Computer Programming - Special issue on mathematics of program construction (MPC 2002)
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Manticore: a heterogeneous parallel language
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Status report: the manticore project
ML '07 Proceedings of the 2007 workshop on Workshop on ML
Implicitly-threaded parallelism in Manticore
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Space profiling for parallel functional programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Selective tail call elimination
SAS'03 Proceedings of the 10th international conference on Static analysis
A tutorial on parallel and concurrent programming in Haskell
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Programming in Manticore, a heterogenous parallel functional language
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Space profiling for parallel functional programs
Journal of Functional Programming
Implicitly threaded parallelism in manticore
Journal of Functional Programming
Haskell boards the ferry: database-supported program execution for Haskell
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part II
Proceedings of the 2012 Haskell Symposium
Algebraic data types for language-integrated queries
DDFP '13 Proceedings of the 2013 workshop on Data driven functional programming
Hi-index | 0.00 |
This paper generalises the flattening transformation---a technique for the efficient implementation of nested data parallelism---and reconciles it with main stream functional programming. Nested data parallelism is significantly more expressive and convenient to use than the flat data parallelism typically used in conventional parallel languages like High Performance Fortran and C*. The flattening transformation of Blelloch and Sabot is a key technique for the efficient implementation of nested parallelism via flat parallelism, but originally it was severely restricted, as it did not permit general sum types, recursive types, higher-order functions, and separate compilation. Subsequent work, including some of our own, generalised the transformation and allowed higher-order functions and recursive types. In this paper, we take the final step of generalising flattening to cover the full range of types available in modern languages like Haskell and ML; furthermore, we enable the use of separate compilation. In addition, we present a completely new formulation of the transformation, which is based on the standard lambda calculus notation, and replace a previously ad-hoc transformation step by a systematic generic programming technique. First experiments demonstrate the efficiency of our approach.