Automatic parallelization of general-purpose programs is still not possible in general in the presence of irregular data structures and complex control-flows. One promising strategy is tread-level data speculation (TLDS). Although TLDS alleviates the need of proving independent computations statically, studies showed that applying TLDS blindly to programs with limited speculative parallelism may lead to performance degradation. Therefore, a positive approach is to combine TLDS with strong compiler analyses. The compiler can provide a guideline of where to speculate by "lazily" detecting some dependences and leave dependences that are more dynamic to be detected at runtime. Furthermore, transformations can be applied to eliminate some of the dependences detected by the compiler to enhance speculative parallelism in the program. This paper proposes compiler techniques to implement this approach. In particular, we focus on general-purpose Java programs with extensive use of con...
Peng Wu, David A. Padua