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