Functional Array Fusion (2001) [14 citations — 4 self]
Abstract:
This paper introduces a new approach to compiling array algorithms in functional languages. We are specifically aiming at an efficient implementation of irregular array algorithms that are hard to implement in conventional array languages such as Fortran. We optimise the storage layout of arrays containing complex data structures and reduce the runtime of functions operating on these arrays by means of equational program transformations. In particular, this paper discusses a novel form of combinator loop fusion, which by removing intermediate structures optimises the use of the memory hierarchy. We identify a combinator named loopP that provides a general scheme for iterating over an array and that in conjunction with an array constructor replicateP is sufficient to express a wide range of array algorithms. On this basis, we define equational transformation rules that combine traversals of loopP and replicateP as well as sequences of applications of loopP into a single loopP traversal.
Citations
| 128 | Programming parallel algorithms – Blelloch - 1996 |
| 87 | Retire Fortran? A Debate Rekindled – Cann - 1992 |
| 67 | Compiling collection-oriented languages onto massively parallel computers – Blelloch, Sabot - 1990 |
| 46 | Prefix sums and their applications – Blelloch - 1993 |
| 44 | Improving the Performance of Virtual Memory Computers – Abu-Sufah - 1979 |
| 22 | Compilation of haskell array comprehensions for scientific computing – Anderson, Hudak - 1990 |
| 19 | More types for nested data parallel programming – Chakravarty, Keller - 2000 |
| 16 | Segmented Operations for Sparse Matrix Computation on Vector Multiprocessors – Blelloch, Heroux, et al. |
| 6 | 2001, ‘Persistent Triangulations – Blelloch, Burch, et al. |
| 5 | How portable is nested data parallelism – Chakravarty, Keller - 1999 |
| 4 | Expressing irregular computations in modern Fortran dialects – Chatterjee, Prins, et al. - 1998 |

