Practical dependence testing

  title={Practical dependence testing},
  author={Gina Goff and Ken Kennedy and Chau-Wen Tseng},
  booktitle={PLDI '91},
Precise and efficient dependence tests are essential to theeffectivermss ofaparallelizing compiler. This paper proposes a dependence testing scheme based on classifyingpairs ofsubscripted variable references. Exact yet fast dependence tests are presented for certain classes ofarray references, as well as empirical results showing that these references dominate scientific Fortran codes. These dependence tests are being implemented at Rice University in both PFC, aparallelizing compiler, and… 

Tables from this paper

Dependence Testing for Parallelizing Compilers ECE 1754 Survey

This paper presents the dependence testing problem, terminology and concepts used in dependence testing, several simple dependence tests, and two complex algorithms, the Omega test and Rice test, and compares the effectiveness and efficiency of various tests and algorithms.

Dependence Analysis of Fortran90 Array Syntax

This paper describes the testing methodology and how direction vectors are extended to contain the additional information needed to handle Fortran 90 array-section references.

The Access Region Test

This work returns to first principles to devise a more general parallelism detection strategy, which includes a dependence analysis technique which removes some of the limitations of traditional loop-based dependence analysis techniques.

Static and dynamic evaluation of data dependence analysis

This paper discusses the effectiveness of several dependence tests in Perfect Benchmarks, and shows that the Omega test improved the accuracy of the analysis by only 1% when codes are analyzed statically, and does not improve the detected inherent parallelism.

On Fast Array Data Dependence Tests

The relative speed and accuracy of the Epsilon and Omega test are explored, and how they might be joined is discussed, and serious errors are pointed out.

Supporting Array Dependence Testing for an Optimizing/Parallelizing C Compiler

The effectiveness of parallelizing and optimizing compilers depends on the ability to do accurate dependence analysis. In the case of programs that use arrays, array dependence analysis methods are

The Power Test for Data Dependence

The power test is a combination of the extended GCD algorithm and the Fourier-Motzkin method to eliminate variables in a system of inequalities and is the first test that can generate the information needed for some advanced transformations, and that can handle complex simultaneous loop limits.

Region-based Parallelization Using the Region Test

The advantages of using array access region summaries to parallelize programs are discussed, and a dependence test called the Region Test is presented to detect dependence between arbitrary regions of a program, including loop nests and whole subroutines.

An Empirical Study of the I Test for Exact Data Dependence

  • K. PsarrisS. Pande
  • Computer Science
    1994 International Conference on Parallel Processing Vol. 3
  • 1994
The I test is proposed, an improved subscript analysis test that extends the accuracy of a combination of the GCD test and the Banerjee test and is able to provide exact data dependence information at no additional computation cost.

An experimental evaluation of data dependence analysis techniques

This paper presents an experimental evaluation of several data dependence tests, including the Banerjee test, the I-Test, and the Omega test, and compares these tests in terms of data dependence accuracy, compilation efficiency, effectiveness in parallelization, and program execution performance.



Subdomain dependence test for massive parallelism

A new dependence test which can detect disjoint regions of an iteration space and report accurate dependences for a class of conditional statements is presented and the proposed algorithm can discover large-scale parallelism in cases where previous decision algorithms fail.

The Power Test for Data Dependence

The power test is a combination of the extended GCD algorithm and the Fourier-Motzkin method to eliminate variables in a system of inequalities and is the first test that can generate the information needed for some advanced transformations, and that can handle complex simultaneous loop limits.

Vectorizing compilers: a test suite and results

A collection of 100 Fortran loops used to test the effectiveness of an automatic vectorizing compiler is described and the testing methodology and loop scoring are explored.

Extending the Banerjee-Wolfe Test to Handle Execution Conditions

The purpose of the present paper is to show that the Banerjee-Wolfe test may be extended to handle simple execution conditions without significant additional cost.

Compiling issues for supercomputers

This paper discusses in detail exact and inexact tests for computing data dependencies and focus on the linearization scheme, and discusses a program transformation call loop spreading which allows to execute in parallel adjacent loops with interloop dependencies.

Data dependence analysis on multi-dimensional array references

In this paper, a new algorithm, called λ-test, is presented for an efficient and accurate data dependence analysis on multi-dimensional array references that achieves high efficiency and high accuracy at the same time, which is in general not allowed in previous algorithms.

Parascope:a Parallel Programming Environment

The issues that underlie the design of ParaScope's editor, compiler, and debugger are discussed.

Structured dataflow analysis for arrays and its use in an optimizing compiler

This work extends the well‐known interval analysis method so that it can be used to gather global flow information for individual array elements and results in a uniform treatment of scalars and arrays in the compiler and builds a systematic basis from which the compiler can perform numerous global optimizations.

Dependence analysis for subscripted variables and its application to program transformations

The order in which the statements of a program are executed can affect the execution time of the program, and this fact has made use of this fact by reordering code to improve its performance on a machine.

Direct parallelization of call statements

An algorithm to find asynchronous CALL statements is given that involves a new dependence test to compute data dependence graphs, which provides better results than previous ones even when no CALL statements are involved.