The promotion and accumulation strategies in transformational programming
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Efficient Synthesis of Gaussian Filters by Cascaded Uniform Filters
IEEE Transactions on Pattern Analysis and Machine Intelligence
Formal Program Construction by Transformations-Computer-Aided, Intuition-Guided Programming
IEEE Transactions on Software Engineering
The synthesizer generator: a system for constructing language-based editors
The synthesizer generator: a system for constructing language-based editors
Program derivation by fixed point computation
Science of Computer Programming
Symbolic finite differencing, part I (invited lecture)
Proceedings of the third European symposium on programming on ESOP '90
KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
Automatic transformation of series expressions into loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
INC: a language for incremental computations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Uniform techniques for loop optimization
ICS '91 Proceedings of the 5th international conference on Supercomputing
Fortran at ten gigaflops: the connection machine convolution compiler
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Systems and programming issues in the design and use of a SIMD linear array for image processing
Systems and programming issues in the design and use of a SIMD linear array for image processing
A practical algorithm for exact array dependence analysis
Communications of the ACM
Safe fusion of functional expressions
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A general framework for iteration-reordering loop transformations
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Lazy array data-flow dependence analysis
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scalar replacement in the presence of conditional control flow
Software—Practice & Experience
Systematic derivation of incremental programs
Science of Computer Programming
ACM Computing Surveys (CSUR)
A general approach for run-time specialization and its application to C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
Static caching for incremental computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Constraint-based array dependence analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Finite Differencing of Computable Expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
An algorithm for reduction of operator strength
Communications of the ACM
Efficiency by Incrementalization: An Introduction
Higher-Order and Symbolic Computation
Exact analysis of the cache behavior of nested loops
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Program optimization using indexed and recursive data structures
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Compilation and delayed evaluation in APL
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Strengthening invariants for efficient computation
Science of Computer Programming
Accuracy and Stability of Numerical Algorithms
Accuracy and Stability of Numerical Algorithms
Mr. Babbage's Secret: The Tale of a Cipher-and APL
Mr. Babbage's Secret: The Tale of a Cipher-and APL
A Discipline of Programming
Synthesizing Transformations for Locality Enhancement of Imperfectly-Nested Loop Nests
International Journal of Parallel Programming
Inductively computable constructs in very high level languages
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Dynamic Programming via Static Incrementalization
Higher-Order and Symbolic Computation
Non-parametric Local Transforms for Computing Visual Correspondence
ECCV '94 Proceedings of the Third European Conference-Volume II on Computer Vision - Volume II
Deforestation: Transforming Programs to Eliminate Trees
ESOP '88 Proceedings of the 2nd European Symposium on Programming
Finding Legal Reordering Transformations Using Mappings
LCPC '94 Proceedings of the 7th International Workshop on Languages and Compilers for Parallel Computing
A hierarchical basis for reordering transformations
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Induction variables in very high level languages
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Dependence analysis for subscripted variables and its application to program transformations
Dependence analysis for subscripted variables and its application to program transformations
Individuating unknown objects by combining motion and stereo
Individuating unknown objects by combining motion and stereo
Incrementalization across object abstraction
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Image Tagging Using PageRank over Bipartite Graphs
Proceedings of the 30th DAGM symposium on Pattern Recognition
Caching and incrementalisation in the java query language
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
A Short Cut to Optimal Sequences
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
A quantitative study of reductions in algebraic libraries
Proceedings of the 4th International Workshop on Parallel and Symbolic Computation
Hi-index | 0.00 |
An aggregate array computation is a loop that computes accumulated quantities over array elements. Such computations are common in programs that use arrays, and the array elements involved in such computations often overlap, especially across iterations of loops, resulting in significant redundancy in the overall computations. This article presents a method and algorithms that eliminate such overlapping aggregate array redundancies and shows analytical and experimental performance improvements. The method is based on incrementalization, that is, updating the values of aggregate array computations from iteration to iteration rather than computing them from scratch in each iteration. This involves maintaining additional values not maintained in the original program. We reduce various analysis problems to solving inequality constraints on loop variables and array subscripts, and we apply results from work on array data dependence analysis. For aggregate array computations that have significant redundancy, incrementalization produces drastic speedup compared to previous optimizations; when there is little redundancy, the benefit might be offset by cache effects and other factors. Previous methods for loop optimizations of arrays do not perform incrementalization, and previous techniques for loop incrementalization do not handle arrays.