A vectorizing Fortran compiler
IBM Journal of Research and Development
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic translation of FORTRAN programs to vector form
ACM Transactions on Programming Languages and Systems (TOPLAS)
A framework for determining useful parallelism
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Generating sequential code from parallel code
ICS '88 Proceedings of the 2nd international conference on Supercomputing
An overview of the PTRAN analysis system for multiprocessing
Proceedings of the 1st International Conference on Supercomputing
The program dependence graph and vectorization
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The parascope editor: an interactive parallel programming tool
Proceedings of the 1989 ACM/IEEE conference on Supercomputing
Experiences using control dependence in PTRAN
Selected papers of the second workshop on Languages and compilers for parallel computing
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Flow diagrams, turing machines and languages with only two formation rules
Communications of the ACM
Dependence Analysis for Supercomputing
Dependence Analysis for Supercomputing
Conversion of control dependence to data dependence
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parallelism exposure and exploitation in programs
Parallelism exposure and exploitation in programs
Control and data dependence for program transformations.
Control and data dependence for program transformations.
Dependence analysis for subscripted variables and its application to program transformations
Dependence analysis for subscripted variables and its application to program transformations
Optimizing supercompilers for supercomputers
Optimizing supercompilers for supercomputers
Software methods for improvement of cache performance on supercomputer applications
Software methods for improvement of cache performance on supercomputer applications
Analysis and transformation in the ParaScope editor
ICS '91 Proceedings of the 5th international conference on Supercomputing
Interprocedural transformations for parallel code generation
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
A transformational approach to compiling Sisal for distributed memory architectures
ICS '92 Proceedings of the 6th international conference on Supercomputing
Loop distribution with multiple exits
Proceedings of the 1992 ACM/IEEE conference on Supercomputing
The transitive closure of control dependence: the iterated join
ACM Letters on Programming Languages and Systems (LOPLAS)
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Statically Safe Speculative Execution for Real-Time Systems
IEEE Transactions on Software Engineering
A Vectorizing Compiler for Multimedia Extensions
International Journal of Parallel Programming
Interactive Parallel Programming using the ParaScope Editor
IEEE Transactions on Parallel and Distributed Systems
Complexity of Multi-dimensional Loop Alignment
STACS '02 Proceedings of the 19th Annual Symposium on Theoretical Aspects of Computer Science
Temporary Arrays for Distribution of Loops with Control Dependences
Euro-Par '00 Proceedings from the 6th International Euro-Par Conference on Parallel Processing
SAGE: A New Analysis and Optimization System for FlexRAM Architecture
IMS '00 Revised Papers from the Second International Workshop on Intelligent Memory Systems
Mathematical Structures in Computer Science
Improving Hash Join Performance through Prefetching
ICDE '04 Proceedings of the 20th International Conference on Data Engineering
SAGE: an automatic analyzing system for a new high-performance SoC architecture-processor-in-memory
Journal of Systems Architecture: the EUROMICRO Journal
Automatically partitioning packet processing applications for pipelined architectures
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Optimizing irregular shared-memory applications for distributed-memory systems
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Improving hash join performance through prefetching
ACM Transactions on Database Systems (TODS)
Improving the parallelism of iterative methods by aggressive loop fusion
The Journal of Supercomputing
Parallel-stage decoupled software pipelining
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Rewriting procedures for batched bindings
Proceedings of the VLDB Endowment
Decoupled software pipelining creates parallelization opportunities
Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization
Loop Distribution and Fusion with Timing and Code Size Optimization
Journal of Signal Processing Systems
COSPIM: a program optimization system for tightly-coupled heterogeneous environments
ICCOMP'06 Proceedings of the 10th WSEAS international conference on Computers
Loop distribution and fusion with timing and code size optimization for embedded DSPs
EUC'05 Proceedings of the 2005 international conference on Embedded and Ubiquitous Computing
Removing impediments to loop fusion through code transformations
LCPC'02 Proceedings of the 15th international conference on Languages and Compilers for Parallel Computing
Holistic optimization by prefetching query results
SIGMOD '12 Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data
Load-balanced pipeline parallelism
SC '13 Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis
Hi-index | 0.00 |
Loop distribution is an integral part of transforming a sequential program into a parallel one. It is used extensively in parallelization, vectorization, and memory management. For loops with control flow, previous methods for loop distribution have significant drawbacks. We present a new algorithm for loop distribution in the presence of control flow modeled by a control dependence graph. This algorithm is shown optimal in that it generates the minimum number of new arrays and tests possible. We also present a code generation algorithm that produces code for the resulting program without replicating statements or conditions. Although these algorithms are being developed for use in an interactive parallel programming environment for Fortran, they are very general and can be used in automatic parallelization and vectorization systems. Keywords: parallelization, vectorization, transformation, control dependence, data dependence, loop distribution