1 / 14

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

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.

wylie-rice
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related