Interprocedural dependence analysis and parallelization
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Automatic translation of FORTRAN programs to vector form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Arrays, non-determinism, side-effects, and parallelism: A functional perspective
Proc. of a workshop on Graph reduction
Proc. of a workshop on Graph reduction
Update analysis and the efficient implementation of functional aggregates
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Connection Machine Lisp: fine-grained parallel symbolic processing
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
The VAL Language: Description and Analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimizing supercompilers for supercomputers
Optimizing supercompilers for supercomputers
Interactive parallelization of numerical scientific programs
Interactive parallelization of numerical scientific programs
A programming language
Parallel programming with coordination structures
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the relation between functional and data parallel programming languages
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Defining, Analyzing, and Transforming Program Constructs
IEEE Parallel & Distributed Technology: Systems & Technology
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Merging compositions of array skeletons in SAC
Parallel Computing - Algorithmic skeletons
With-Loop scalarization – merging nested array operations
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Hi-index | 0.00 |
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.