parallel flow sensitive pointer analysis by graph
play

Parallel Flow-Sensitive Pointer Analysis by Graph-Rewriting - PowerPoint PPT Presentation

Parallel Flow-Sensitive Pointer Analysis by Graph-Rewriting Vaivaswatha Nagaraj R. Govindarajan Indian Institute of Science, Bangalore PACT 2013 PACT'13 2 Outline Introduction Background Flow-sensitive graph-rewriting formulation


  1. Parallel Flow-Sensitive Pointer Analysis by Graph-Rewriting Vaivaswatha Nagaraj R. Govindarajan Indian Institute of Science, Bangalore PACT 2013 PACT'13

  2. 2 Outline ● Introduction ● Background ● Flow-sensitive graph-rewriting formulation ● Implementation and Results ● Conclusion Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  3. 3 Outline ● Introduction Introduction ● Background ● Flow-sensitive graph-rewriting formulation ● Implementation and Results ● Conclusion Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  4. 4 Flow-sensitive pointer analysis x = &a 1 y = &b 2 3 z = x z = y z points-to {?} z points-to {?} 4 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  5. 5 Flow-sensitive pointer analysis x = &a 1 x points-to a y points-to b y = &b 2 3 z = x z = y x points-to a x points-to a y points-to b y points-to b z points-to a z points-to b 4 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  6. 6 Flow-sensitive vs flow-insensitive x = &a 1 x points-to a y points-to b y = &b 2 3 z = x z = y x points-to a x points-to a y points-to b y points-to b z points-to { a,b } z points-to {a, b } 4 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  7. 7 Outline ● Introduction ● Background – Staged flow-sensitive analysis Staged flow-sensitive analysis – Graph-rewriting ● Flow-sensitive graph-rewriting formulation ● Implementation and Results ● Conclusion Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  8. 8 Staged flow-sensitive pointer analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] ● Scales to large programs ● Faster, less precise analysis used to speed up the primary analysis Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  9. 9 Staged flow-sensitive pointer analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] ● Scales to large programs ● Faster, less precise analysis used to speed up the primary analysis Our goal: Parallelize the staged flow-sensitive pointer analysis Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  10. 10 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] x 1 points-to { a , b } a points-to {p,q} b points-to {r,s} 1 *x 1 = u 1 2 v 1 = *y 1 w 1 = *z 1 3 In a traditional analysis, points-to info of both a & b will be propagated to both 2 and 3 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  11. 11 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] x 1 points-to { a , b } a points-to {p,q} b points-to {r,s} 1 *x 1 = u 1 z 1 points-to { a } y 1 points-to { b } 2 v 1 = *y 1 w 1 = *z 1 3 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  12. 12 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] x 1 points-to { a , b } a points-to {p,q} b points-to {r,s} 1 *x 1 = u 1 z 1 points-to { a } y 1 points-to { b } 2 v 1 = *y 1 w 1 = *z 1 3 Points-to info of only Points-to info of only b is required here a is required here Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  13. 13 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] How does staged analysis work? (1) Use a fast analysis to get less precise points-to information 1 *x 1 = u 1 2 v 1 = *y 1 w 1 = *z 1 3 x 1 → { a,b } z 1 → { a } *w 1 = t 2 4 y 1 → { b } w 1 → { c } Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  14. 14 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] How does staged analysis work? (2) Use the less precise info to find variables potentially (1) Use a fast analysis referenced at indirections to get less precise 1 *x 1 = u 1 points-to information  a 1 = (a 0 ) b 1 = (b  0 ) µ(a 1 ) 2 v 1 = *y 1 w 1 = *z 1 3 x 1 → { a,b } z 1 → { a } µ(b 1 ) *w 1 = t 2 4 y 1 → { b } w 1 → { c } c 2 = (c  1 ) Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  15. 15 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] How does staged analysis work? 1 *x 1 = u 1 Flow-sensitivity - a 1 = (a  0 ) All variables in SSA form b 1 = (b  0 ) µ(a 1 ) 2 v 1 = *y 1 w 1 = *z 1 3 µ(b 1 ) *w 1 = t 2 4 c 2 = (c  1 ) Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  16. 16 Staged flow-sensitive analysis [Flow-sensitive pointer analysis for millions of lines of code – Ben Hardekopf. et al. - CGO'11] How does staged analysis work? (3) Build def-use chains and propagate only along these chains 1 *x 1 = u 1 Flow-sensitivity - a 1 = (a  0 ) All variables in SSA form b 1 = (b  0 ) µ(a 1 ) 2 v 1 = *y 1 w 1 = *z 1 3 µ(b 1 ) *w 1 = t 2 4 Propagation of information c 2 = (c  1 ) is thus optimized Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  17. 17 Parallelizing the staged analysis Can the staged flow-sensitive pointer analysis be parallelized and scaled to multiple cores? Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  18. 18 Towards a parallel algorithm ● Flow-insensitive pointer analysis has already been parallelized # ● Parallelization of flow-insensitive analysis involves transforming it to a graph-rewriting problem – expose amorphous data-parallelism # [Parallel Inclusion-based Points-to Analysis - Mario Mendez-Lojo, et al. - OOPSLA'10] Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  19. 19 Towards a parallel algorithm ● Flow-insensitive pointer analysis has already been parallelized # ● Parallelization of flow-insensitive analysis involves transforming it to a graph-rewriting problem – expose amorphous data-parallelism Our goal: Parallelize the staged flow-sensitive pointer analysis Formulate it as a graph-rewriting problem # [Parallel Inclusion-based Points-to Analysis - Mario Mendez-Lojo, et al. - OOPSLA'10] Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  20. 20 Outline ● Introduction ● Background – Staged flow-sensitive analysis – Graph-rewriting Graph-rewriting ● Flow-sensitive graph-rewriting formulation ● Implementation and Results ● Conclusion Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  21. 21 Graph-rewriting [Parallel Inclusion-based Points-to Analysis - Mario Mendez-Lojo, et al. - OOPSLA'10] Points-to constraint Constraint graph p x a x = &a c x y y = x Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  22. 22 Graph-rewriting [Parallel Inclusion-based Points-to Analysis - Mario Mendez-Lojo, et al. - OOPSLA'10] Points-to constraint Constraint graph p x a x = &a c x y y = x p p x a x a Apply rewrite-rule c c p y y Example: copy rewrite rule Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  23. 23 Outline ● Introduction ● Background ● Flow-sensitive graph-rewriting formulation Flow-sensitive graph-rewriting formulation ● Implementation and Results ● Conclusion Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  24. 24 Graph-rewriting formulation 1 *x 1 = u 1 a 1 = (a  0 ) b 1 = (b  0 ) µ(a 1 ) 2 v 1 = *y 1 w 1 = *z 1 3 µ(b 1 ) *w 1 = t 2 4  c 2 = (c 1 ) Graph: Nodes: Variables in the program Edges: Points-to, copy, load, store, etc ... Rewrite rules? Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  25. 25 Challenges Directly using the flow-insensitive graph formulation for flow-sensitive analysis leads to the following challenges ● Spurious edges – leads to imprecision ● Strong and weak updates at store constraints are not handled Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  26. 26 Challenges Directly using the flow-insensitive graph formulation for flow-sensitive analysis leads to the following challenges ● Spurious edges – leads to imprecision – Solution: potential edges ● Strong and weak updates at store constraints are not handled – Solution: klique nodes Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  27. 27 Outline ● Introduction ● Background ● Flow-sensitive graph-rewriting formulation – Problem of spurious edges Problem of spurious edges – Handling strong and weak updates ● Implementation and Results ● Conclusion Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  28. 28 Spurious edges - Load rule for flow-insensitive analysis: Points-to constraints y 1 = &a x 1 = *y 1 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  29. 29 Spurious edges - Load rule for flow-insensitive analysis: Formulate graph Points-to constraints p y 1 = &a y 1 a l x 1 = *y 1 x 1 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  30. 30 Spurious edges - Load rule for flow-insensitive analysis: Formulate graph Apply load rule Points-to constraints p p y 1 = &a y 1 y 1 a a l l x 1 = *y 1 c x 1 x 1 Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

  31. 31 Spurious edges - Load rule for flow-insensitive analysis: Formulate graph Apply load rule Points-to constraints p p y 1 = &a y 1 y 1 a a l l x 1 = *y 1 c x 1 x 1 - Loss of precision when used for flow-sensitive analysis: x 1 = *y 1 µ(a 1 ) z 1 = *y 1 µ(a 2 ) Vaivaswatha Nagaraj (IISc, Bangalore) PACT'13

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend