Abstract
Existing approaches to higher-order vectorisation, also known as flattening nested data parallelism, do not preserve the asymptotic work complexity of the source program. Straightforward examples, such as sparse matrix-vector multiplication, can suffer a severe blow-up in both time and space, which limits the practicality of this method. We discuss why this problem arises, identify the mis-handling of index space transforms as the root cause, and present a solution using a refined representation of nested arrays. We have implemented this solution in Data Parallel Haskell (DPH) and present benchmarks showing that realistic programs, which used to suffer the blow-up, now have the correct asymptotic work complexity. In some cases, the asymptotic complexity of the vectorised program is even better than the original.
Original language | English |
---|---|
Title of host publication | ICFP'12 - Proceedings of the 2012 ACM SIGPLAN International Conference on Functional Programming |
Pages | 259-270 |
Number of pages | 12 |
DOIs | |
Publication status | Published - 22 Oct 2012 |
Externally published | Yes |
Event | 17th ACM SIGPLAN International Conference on Functional Programming, ICFP 2012 - Copenhagen, Denmark Duration: 9 Sept 2012 → 15 Sept 2012 |
Conference
Conference | 17th ACM SIGPLAN International Conference on Functional Programming, ICFP 2012 |
---|---|
Country/Territory | Denmark |
City | Copenhagen |
Period | 9/09/12 → 15/09/12 |
Keywords
- arrays
- data parallelism
- haskell