We present a novel Hybrid Analysis technology which can efficiently and seamlessly integrate all static and all run-time analysis of memory references
into a single framework that is capable of performing all data data dependence analysis and can generate necessary information for all associated memory related optimizations.
We use Hybrid Analysis to perform automatic parallelization by extracting run-time assertions from any loop and generating appropriate run-time tests that range from a low cost scalar comparison to a full, reference by reference run-time analysis.
Moreover we can order the run-time tests in increasing order of complexity (overhead) and thus risk the minimum necessary overhead. We accomplish this by both extending compile time IP analysis techniques and by incorporating speculative run-time techniques when necessary. Our solution is to bridge 'free' compile time techniques with
exhaustive run-time techniques through a continuum of simple to complex solutions.
We have implemented our framework in the Polaris compiler by introducing an innovative intermediate representation called RT_LMAD and a run-time library that can operate on it. From the experimental results obtained to date we believe that we will be able to automatically parallelize all PERFECT codes, a significant accomplishment.