Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Supercompilers for parallel and vector computers
Supercompilers for parallel and vector computers
Experiences using control dependence in PTRAN
Selected papers of the second workshop on Languages and compilers for parallel computing
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software Specialization Via Symbolic Execution
IEEE Transactions on Software Engineering
Mathematica: a system for doing mathematics by computer (2nd ed.)
Mathematica: a system for doing mathematics by computer (2nd ed.)
A practical algorithm for exact array dependence analysis
Communications of the ACM
Delinearization: an efficient way to break multiloop dependence equations
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Concurrency: Practice and Experience
Automatic data partitioning on distributed memory multicomputers
Automatic data partitioning on distributed memory multicomputers
Simplifying polynomial constraints over integers to make dependence analysis more precise
Simplifying polynomial constraints over integers to make dependence analysis more precise
Beyond induction variables: detecting and classifying sequences using a demand-driven SSA form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Gated SSA-based demand-driven symbolic analysis for parallelizing compilers
ICS '95 Proceedings of the 9th international conference on Supercomputing
Advanced compilation techniques in the PARADIGM compiler for distributed-memory multicomputers
ICS '95 Proceedings of the 9th international conference on Supercomputing
Symbolic analysis for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic array privatization and demand-driven symbolic analysis
Automatic array privatization and demand-driven symbolic analysis
Constraint-based array dependence analysis
Constraint-based array dependence analysis
Interprocedural array region analyses
International Journal of Parallel Programming - Special issue: selected papers from the eighth international workshop on languages and compilers for parallel computing
Journal of Parallel and Distributed Computing
Experience with efficient array data flow analysis for array privatization
PPOPP '97 Proceedings of the sixth ACM SIGPLAN symposium on Principles and practice of parallel programming
Symbolic analysis techniques for program parallelization
Future Generation Computer Systems - Special issue on HPCN '97
Efficient Symbolic Analysis for Parallelizing Compilers and Performance Estimators
The Journal of Supercomputing
Fortran 90/95 explained (2nd ed.)
Fortran 90/95 explained (2nd ed.)
Buffer-safe and cost-driven communication optimization
Journal of Parallel and Distributed Computing
Symbolic pointer analysis for detecting memory leaks
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Symbolic Cache Analysis for Real-Time Systems
Real-Time Systems - Special issue on worst-case execution-time analysis
Some Techniques for Solving Recurrences
ACM Computing Surveys (CSUR)
Symbolic execution and program testing
Communications of the ACM
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Automatic Performance Prediction of Parallel Programs
Automatic Performance Prediction of Parallel Programs
Symbolic Analysis for Parallelizing Compilers
Symbolic Analysis for Parallelizing Compilers
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Interactive Parallel Programming using the ParaScope Editor
IEEE Transactions on Parallel and Distributed Systems
Performance Analysis of Parallelizing Compilers on the Perfect Benchmarks Programs
IEEE Transactions on Parallel and Distributed Systems
Toward Symbolic Performance Prediction of Parallel Programs
IPPS '96 Proceedings of the 10th International Parallel Processing Symposium
An Exact Method for Analysis of Value-based Array Data Dependences
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
Automatic Support for Data Distribution on Distributed Memory Multiprocessor Systems
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
Polaris: Improving the Effectiveness of Parallelizing Compilers
LCPC '94 Proceedings of the 7th International Workshop on Languages and Compilers for Parallel Computing
Demand-Driven, Symbolic Range Propagation
LCPC '95 Proceedings of the 8th International Workshop on Languages and Compilers for Parallel Computing
Qualifying reusable functions using symbolic execution
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Interprocedural symbolic analysis
Interprocedural symbolic analysis
VFC: The Vienna Fortran Compiler
Scientific Programming
Symbolic Communication Set Generation for Irregular Parallel Applications
The Journal of Supercomputing
A unified framework for nonlinear dependence testing and symbolic analysis
Proceedings of the 18th annual international conference on Supercomputing
XARK: An extensible framework for automatic recognition of computational kernels
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Framework for CFG-Based Static Program Analysis of Ada Programs
Ada-Europe '08 Proceedings of the 13th Ada-Europe international conference on Reliable Software Technologies
A new elimination-based data flow analysis framework using annotated decomposition trees
CC'07 Proceedings of the 16th international conference on Compiler construction
Advanced symbolic analysis for compilers: new techniques and algorithms for symbolic program analysis and optimization
Program parallelization using synchronized pipelining
LOPSTR'09 Proceedings of the 19th international conference on Logic-Based Program Synthesis and Transformation
Hi-index | 0.00 |
The quality of many optimizations and analyses of parallelizing compilers depends significantly on the ability to evaluate symbolic expressions and on the amount of information available about program variables at arbitrary program points. In this paper, we describe an effective and unified symbolic evaluation framework that statically determines the values of variables and symbolic expressions, assumptions about and constraints between variable values, and the condition under which control flow reaches a program statement. We introduce the program context, a novel representation for comprehensive and compact control and data flow analysis information. Program contexts are described as first order logic formulas, which allows us to use public domain software for standard symbolic manipulation. Computations are represented as algebraic expressions defined over a program's problem size. Our symbolic evaluation techniques comprise accurate modeling of assignment and input/output statements, branches, loops, recurrences, arrays, and procedures. All of our techniques target both linear, as well as nonlinear, expressions and constraints. Efficiency of symbolic evaluation is highly improved by aggressive simplification techniques. A variety of examples, including program verification, dependence analysis, array privatization, communication vectorization, and elimination of redundant communication, are used to illustrate the effectiveness of our approach. We present results from a preliminary implementation of our framework, which is used as part of a parallelizing compiler that demonstrates the potential performance gains achievable by employing symbolic evaluation to support program parallelization.