Detecting global variables in denotational specifications
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Arrays, non-determinism, side-effects, and parallelism: A functional perspective
Proc. of a workshop on Graph reduction
Proc. of a workshop on Graph reduction
Copy elimination in single assignment languages
Copy elimination in single assignment languages
Copy elimination in functional languages
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Vector models for data-parallel computing
Vector models for data-parallel computing
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
A compositional analysis of evaluation-order and its application
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Update analysis and the efficient implementation of functional aggregates
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Replacing function parameters by global variables
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Globalization and live variables
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Assignments for applicative languages
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Syntactic detection of single-threading using continuations
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Retire Fortran?: a debate rekindled
Communications of the ACM
Scientific computing: an introduction with parallel computing
Scientific computing: an introduction with parallel computing
On expressing the mutation of state in a functional programming language
On expressing the mutation of state in a functional programming language
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Efficient array update analysis of strict functional languages
Efficient array update analysis of strict functional languages
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
I-structures: Data structures for parallel computing
Proceedings of the Workshop on Graph Reduction
Compilation techniques for high-performance applicative computation
Compilation techniques for high-performance applicative computation
Path analysis and the optimization of nonstrict functional languages
Path analysis and the optimization of nonstrict functional languages
Analysis-based program transformations
ACM SIGSOFT Software Engineering Notes
Resource-Passing Concurrent Programming
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Set constraints for destructive array update optimization
Journal of Functional Programming
Hi-index | 0.00 |
In our recent paper, we gave an efficient interprocedural update analysis algorithm for strict functional languages with flat arrays and sequential evaluation. In this paper, we show that the same algorithm extends to a parallel functional language with additional constructs for partitioning and combining arrays. Even with parallel evaluation, the complexity of the analysis remains polynomial. The analysis has been implemented and the results show that several numerical algorithms such as direct and iterative methods for solving linear equations, LU, Cholesky, and QR factorizations, multigrid methods for solving partial differential equations, and non-numeric algorithms such as sorting can be implemented functionally with all updates made destructive. We describe a new array construct to specify a collection of updates on an array and show that problems like histogram, inverse permutation, and polynomial multiplication have efficient parallel functional solutions. Monolithic array operators can be considered as a special case of this new construct.