The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
An extended set of FORTRAN basic linear algebra subprograms
ACM Transactions on Mathematical Software (TOMS)
Solving problems on concurrent processors. Vol. 1: General techniques and regular problems
Solving problems on concurrent processors. Vol. 1: General techniques and regular problems
Interactive program improvement via EAVE: an expert adviser for vectorization
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Data optimization: allocation of arrays to reduce communication on SIMD machines
Journal of Parallel and Distributed Computing - Massively parallel computation
Supercompilers for parallel and vector computers
Supercompilers for parallel and vector computers
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
An approach to ordering optimizing transformations
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Program optimization and parallelization using idioms
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A static performance estimator to guide data partitioning decisions
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Scientific workload characterization by loop-based analyses
ACM SIGMETRICS Performance Evaluation Review
Parallel numerical algorithms
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
Numerical recipes in C (2nd ed.): the art of scientific computing
Numerical recipes in C (2nd ed.): the art of scientific computing
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Array-data flow analysis and its use in array privatization
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CMAX: a Fortran translator for the connection machine system
ICS '93 Proceedings of the 7th international conference on Supercomputing
Basic Linear Algebra Subprograms for Fortran Usage
ACM Transactions on Mathematical Software (TOMS)
Parallel Algorithms for Matrix Computations
Parallel Algorithms for Matrix Computations
Knowledge-Based Program Analysis
IEEE Software
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
An Empirical Study of Fortran Programs for Parallelizing Compilers
IEEE Transactions on Parallel and Distributed Systems
Compiling Communication-Efficient Programs for Massively Parallel Machines
IEEE Transactions on Parallel and Distributed Systems
Detection of Recurrences in Sequential Programs with Loops
PARLE '93 Proceedings of the 5th International PARLE Conference on Parallel Architectures and Languages Europe
Program comprehension engines for automatic parallelization: a comparative study
Proceedings of the First IFIP TC10 International Workshop on Software Engineering for Parallel and Distributed Systems
A user level program transformation tool
ICS '98 Proceedings of the 12th international conference on Supercomputing
Two Program Comprehension Tools for Automatic Parallelization
IEEE Concurrency
Retargeting Sequential Image-Processing Programs for Data Parallel Execution
IEEE Transactions on Software Engineering
Pattern-based behavior synthesis for FPGA resource reduction
Proceedings of the 16th international ACM/SIGDA symposium on Field programmable gate arrays
XARK: An extensible framework for automatic recognition of computational kernels
ACM Transactions on Programming Languages and Systems (TOPLAS)
Extensible Recognition of Algorithmic Patterns in DSP Programs for Automatic Parallelization
International Journal of Parallel Programming
Hi-index | 0.00 |
This article describes a knowledge-based system for automatic parallelization of a wide class of sequential numerical codes operating on vectors and dense matrices, and for execution on distributed memory message-passing multiprocessors. Its main feature is a fast and powerful pattern recognition tool that locally identifies frequently occurring computations and programming concepts in the source code. This tool also works for dusty deck codes that have been "encrypted" by former machine-specific code transformations. Successful pattern recognition guides sophisticated code transformations including local algorithm replacement such that the parallelized code need not emerge from the sequential program structure by just parallelizing the loops. It allows access to an expert's knowledge on useful parallel algorithms, available machine-specific library routines, and powerful program transformations. The partially restored program semantics also supports local array alignment, distribution, and redistribution, and allows for faster and more exact prediction of the performance of the parallelized target code than is usually possible.