Improvements of Data Dependence Testing and Data Alignment Methods in Parallel Compilers

博士 === 國立成功大學 === 資訊工程研究所 === 87 === Improvements of Data Dependence Testing and Data Alignment Methods in Parallel Compilers Abstract The major task of a parallel compiler is to perform data dependence analysis and detect...

Full description

Bibliographic Details
Main Authors: Weng-Long Chang, 張雲龍
Other Authors: Chih-Ping Chu
Format: Others
Language:en_US
Published: 1999
Online Access:http://ndltd.ncl.edu.tw/handle/79139629463793607072
Description
Summary:博士 === 國立成功大學 === 資訊工程研究所 === 87 === Improvements of Data Dependence Testing and Data Alignment Methods in Parallel Compilers Abstract The major task of a parallel compiler is to perform data dependence analysis and detect the segments of the code that can be executed concurrently. This means performing an analysis of the memory access pattern, parallelism exploitation and optimization of parallelizable codes, through inspection of the array subscript expressions, loop constructs and program features. In data dependence testing technique, there exist many methods that include the GCD test, the Banerjee test, the I test, the Lambda test, the Power test, the Omega test and so on. Every method has its advantage, disadvantage and application range. The I test is applied to determine whether there exist integer solutions for one-dimensional arrays with constant loop bounds. The Lambda test is used towards ascertaining whether there exist real solutions for multi-dimensional arrays with constant loop bounds. In this dissertation, we first extend the applicabilities of the I test and the Lambda test. We propose four dependence testing methods - the extended version of the I test, the generalized direction vector I test, the generalized Lambda test, and the infinity Lambda test, each is associated with its theoretical aspect and computing complexity. The extended version of the I test can be applied towards determining whether integer solutions exist for one-dimensional arrays with either variable or constant limits. Experiments with benchmark cited from EISPACK, LINPACK, Parallel loops, Livermore loops and Vector loops showed that among 1189 pairs of one-dimensional arrays tested, 183 had their data dependence analysis amended by the extended version of I test. The improved rate to the I test is about 15.4%. The generalized direction vector I test, extended from the original direction vector I test, can be applied towards determining whether integer solutions exist for one-dimensional arrays with both constant and variable limits under any given direction vectors. Experiments with benchmark showed that among 12152 pairs of tested one-dimensional arrays consisting of the same pair of array references with different direction vectors, 2124 had their data dependence analysis amended by the generalized direction vector I test. The improved rate to the original direction vector I test is about 17.5%. The generalized Lambda test can be applied towards determining whether there exist data dependences for coupled arrays with both variable limits and constant bounds under any given direction vectors. Experiments with benchmark showed that among 17433 pairs of multi-dimensional arrays tested, 3826 had their data dependence analysis amended by the generalized Lambda test. The improved rate for the Lambda test is about 21.9%. The infinity Lambda test can be applied to deal with data dependence of coupled arrays with symbolic (unknown at compile time) bounds. Experiments with benchmark showed that among 17433 pairs of multi-dimensional arrays tested, 2092 had their data dependence analysis amended by the infinity Lambda test. The improved rate for the Lambda test is about 12%. In distributed multiprocessor systems, in addition to data dependence analysis, another important task of a parallel compiler is to align and distribute data. Through proper data alignment and data distribution, the time of data communication in program execution can be reduced and the efficiency can thus be improved. In one chapter of the thesis, we present one new data alignment method. The alignment functions proposed can be applied towards determining whether there is communication-free alignment of array reference function with linear subscripts in two loop index variables or quadric subscripts. Experiments with benchmark cited from SPEC77, DYFESM, TRACK, QCD and Vector loop showed that to 14 nested loops tested, all of them had their data alignment improved by the method proposed.