1 / 40

Enhancing the Role of Inlining in Effective Interprocedural Parallelization

Enhancing the Role of Inlining in Effective Interprocedural Parallelization. Jichi Guo, Mike Stiles Qing Yi, Kleanthis Psarris. Problem. Inter-procedural parallelization Parallel after inlining Gain more parallelizable loops Lost of parallelized loops

irving
Télécharger la présentation

Enhancing the Role of Inlining in Effective Interprocedural Parallelization

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. Enhancing the Role of Inlining in Effective Interprocedural Parallelization Jichi Guo, Mike Stiles Qing Yi, KleanthisPsarris

  2. Problem • Inter-procedural parallelization • Parallel after inlining • Gain more parallelizable loops • Lost of parallelized loops • Inlining messes up caller / callee • Missed parallel opportunities • Inlining increases code complexity

  3. Goal • Keep the gain parallelizable loops • Prevent the lost parallelism • Discover the missed opportunities

  4. Solution • Summarize the code using annotation • Express the underlying information • Inline the annotation before parallelization • Pass the summarized information to the compiler • Reverse-inline after parallelization • Revert inlining side effects • Maintain equivalence

  5. Outline • Innovations • Problems of parallel + inline strategy • Annotation language • Annotation-based inlining technique • Experiments • Summary

  6. Outline • Innovations • Problems of parallel + inline strategy • Annotation language • Annotation-based inlining technique • Experiments • Summary

  7. Problems of parallel + inlining • Parallel + inlining • Conventional inlining with heuristics and pre-transformations • Heuristics: code size • Transformations: linearization, forward substitution • Intra-procedural loop parallelization • Fortran do-all loop • Goal • Gain loops in caller • Problems • Lost loops in caller / callee • Missed loops in caller

  8. Problems of parallel + inlining • Lost of parallelizable loops in caller/callee • Transformations that cause the lost • Forward substitution • Linearization • Forward substitution of non-linear subscripts • Create indirect array references • Linearization of array dimensions • Mess up array shapes

  9. Problems of parallel + inlining • Forward substitution of non-linear subscripts • Create indirect array references X2(I) ⇒ T(IX(7) + I) Y2(I) ⇒ T(IX(8) + I) Z2(I) ⇒ T(IX(9) + I)

  10. Problems of parallel + inlining • Linearization of array dimensions • Mess up array shapes PP(i, j, k) ⇒ PP(i + j*4 + k*16)

  11. Problems of parallel + inlining • Missed parallelizable loops in caller • Coding styles that cause the lost • Opaque compositional subroutines • A calls B, B calls C, C calls D, … • Array access • When it is difficult to determine which part is killed • Debugging and Error Checking • Statement that breaks the dependency is never executed • I/O statements • Indirect array references • ID=IDX(I), X = A(ID)

  12. Problems of parallel + inlining • Opaque compositional subroutines • A calls B, B calls C, C calls D, …

  13. Problems of parallel + inlining • Array access • Difficult to determine which part is killed CTR computed at runtime

  14. Problems of parallel + inlining • Debugging and Error Checking • Statement that breaks the dependency is never executed • I/O statements

  15. Problems of parallel + inlining • Indirect array references IN=>NODE NODE=>IREL IREL=>RHSB

  16. Outline • Innovations • Problems of parallel + inline strategy • Annotation language • Annotation-based inlining technique • Experiments • Summary

  17. The annotation language • Goal • Summarize information • Avoid ambiguity

  18. The annotation language • Restricted grammar • Special operators • Writing annotations

  19. The annotation language • Restricted grammar • Do-all loop only • No goto

  20. The annotation language • Special operators y = operator(x1, x2, …, xn) Purpose: abstract relation • Unknown operator • Relation is unknown • Generic functions • Unique operator • Relation is one-to-one, from X to Y

  21. The annotation language • Writing annotations • Eliminating adverse side effects • Preserve caller and callee if inlining breaks the dependency • Summarize opaque subroutines • Eliminate nested function calls • Array access • Specify exact range get read/modified • Debugging and error handling • Aggressive strategy: ignore checking statements • Indirect array references • Discover unique relation

  22. The annotation language • Summarize opaque subroutines • Eliminate nested function calls

  23. The annotation language • Array access • Specify exact range get read/modified

  24. The annotation language • Debugging and error handling • Aggressive strategy: ignore checking statements

  25. The annotation language • Indirect array references • Discover unique relation

  26. Outline • Innovations • Problems of parallel + inline strategy • Annotation language • Annotation-based inlining technique • Experiments • Summary

  27. Annotation-based inlining • Goal • Pass annotated information to the compiler • Eliminate inlining side effects • Flow • Inline before parallelization • Reverse-inlining after parallelization • Verify and evaluate at last • Implementation • POLARIS compiler for parallelization • ROSE compiler for parsing • POET transformer • PERFECT benchmark

  28. Annotation-based inlining • Workflow • Annotation inlining⇒ Parallelization ⇒ Reverse-inlining

  29. Annotation-based inlining • Inlining annotation • Steps • Annotation ⇒ source language • Translating special operators • Inlinining generated source language • Avoiding linearization • Translating special operators • Unknown: using uninitialized global arrays • Unique: using linear expression • Avoiding linearization

  30. Annotation-based inlining • Inlining annotation

  31. Annotation-based inlining • Parallelize do-all loops

  32. Annotation-based inlining • Reverse inlining

  33. Annotation-based inlining • Reverse inlining is indispensible • Inlinining is restored to function call • Avoid lost of parallelism in caller / callee • Enable abstraction operators (unknown, unique)

  34. Annotation-based inlining • Verification and evaluation • Correctness, Efficiency, and Generality

  35. Outline • Innovations • Problems of parallel + inline strategy • Annotation language • Annotation-based inlining technique • Experiments • Summary

  36. Experiment • Purpose • What does conventional lining bring to parallelization • Gain? • Lost? • Missed? • How good is annotation-based inlining to avoid above issues • Design • PERFECT benchmarks (except SPEC77) • Two machines • 8 cores Intel Mac • 4 cores AMD Operon • End compiler • GFortran 4.2.1 • IFort 11.1 • Result • Count of Loops • Performance

  37. Experiment • Result: Loops • Conventional inlining • Having loss • Annotation-based inlining • No loss, more gain

  38. Experiment • Result: Performance • Average speedup limited • Annot-based inlining always better

  39. Summary • Inter-procedural parallelization • Summarize effects of conventional inlining • Gain • Lost • Missed • Propose annotation-based inlining • Annotation summary • Enhanced inlining strategy • Reverse inlining

  40. Thanks! Questions?

More Related