Report Number: CSL-TR-97-714
Institution: Stanford University, Computer Systems Laboratory
Title: Parallelizing Compiler Techniques Based on Linear
Inequalities
Author: Amarasinghe, Saman Prabhath
Date: January 1997
Abstract: Shared-memory multiprocessors, built out of the latest
microprocessors, are becoming a widely available class of
computationally powerful machines. These affordable
multiprocessors can potentially deliver supercomputer-like
performance to the general public.
To effectively harness the power of these machines it is
important to find all the available parallelism in programs.
The Stanford SUIF interprocedural parallelizer we have
developed is capable of detecting coarser granularity of
parallelism in sequential scientific applications than
previously possible. Specifically, it can parallelize loops
that span numerous procedures and hundreds of lines of code,
frequently requiring modifications to array data structures
such as array privatization. Measurements from several
standard benchmark suites demonstrate that aggressive
interprocedural analyses can substantially advance the
capability of automatic parallelization technology.
However, locating parallelism is not sufficient in achieving
high performance. It is critical to make effective use of the
memory hierarchy. In parallel applications, false sharing and
cache conflicts between processors can significantly reduce
performance. We have developed the first compiler that
automatically performs a full suite of data transformations
(a combination of transposing, strip-mining and padding). The
performance of many benchmarks improves drastically after
the data transformations.
We introduce a framework based on systems of linear
inequalities for developing compiler algorithms. Many of the
whole program analyses and aggressive optimizations in our
compiler employ this framework. Using this framework general
solutions to many compiler problems can be found
systematically.
http://i.stanford.edu/pub/cstr/reports/csl/tr/97/714/CSL-TR-97-714.pdf