Hybrid Analysis (HA) is a novel compiler optimization approach to solving optimization problems that can be expressed as functions of memory reference sets. It first tries to solve them at compile-time using the best available symbolic analysis methods. In case static analysis fails (the optimization decision may depend on input values), HA extracts a set of equivalent conditions that are in most cases much easier to evaluate at run-time then it is to solve the full optimization problem. The optimization decision is then taken at run-time, in the presence of needed input values, with low overhead.
HA performs Memory Classification Analysis to produce exact analytical memory reference descriptors for all variables relevant to the optimization decision.
We have applied the hybrid technology to implement Hybrid Dependence Analysis, which resulted into an Automatic Parallelization tool. We achieved good speedups on a large set of benchmark applications.
How it works | Results |
Simple Example and Detailed Description
Complex Example |
Automatic Parallelization: Performance Improvement (Speedup)
Compile-time Diagnostics Tables |
Publications and Presentations
Sensitivity Analysis xxxxxxxxxxxxxx | Silvius Rus, Marinus Pennings, Lawrence Rauchwerger, "Sensitivity Analysis for Migrating Programs to Multi-Cores," Technical Report, TR06-015, Parasol Laboratory, Department of Computer Science, Texas A&M University, College Station, TX, Dec 2006. |
Migrating sequential code | |
Dependence Analysis |
Silvius Rus, Lawrence Rauchwerger, "Hybrid Dependence Analysis for Automatic Parallelization," Technical Report, TR05-013, Parasol Laboratory, Department of Computer Science, Texas A&M University, Nov 2005. |
Aggregation and Classification | Silvius Rus, Lawrence Rauchwerger, "Hybrid Dependence Analysis for Automatic Parallelization," Technical Report, TR05-013, Parasol Laboratory, Department of Computer Science, Texas A&M University, Nov 2005. |