Compilation of Haskell array comprehensions for scientific computing
- 1 June 1990
- journal article
- conference paper
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 25 (6) , 137-149
- https://doi.org/10.1145/93548.93561
Abstract
Monolithic approaches to functional language arrays, such as Haskell array comprehensions , define elements all at once, at the time the array is created, instead of incrementally. Although monolithic arrays are elegant, a naive implementation can be very inefficient. For example, if a compiler does not know whether an element has zero or many definitions, it must compile runtime tests. If a compiler does not know inter-element data dependencies, it must resort to pessimistic strategies such as compiling elements as thunks, or making unnecessary copies when updating an array. Subscript analysis, originally developed for imperative language vectorizing and parallelizing compilers, can be adapted to provide a functional language compiler with the information needed for efficient compilation of monolithic arrays. Our contribution is to develop the number-theoretic basis of subscript analysis with assumptions appropriate to functional arrays, detail the kinds of dependence information subscript analysis can uncover, and apply that dependence information to sequential efficient compilation of functional arrays.This publication has 10 references indexed in Scilit:
- Report on the programming language HaskellACM SIGPLAN Notices, 1992
- Update analysis and the efficient implementation of functional aggregatesPublished by Association for Computing Machinery (ACM) ,1989
- Automatic translation of FORTRAN programs to vector formACM Transactions on Programming Languages and Systems, 1987
- Interprocedural dependence analysis and parallelizationPublished by Association for Computing Machinery (ACM) ,1986
- A semantic model of reference counting and its abstraction (detailed summary)Published by Association for Computing Machinery (ACM) ,1986
- Connection Machine LispPublished by Association for Computing Machinery (ACM) ,1986
- The VAL Language: Description and AnalysisACM Transactions on Programming Languages and Systems, 1982
- On the Performance Enhancement of Paging Systems Through Program Analysis and TransformationsIEEE Transactions on Computers, 1981
- Dependence graphs and compiler optimizationsPublished by Association for Computing Machinery (ACM) ,1981
- Time and Parallel Processor Bounds for Fortran-Like LoopsIEEE Transactions on Computers, 1979