A practical array dependence analysis for anoptimizingparallelizing C compiler

Accurate and efficient array dependence analysis is a crucial phase of optimizing/parallelizing compilers. The results of array dependence analysis are required for many automatic parallelism detection analyses and transformations. === This thesis is concerned with the development of a dependence an...

Full description

Bibliographic Details
Main Author: Justiani, J., 1962-
Other Authors: Hendren, Laurie J. (advisor)
Format: Others
Language:en
Published: McGill University 1995
Subjects:
Online Access:http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=23277
Description
Summary:Accurate and efficient array dependence analysis is a crucial phase of optimizing/parallelizing compilers. The results of array dependence analysis are required for many automatic parallelism detection analyses and transformations. === This thesis is concerned with the development of a dependence analysis for a certain class of loopnests in the imperative programming language C. In particular, this thesis addresses the problems of incorporating such a framework in a language that supports pointers. We propose a practical and efficient dependence testing framework built upon previously existing methods. === To perform any dependence testing, a support analysis is required in order to establish a suitable environment. This support analysis has three major functions. First, it filters certain loopnests that are amenable for analysis. Second, it exposes array subscripts in terms of affine functions of loop indices. The last function is the collection of array subscript pairs in loopnests. The support analysis incorporates analysis information such as points-to information, constant propagation information and reaching definition information to yield more accurate dependence tests. === An important contribution of this thesis is a statistical profiler which is used to collect information for experiments. The statistical profiler has several flags that an be set "ON" or "OFF" to support different research scenarios. Different flag settings are used for observing the effects of loop normalization, points-to analysis, constant propagation, nonperfect loopnests, delinearization and linearization on the results of the dependence testing. This thesis includes experimental results from running some benchmarks under five different scenarios. === This work has been integrated into the McCAT optimizing/parallelizing C compiler. The tool is called McADT (The McCAT-Array Dependence Tester).