instance wise points to analysis for loop based
play

Instance-wise Points-to Analysis for Loop- based Dependence Testing - PowerPoint PPT Presentation

Instance-wise Points-to Analysis for Loop- based Dependence Testing Peng Wu 1 , Paul Feautrier 2 , David Padua 3 , Zehra Sura 3 IBM TJ Watson Research Center 1 INRIA, France 2 University of Illinois, Urbana-Champaign 3 What is Pointer Analysis? !


  1. Instance-wise Points-to Analysis for Loop- based Dependence Testing Peng Wu 1 , Paul Feautrier 2 , David Padua 3 , Zehra Sura 3 IBM TJ Watson Research Center 1 INRIA, France 2 University of Illinois, Urbana-Champaign 3

  2. What is Pointer Analysis? ! Two flavors of Pointer Analysis ! Relations between pointers ! Alias analysis, shape analysis ! Relations between pointers and memory ! Points-to analysis a unalias(a,b), unalias(a,c),alias(b,c) b Points-to(a)= { grey} Points-to(b,c)= Points-to= { red} c ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  3. Points-to Analysis for Dependence Test a for (i=0; i<n; i++){ i a = new (); b b = new (); s: … = a.x; (i) at statement s t = a; a a = b; b = t; b t:b.x = …; i } (ii) at statement t ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  4. Points-to Analysis for Dependence Test a for (i=0; i<n; i++){ i- i a = new (); b b = new (); s: … = a.x; (i) at statement s t = a; a a = b; b = t; b t:b.x = …; i- } (ii) at statement t ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  5. Points-to Analysis for Dependence Test a for (i=0; i<n; i++){ i- i a = new (); b b = new (); s: … = a.x; (i) at statement s t = a; a a = b; b = t; b t:b.x = …; i- i } (ii) at statement t ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  6. Arrays of Pointers Another source of pointers •Java multidimensional arrays •Dynamic arrays in C/C+ + a ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  7. Degree of Alias Information I nstance-wise a[x] at (s,i) vs. a at (s,i) vs. b at (t,j) b[y] at (t,j) points-to a at s vs. b at t analysis alias(a.ptr, alias(a,b) at s a.ptr.ptr) at s Element-wise shape alias analysis analysis ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  8. Representing Points-to Information 0:a = new Complex[n]; for (i=0; i ≤ ≤ n; i++){ ≤ ≤ 1: a[i]=new Complex(); } N 0 a i after statement 1, iteration i a → → {N 0 } → → a[x] → → → → {null,(N 1 [x],x ≤ ≤ i)} ≤ ≤ N 1 [i] N 1 j ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  9. Unusual aspects of the representation ! Heap objects named by allocation statement instances ! runtime variables appear in heap names ! Summarize points-to sets of multiple pointers as a mapping ! Mapping from array indices to heap names ! Conditions are imposed on heap names ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  10. Overview of the Algorithm ! An iterative data flow analysis ! Handles Java pointer semantics but not pointer arithmetic ! Context-sensitive, flow-sensitive, and inter-procedural ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  11. An Intuitive Flavor of the Analysis 1: Complex[] a = new Complex[n]; for(i = 0;i ≤ ≤ ≤ ≤ n;i++){ 2: a[i] = new Complex(); } 4: 1 + a[x] → → {null} → → a[x] → → → {null , (N 2 [i] , x=i)} → 2 + → → → {null , (N 2 [x] , x=i)} → 2 - a[x] → → → {null , (N 2 [x] , x=i - )} → 2 + a[x] → → → {null , (N 2 [x] , x=i - ) , (N 2 [x] , x=i)} → → → {null , (N 2 [x] , x={i - ,i})} → → 2 - a[x] → → {null , (N 2 [x] , x=i - )} → → a[x] → → → {null , (N 2 [x],x ≤ → ≤ n)} ≤ ≤ 4 ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  12. Aging of Different Depths 0: q = new obj(); 1: for(i = 0; i<n; i++){ 2: a[i] = q; 3: q = new Obj(); 0 1 2 n-1 Iterations 4: } a q Aging depth 0 (i → → i - ): p[x] → → → → → N 3 [i - ],x ≤ → ≤ ≤ ≤ i Aging depth 1 (i → → → → i-1): p[x] → → N 3 [x-1],x 1 ≤ → → ≤ ≤ i ≤ ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  13. Transfer Function for a[i]= q q if addr(r[x][y])=addr(a[i]) r[x][y] = r[x][y] otherwise r r[x] = a & y = i a i q r[x][y]=r[x][y] ∪ ∪ ∪ q,r[x] ∩ ∪ ∩ ∩ ∩ a ≠ ≠ ∅ ≠ ≠ ∅ ∅ |{null} & y = i ∅ ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  14. Application of Points-to Information ! Dependence test ! traditional loop transformations (loop interchanging, blocking, parallelization, vectorization) ! Heap analysis ! null pointer, array bounds checking ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  15. Experiment and Evaluation ! 8 numerical Java programs using multidimensional arrays ! Points-to analysis implemented in javac ! Uses Omega library for dependence test after obtaining points-to information ! Applied to dependence testing and null- pointer exception elimination ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  16. Analysis Cost prog. points : # of program points considered ours/javac : pointer analysis time/javac time Prog. Analysis Time Line Program Points (inline) time (ms) ours/javac listtable 10 9 0.1% 15 cmatmul 25 162 2.1% 47 cshallow 73 259 3.4% 197 (218) cholesky 19 195 2.6% 38 sor 18 184 2.5% 40 lufact 40 168 2.9% 287 (153) moldyn 53 77 1.0% 234 euler 299 2440 25% 915 (2028) ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  17. Dependence Test and Parallelization type : type-based pointer analysis + Omega flat : flat array + Omega our : our pointer analysis + Omega # of Dependences # of Parallel Loops Program type ours flat type ours actual listtable 5 2 3 0 1 1 cmatmul 8 3 3 3 7 7 cholesky 10 4 4 5 6 6 shallow 1092 152 152 6 17 17 sor 6 5 5 3 4 4 lufact 72 45 45 9 11 11 moldyn 2 0 0 17 19 19 euler 12559 2489 2489 36 55 55 Higher is better Lower is better ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  18. Summary ! A unified algorithm to capture both instance-wise and element-wise points-to information ! Finer-grained heap naming scheme ! Richer points-to mapping representation ! Complete coverage of Java pointer semantics ! Reasonable cost for regular array programs, but still more expensive than traditional pointer analysis ! Points-to information applied to loop-based dependence analysis and array exception elimination ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

  19. Pointer Analysis Road Map I nstance-wise a[x] at (s,i) vs. a at (s,i) vs. b at (t,j) b[y] at (t,j) points-to a at s vs. b at t analysis alias(a.ptr, alias(a,b) at s a.ptr.ptr) at s Element-wise shape alias analysis analysis ICS 2002 Instance-wise Points-to Analysis for Loop-based Dependence Testing

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