Ropes: an alternative to strings
Software—Practice & Experience
Programming parallel algorithms
Communications of the ACM
The Definition of Standard ML
Nepal - Nested Data Parallelism in Haskell
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
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)
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
MapReduce: simplified data processing on large clusters
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Scan primitives for GPU computing
Proceedings of the 22nd ACM SIGGRAPH/EUROGRAPHICS symposium on Graphics hardware
Status report: the manticore project
ML '07 Proceedings of the 2007 workshop on Workshop on ML
Space profiling for parallel functional programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Harnessing the Multicores: Nested Data Parallelism in Haskell
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Effective scheduling techniques for high-level parallel programming languages
Effective scheduling techniques for high-level parallel programming languages
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part II
Implementation techniques for nested-data-parallel languages
Implementation techniques for nested-data-parallel languages
Proceedings of the 2012 Haskell Symposium
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
Hi-index | 0.00 |
Data parallelism has proven to be an effective technique for high-level programming of a certain class of parallel applications, but it is not well suited to irregular parallel computations. Blelloch and others proposed nested data parallelism (NDP) as a language mechanism for programming irregular parallel applications in a declarative data-parallel style. The key to this approach is a compiler transformation that flattens the NDP computation and data structures into a form that can be executed efficiently on a wide-vector SIMD architecture. Unfortunately, this technique is ill suited to execution on today's multicore machines. We present a new technique, called data-only flattening, for the compilation of NDP, which is suitable for multicore architectures. Data-only flattening transforms nested data structures in order to expose programs to various optimizations while leaving control structures intact. We present a formal semantics of data-only flattening in a core language with a rewriting system. We demonstrate the effectiveness of this technique in the Parallel ML implementation and we report encouraging experimental results across various benchmark applications.