140 likes | 280 Views
Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough?. Nate Clark 4/6/08. The Biggest Problem in HMC: Software. Parallel programming is hard Heterogeneous programming is hard Forward compatibility Legacy applications. I am a frustrated programmer.
E N D
Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough? Nate Clark 4/6/08
The Biggest Problem in HMC: Software • Parallel programming is hard • Heterogeneous programming is hard • Forward compatibility • Legacy applications I am a frustrated programmer
Parallel Software Development • New Languages • Legacy code • Difficult to write • Poor adoption rate • Libraries • Legacy code • Functionality defined a priori • Hinders optimization
Compiler Parallelization • “Decades of automatic parallelization work has been a failure…”– James Larus • Better analysis • Better hardware support [Nystrom 04]
Compiler Parallelization Results [Bridges 07]
Static Compiler Problems • Limited scope • Dynamic linking, dynamic code generation • Recompilation too costly • Static solution, doesn’t adapt to • New HW • System behavior
What About Dynamic Compilation? • No visibility problems • No recompilation • Adaptive • Problems • No semantic information • Speed
Automatic Parallelization Enablers • Constraint analysis • Pointer alias analysis • Commutativity analysis • Can we do this dynamically? [Ryoo 07]
Dynamic Constraint Analysis • Java – lots of related work • Array bounds checks • Software Engineering • Inferring invariants – safe code modification
Dynamic Alias Analysis • Java again – lots of related work • x86 code, too • 73% dependences removed [Guo 06]
Dynamic Commutativity Analysis • None yet… • Static version [Diniz 96] • Other open problems • Runtime / performance tradeoffs • Debugging • People have done this! [Rauchwerger95]
Not a Panacea • “We MUST reject this paper.” • Reviewer #5 • Good for “embarrassingly parallel” apps? • Still very useful • Developer works with compiler • Familiar development environment
Summary • Automatic parallelization is often effective • New analyses, HW support • Dynamic compilation solves many problems • Visibility, legacy code, adaptive • Useful even when it can’t parallelize • Easy path for sequential legacy code
Thank you! http://www.cc.gatech.edu/~ntclark