Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough? - PowerPoint PPT Presentation

why should i rewrite my software when dynamic compilation can be good enough n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough? PowerPoint Presentation
Download Presentation
Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough?

play fullscreen
1 / 14
Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough?
127 Views
Download Presentation
wylie-rice
Download Presentation

Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough?

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Why Should I Rewrite My Software When Dynamic Compilation Can Be Good Enough? Nate Clark 4/6/08

  2. The Biggest Problem in HMC: Software • Parallel programming is hard • Heterogeneous programming is hard • Forward compatibility • Legacy applications I am a frustrated programmer

  3. Parallel Software Development • New Languages • Legacy code • Difficult to write • Poor adoption rate • Libraries • Legacy code • Functionality defined a priori • Hinders optimization

  4. Compiler Parallelization • “Decades of automatic parallelization work has been a failure…”– James Larus • Better analysis • Better hardware support [Nystrom 04]

  5. Compiler Parallelization Results [Bridges 07]

  6. Static Compiler Problems • Limited scope • Dynamic linking, dynamic code generation • Recompilation too costly • Static solution, doesn’t adapt to • New HW • System behavior

  7. What About Dynamic Compilation? • No visibility problems • No recompilation • Adaptive • Problems • No semantic information • Speed

  8. Automatic Parallelization Enablers • Constraint analysis • Pointer alias analysis • Commutativity analysis • Can we do this dynamically? [Ryoo 07]

  9. Dynamic Constraint Analysis • Java – lots of related work • Array bounds checks • Software Engineering • Inferring invariants – safe code modification

  10. Dynamic Alias Analysis • Java again – lots of related work • x86 code, too • 73% dependences removed [Guo 06]

  11. Dynamic Commutativity Analysis • None yet… • Static version [Diniz 96] • Other open problems • Runtime / performance tradeoffs • Debugging • People have done this! [Rauchwerger95]

  12. 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

  13. 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

  14. Thank you! http://www.cc.gatech.edu/~ntclark