An empirical study of automatic restructuring of nonnumerical programs for parallel processors
IEEE Transactions on Computers
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic decomposition of scientific programs for parallel execution
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An extended set of FORTRAN basic linear algebra subprograms
ACM Transactions on Mathematical Software (TOMS)
An overview for the PTRAN analysis system for multiprocessing
Journal of Parallel and Distributed Computing - Special Issue on Languages, Compilers and environments for Parallel Programming
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
SPAA '89 Proceedings of the first annual ACM symposium on Parallel algorithms and architectures
An efficient method of computing static single assignment form
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scans as Primitive Parallel Operations
IEEE Transactions on Computers
Cedar Fortran and other vector and parallel Fortran dialects
The Journal of Supercomputing
A unified semantic approach for the vectorization and parallelization of generalized reductions
ICS '89 Proceedings of the 3rd international conference on Supercomputing
The Organization of Computations for Uniform Recurrence Equations
Journal of the ACM (JACM)
Journal of the ACM (JACM)
Basic Linear Algebra Subprograms for Fortran Usage
ACM Transactions on Mathematical Software (TOMS)
The parallel execution of DO loops
Communications of the ACM
A parallel language and its compilation to multiprocessor machines or VLSI
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Optimizing Supercompilers for Supercomputers
Optimizing Supercompilers for Supercomputers
Dependence Analysis for Supercomputing
Dependence Analysis for Supercomputing
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recognizing and Parallelizing Bounded Recurrences
Proceedings of the Fourth International Workshop on Languages and Compilers for Parallel Computing
Parallelizing a C Dialect for Distributed Memory MIMD Machines
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
Analysis of Programs by Reduction of Their Structure
Proceedings of the International Workshop on Graph-Grammars and Their Application to Computer Science and Biology
Programming with idioms in APL
APL '79 Proceedings of the international conference on APL: part 1
Plan analysis of programs
Graph rewrite systems for program optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer aided hand tuning (CAHT): “applying case-based reasoning to performance tuning”
ICS '01 Proceedings of the 15th international conference on Supercomputing
Array form representation of idiom recognition system for numerical programs
Proceedings of the 2001 conference on APL: an arrays odyssey
A new idiom recognition framework for exploiting hardware-assist instructions
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
XARK: An extensible framework for automatic recognition of computational kernels
ACM Transactions on Programming Languages and Systems (TOPLAS)
ICCS'03 Proceedings of the 2003 international conference on Computational science: PartII
Idiom recognition framework using topological embedding
ACM Transactions on Architecture and Code Optimization (TACO)
Hi-index | 0.00 |
Programs in languages such as Fortran, Pascal, and C were designed and written for a sequential machine model. During the last decade, several methods to vectorize such programs and recover other forms of parallelism that apply to more advanced machine architectures have been developed (particularly for Fortran, due to its pointer-free semantics). We propose and demonstrate a more powerful translation technique for making such programs run efficiently on parallel machines which support facilities such as parallel prefix operations as well as parallel and vector capabilities. This technique, which is global in nature and involves a modification of the traditional definition of the program dependence graph (PDG), is based on the extraction of parallelizable program structures (“idioms”) from the given (sequential) program. The benefits of our technique extend beyond the above-mentioned architectures and can be viewed as a general program optimization method, applicable in many other situations. We show a few examples in which our method indeed outperforms existing analysis techniques.