Theory of linear and integer programming
Theory of linear and integer programming
Strategies for cache and local memory management by global program transformation
Journal of Parallel and Distributed Computing - Special Issue on Languages, Compilers and environments for Parallel Programming
Scanning polyhedra with DO loops
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
A practical algorithm for exact array dependence analysis
Communications of the ACM
Processor allocation and loop scheduling on multiprocessor computers
ICS '92 Proceedings of the 6th international conference on Supercomputing
A framework for unifying reordering transformations
A framework for unifying reordering transformations
Determining schedules based on performance estimation
Determining schedules based on performance estimation
Static analysis of upper and lower bounds on dependences and parallelism
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simplifying polynomial constraints over integers to make dependence analysis more precise
Simplifying polynomial constraints over integers to make dependence analysis more precise
Estimation of Nested Loops Execution Time by Integer Arithmetic in Convex Polyhedra
Proceedings of the 8th International Symposium on Parallel Processing
On Estimating and Enhancing Cache Effectiveness
Proceedings of the Fourth International Workshop on Languages and Compilers for Parallel Computing
An Exact Method for Analysis of Value-based Array Data Dependences
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
Symbolic Analysis: A Basis for Parallelization, Optimization, and Scheduling of Programs
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
A simple algorithm for the generation of efficient loop structures
PACT '95 Proceedings of the IFIP WG10.3 working conference on Parallel architectures and compilation techniques
Symbolic analysis for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Minimizing communication while preserving parallelism
ICS '96 Proceedings of the 10th international conference on Supercomputing
ICS '96 Proceedings of the 10th international conference on Supercomputing
Compile-time minimisation of load imbalance in loop nests
ICS '97 Proceedings of the 11th international conference on Supercomputing
Precise miss analysis for program transformations with caches of arbitrary associativity
Proceedings of the eighth international conference on Architectural support for programming languages and operating systems
Efficient Symbolic Analysis for Parallelizing Compilers and Performance Estimators
The Journal of Supercomputing
Parametric Analysis of Polyhedral Iteration Spaces
Journal of VLSI Signal Processing Systems - Special issue on application specific systems, architectures and processors
Exact memory size estimation for array computations without loop unrolling
Proceedings of the 36th annual ACM/IEEE Design Automation Conference
Cache miss equations: a compiler framework for analyzing and tuning memory behavior
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reducing memory requirements of nested loops for embedded systems
Proceedings of the 38th annual Design Automation Conference
Exact analysis of the cache behavior of nested loops
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Achieving Scalable Locality with Time Skewing
International Journal of Parallel Programming
Array recovery and high-level transformations for DSP applications
ACM Transactions on Embedded Computing Systems (TECS)
A Compile-Time Partitioning Strategy for Non-Rectangular Loop Nests
IPPS '97 Proceedings of the 11th International Symposium on Parallel Processing
Counting the Solutions of Presburger Equations without Enumerating Them
CIAA '01 Revised Papers from the 6th International Conference on Implementation and Application of Automata
Using Canonical Representations of Solutions to Speed Up Infinite-State Model Checking
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
A Quantitative Analysis of Tile Size Selection Algorithms
The Journal of Supercomputing
Compilation of a specialized functional language for massively parallel computers
Journal of Functional Programming
Tuning In-Sensor Data Filtering to Reduce Energy Consumption in Wireless Sensor Networks
Proceedings of the conference on Design, automation and test in Europe - Volume 2
A fast and accurate framework to analyze and optimize cache memory behavior
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient and Accurate Analytical Modeling of Whole-Program Data Cache Behavior
IEEE Transactions on Computers
Counting the solutions of Presburger equations without enumerating them
Theoretical Computer Science - Implementation and application automata
Tuning data replication for improving behavior of MPSoC applications
Proceedings of the 14th ACM Great Lakes symposium on VLSI
A unified framework for nonlinear dependence testing and symbolic analysis
Proceedings of the 18th annual international conference on Supercomputing
Analytical computation of Ehrhart polynomials: enabling more compiler analyses and optimizations
Proceedings of the 2004 international conference on Compilers, architecture, and synthesis for embedded systems
Line Size Adaptivity Analysis of Parameterized Loop Nests for Direct Mapped Data Cache
IEEE Transactions on Computers
A Complete Compiler Approach to Auto-Parallelizing C Programs for Multi-DSP Systems
IEEE Transactions on Parallel and Distributed Systems
Arithmetic, first-order logic, and counting quantifiers
ACM Transactions on Computational Logic (TOCL)
Generating cache hints for improved program efficiency
Journal of Systems Architecture: the EUROMICRO Journal
Exploiting last idle periods of links for network power management
Proceedings of the 5th ACM international conference on Embedded software
Functional declarative language design and predicate calculus: a practical approach
ACM Transactions on Programming Languages and Systems (TOPLAS)
Temperature-Sensitive Loop Parallelization for Chip Multiprocessors
ICCD '05 Proceedings of the 2005 International Conference on Computer Design
A general approach for partitioning N-dimensional parallel nested loops with conditionals
Proceedings of the eighteenth annual ACM symposium on Parallelism in algorithms and architectures
Memory optimization by counting points in integer transformations of parametric polytopes
CASES '06 Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems
Performance aware secure code partitioning
Proceedings of the conference on Design, automation and test in Europe
Computation of storage requirements for multi-dimensional signal processing applications
IEEE Transactions on Very Large Scale Integration (VLSI) Systems
A practical and precise inference and specializer for array bound checks elimination
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
Optimizing shared cache behavior of chip multiprocessors
Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture
Cache vulnerability equations for protecting data in embedded processor caches from soft errors
Proceedings of the ACM SIGPLAN/SIGBED 2010 conference on Languages, compilers, and tools for embedded systems
Advanced symbolic analysis for compilers: new techniques and algorithms for symbolic program analysis and optimization
Symbolic and analytic techniques for resource analysis of java bytecode
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
An efficient algorithm for parametric WCET calculation
Journal of Systems Architecture: the EUROMICRO Journal
Symbolic analysis of imperative programming languages
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Experiences with enumeration of integer projections of parametric polytopes
CC'05 Proceedings of the 14th international conference on Compiler Construction
Extending the applicability of scalar replacement to multiple induction variables
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
The timer cascade: functional modelling and real time calculi
ICTAC'05 Proceedings of the Second international conference on Theoretical Aspects of Computing
Counting models in integer domains
SAT'06 Proceedings of the 9th international conference on Theory and Applications of Satisfiability Testing
A symbolic analysis framework for static analysis of imperative programming languages
Journal of Systems and Software
Integer affine transformations of parametric ℤ-polytopes and applications to loop nest optimization
ACM Transactions on Architecture and Code Optimization (TACO)
Presburger arithmetic, rational generating functions, and quasi-polynomials
ICALP'13 Proceedings of the 40th international conference on Automata, Languages, and Programming - Volume Part II
Hi-index | 0.01 |
We describe methods that are able to count the number of integer solutions to selected free variables of a Presburger formula, or sum a polynomial over all integer solutions of selected free variables of a Presburger formula. This answer is given symbolically, in terms of symbolic constants (the remaining free variables in the Presburger formula).For example, we can create a Presburger formula who's solutions correspond to the iterations of a loop. By counting these, we obtain an estimate of the execution time of the loop.In more complicated applications, we can create Presburger formulas who's solutions correspond to the distinct memory locations or cache lines touched by a loop, the flops executed by a loop, or the array elements that need to be communicated at a particular point in a distributed computation. By counting the number of solutions, we can evaluate the computation/memory balance of a computation, determine if a loop is load balanced and evaluate message traffic and allocate message buffers.