Summary: Chapter 1:
Interprocedural Parallelization Analysis: A Case Study
Mary W. Hall \Lambda Brian R. Murphy \Lambda Saman P. Amarasinghe \Lambda
We present an overview of our interprocedural analysis system, which applies the
program analysis required for parallelization across procedure boundaries. We discuss
the issues we addressed to efficiently obtain precise results in the interprocedural setting.
We present the analysis required for parallelization, illustrated with an excerpt from a
Fortran benchmark program. By integrating a comprehensive suite of interprocedural
analyses, we have built a system that is much more effective at locating parallelism in
scientific benchmarks than earlier interprocedural systems.
A key performance concern in automatically parallelizing a program is locating coarsegrain
parallelism, independent computations that perform a significant amount of work. Coarse
grain parallel computations exhibit very small overhead costs from synchronization and
parallel thread initiation relative to the amount of time spent doing useful work in parallel.
Overhead costs can be significant; without sufficient computation in parallel regions of the
program, speedups are unlikely, and performance degradations may even result.
Modular programs often contain coarsegrain parallel computations that span multiple
procedures in the program. Most compilers will fail to parallelize these computations