Automatic program parallelization has been an elusive goal for many years.
It has recently become more important due to the widespread introduction
of multi-cores in PCs. Automatic parallelization could not be achieved
because classic compiler analysis was neither powerful enough and program
behavior was found to be in many cases input dependent. Run-time
thread level parallelization, introduced in 1995, was a welcome but somewhat
different avenue for advancing parallelization coverage.
In this paper we introduce a novel analysis, Hybrid Analysis (HA), which
unifies static and dynamic memory reference techniques into a seamless
compiler framework which extracts almost maximum available parallelism
from scientific codes and generates minimum run-time overhead.
In this paper we will present how we can extract maximum information
from the quantities that could not be
sufficiently analyzed through static compiler methods and
sufficient conditions which, when evaluated dynamically can
A large number of experiments confirm the viability of our techniques,
which have been implemented in the Polaris compiler.