Automatic construction of systems of recurrence relations
USSR Computational Mathematics and Mathematical Physics
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Automatic recognition of induction variables and recurrence relations by abstract interpretation
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Automated program recognition: a feasibility demonstration
Artificial Intelligence
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
CMAX: a Fortran translator for the connection machine system
ICS '93 Proceedings of the 7th international conference on Supercomputing
Program optimization and parallelization using idioms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallelizing complex scans and reductions
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
The Polaris internal representation
International Journal of Parallel Programming
Beyond induction variables: detecting and classifying sequences using a demand-driven SSA form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simplification and optimization transformations of chains of recurrences
ISSAC '95 Proceedings of the 1995 international symposium on Symbolic and algebraic computation
Gated SSA-based demand-driven symbolic analysis for parallelizing compilers
ICS '95 Proceedings of the 9th international conference on Supercomputing
Idiom recognition in the Polaris parallelizing compiler
ICS '95 Proceedings of the 9th international conference on Supercomputing
Symbolic analysis for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Detection and global optimization of reduction operations for distributed parallel machines
ICS '96 Proceedings of the 10th international conference on Supercomputing
Array SSA form and its use in parallelization
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Advanced compiler design and implementation
Advanced compiler design and implementation
A unified semantic approach for the vectorization and parallelization of generalized reductions
ICS '89 Proceedings of the 3rd international conference on Supercomputing
A Unified Symbolic Evaluation Framework for Parallelizing Compilers
IEEE Transactions on Parallel and Distributed Systems
Monotonic evolution: an alternative to induction variable substitution for dependence analysis
ICS '01 Proceedings of the 15th international conference on Supercomputing
Optimizing compilers for modern architectures: a dependence-based approach
Optimizing compilers for modern architectures: a dependence-based approach
High Performance Compilers for Parallel Computing
High Performance Compilers for Parallel Computing
Parallel Programming with Polaris
Computer
Knowledge-Based Program Analysis
IEEE Software
A Framework for Source Code Search Using Program Patterns
IEEE Transactions on Software Engineering
Recognizing and Parallelizing Bounded Recurrences
Proceedings of the Fourth International Workshop on Languages and Compilers for Parallel Computing
Detection of Recurrences in Sequential Programs with Loops
PARLE '93 Proceedings of the 5th International PARLE Conference on Parallel Architectures and Languages Europe
Enhancing Parallelism by Removing Cyclic Data Dependencies
PARLE '94 Proceedings of the 6th International PARLE Conference on Parallel Architectures and Languages Europe
A GSA-based compiler infrastructure to extract parallelism from complex loops
ICS '03 Proceedings of the 17th annual international conference on Supercomputing
PAP Recognizer: A Tool for Automatic Recognition of Parallelizable Patterns
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
The SPARAMAT Approach to Automatic Comprehension of Sparse Matrix Computations
IWPC '99 Proceedings of the 7th International Workshop on Program Comprehension
A unified framework for nonlinear dependence testing and symbolic analysis
Proceedings of the 18th annual international conference on Supercomputing
Compilers: Principles, Techniques, and Tools (2nd Edition)
Compilers: Principles, Techniques, and Tools (2nd Edition)
Concurrency and Computation: Practice & Experience - Current Trends in Compilers for Parallel Computers (CPC2006)
Pattern-Driven Automatic Parallelization
Scientific Programming
Euro-Par '08 Proceedings of the 14th international Euro-Par conference on Parallel Processing
Streaming-oriented parallelization of domain-independent irregular kernels
Euro-Par 2010 Proceedings of the 2010 conference on Parallel processing
Approximate graph clustering for program characterization
ACM Transactions on Architecture and Code Optimization (TACO) - HIPEAC Papers
Parallelization of shallow water simulations on current multi-threaded systems
International Journal of High Performance Computing Applications
Fine-grained Benchmark Subsetting for System Selection
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Extensible Recognition of Algorithmic Patterns in DSP Programs for Automatic Parallelization
International Journal of Parallel Programming
Compiler-Assisted Checkpointing of Parallel Codes: The Cetus and LLVM Experience
International Journal of Parallel Programming
Hi-index | 0.00 |
The recognition of program constructs that are frequently used by software developers is a powerful mechanism for optimizing and parallelizing compilers to improve the performance of the object code. The development of techniques for automatic recognition of computational kernels such as inductions, reductions and array recurrences has been an intensive research area in the scope of compiler technology during the 90's. This article presents a new compiler framework that, unlike previous techniques that focus on specific and isolated kernels, recognizes a comprehensive collection of computational kernels that appear frequently in full-scale real applications. The XARK compiler operates on top of the Gated Single Assignment (GSA) form of a high-level intermediate representation (IR) of the source code. Recognition is carried out through a demand-driven analysis of this high-level IR at two different levels. First, the dependences between the statements that compose the strongly connected components (SCCs) of the data-dependence graph of the GSA form are analyzed. As a result of this intra-SCC analysis, the computational kernels corresponding to the execution of the statements of the SCCs are recognized. Second, the dependences between statements of different SCCs are examined in order to recognize more complex kernels that result from combining simpler kernels in the same code. Overall, the XARK compiler builds a hierarchical representation of the source code as kernels and dependence relationships between those kernels. This article describes in detail the collection of computational kernels recognized by the XARK compiler. Besides, the internals of the recognition algorithms are presented. The design of the algorithms enables to extend the recognition capabilities of XARK to cope with new kernels, and provides an advanced symbolic analysis framework to run other compiler techniques on demand. Finally, extensive experiments showing the effectiveness of XARK for a collection of benchmarks from different application domains are presented. In particular, the SparsKit-II library for the manipulation of sparse matrices, the Perfect benchmarks, the SPEC CPU2000 collection and the PLTMG package for solving elliptic partial differential equations are analyzed in detail.