Continuation-passing, closure-passing style
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiling collection-oriented languages onto massively parallel computers
Journal of Parallel and Distributed Computing - Massively parallel computation
Provably efficient scheduling for languages with fine-grained parallelism
Journal of the ACM (JACM)
More types for nested data parallel programming
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Euro-Par '98 Proceedings of the 4th International Euro-Par Conference on Parallel Processing
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
System F with type equality coercions
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Stream fusion: from lists to streams to nothing at all
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Space profiling for parallel functional programs
Journal of Functional Programming
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part II
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Implementation techniques for nested-data-parallel languages
Implementation techniques for nested-data-parallel languages
Nested data-parallelism on the gpu
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Work efficient higher-order vectorisation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Data-only flattening for nested data parallelism
Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
Flattening nested parallelism is a vectorising code transform that converts irregular nested parallelism into flat data parallelism. Although the result has good asymptotic performance, flattening thoroughly restructures the code. Many intermediate data structures and traversals are introduced, which may or may not be eliminated by subsequent optimisation. We present a novel program analysis to identify parts of the program where flattening would only introduce overhead, without appropriate gain. We present empirical evidence that avoiding vectorisation in these cases leads to more efficient programs than if we had applied vectorisation and then relied on array fusion to eliminate intermediates from the resulting code.