semantic array dataflow analysis
play

Semantic Array Dataflow Analysis Paul Iannetta Laure Gonnord UCBL - PowerPoint PPT Presentation

Semantic Array Dataflow Analysis Paul Iannetta Laure Gonnord UCBL 1, CNRS, ENS de Lyon, Inria, UCBL 1, CNRS, ENS de Lyon, Inria, LIP, F-69342, LYON Cedex 07, France LIP, F-69342, LYON Cedex 07, France Lionel Morel Tomofumi Yuki Univ


  1. Semantic Array Dataflow Analysis Paul Iannetta Laure Gonnord UCBL 1, CNRS, ENS de Lyon, Inria, UCBL 1, CNRS, ENS de Lyon, Inria, LIP, F-69342, LYON Cedex 07, France LIP, F-69342, LYON Cedex 07, France Lionel Morel Tomofumi Yuki Univ Grenoble Alpes, CEA, List Inria, Univ Rennes, CNRS, IRISA F-38000 Grenoble, France F-35000 Rennes, France January 23, 2019 If you think I missed a reference please tell me! paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 1 / 22

  2. Inspiration & Motivations 1 Approach 2 Direct Dependencies 3 paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 2 / 22

  3. Inspiration & Motivations 1 Approach 2 Direct Dependencies 3 paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 3 / 22

  4. Thesis Context (ANR CoDaS: [Gonnord 2017]) Inspiration[Alias et al. 2010]: Termination: generates affine schedules (ranking functions) with classical Polyhedral Model computations. Program semantics: approximated with (polyhedral) Abstract Interpretation. Thesis’ subject: A Polyhedral Model Extension which supports: ◮ Trees [Cohen 1999] ◮ Maps = allow to index arrays by array cells No closed form to access elements Need to make approximations ◮ First step here: general control flow. paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 4 / 22

  5. A Semantic Ground For Abstract Intrepretation Not rely on syntax Set as few as possible restrictions paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 5 / 22

  6. A Semantic Ground For Abstract Intrepretation Not rely on syntax Set as few as possible restrictions Too constrained syntax (iteration variable is apparant) for i from 0 to N [Feautrier 1991] for i from 0 while cond(i) [Griebl 1997] paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 5 / 22

  7. A Semantic Ground For Abstract Intrepretation Not rely on syntax Set as few as possible restrictions Too constrained syntax (iteration variable is apparant) for i from 0 to N [Feautrier 1991] for i from 0 while cond(i) [Griebl 1997] Our target (general while loops) while cond(i,j,k,l) { ... } paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 5 / 22

  8. A Semantic Ground For Abstract Intrepretation Not rely on syntax Set as few as possible restrictions Too constrained syntax (iteration variable is apparant) for i from 0 to N [Feautrier 1991] for i from 0 while cond(i) [Griebl 1997] Our target (general while loops) while cond(i,j,k,l) { ... } Iteration variable is not visible anymore Leads to non polyhedral programs Polyhedral approximation paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 5 / 22

  9. Benefits of a Semantic - of Abstract Interpretation Dissociate definitions from computations: ◮ Computations are expressed within the model ◮ Can characterize dependences within the model ◮ Allows verification. ◮ Allows precise characterisations of where abstractions/approximations are made. paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 6 / 22

  10. A Semantic Ground for Earlier Projects Be a model for compiler IR, LLVM [Grosser et al. 2012] or GCC [Trifunović et al. 2010] ◮ Integration within real compiler ◮ Composition with other optimizations Would a posteriori justify the implementation on top of a compiler IR. paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 7 / 22

  11. Inspiration & Motivations 1 Approach 2 Direct Dependencies 3 paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 8 / 22

  12. Steps of the Approach 1 Define a barebone language ◮ Allow general programs on arrays ◮ Can be computed from a CFG paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 9 / 22

  13. Steps of the Approach 1 Define a barebone language ◮ Allow general programs on arrays ◮ Can be computed from a CFG 2 Equip it with a dependence-enabled semantic paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 9 / 22

  14. Steps of the Approach 1 Define a barebone language ◮ Allow general programs on arrays ◮ Can be computed from a CFG 2 Equip it with a dependence-enabled semantic 3 Show that dependences can be statically computed (equivalence with previous work). paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 9 / 22

  15. A Barebone Language � Aexp � ::= � Num � | � Aexp � � Aop � � Aexp � | � Vexp � � Aop � ::= ‘ + ’ | ‘ ∗ ’ | ‘ - ’ | ‘ / ’ | ‘ mod ’ � Bexp � ::= ‘ true ’ | ‘ false ’ | !( � Bexp � ) | � Bexp � � Bop � � Bexp � | � Aexp � � Cop � � Aexp � � Bop � ::= ‘ or ’ | ‘ and ’ � Cop � ::= ‘ < ’ | ‘ == ’ � Vexp � ::= X | X‘ [ ’ � Aexp � ‘ ] ’ � Sexp � ::= κ n ‘ :begin ’ | ‘ skip ’ | � Sexp � ‘ ; ’ � Sexp � | κ n ‘ :if ’ � Bexp � ‘ then ’ � Sexp � ‘ else ’ � Sexp � ‘ fi ’ | κ n ‘ :while ’ � Bexp � ‘ do ’ � Sexp � ‘ done ’ | � Vexp � ‘ := ’ � Aexp � paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 10 / 22

  16. A Barebone Language � Aexp � ::= � Num � | � Aexp � � Aop � � Aexp � | � Vexp � � Aop � ::= ‘ + ’ | ‘ ∗ ’ | ‘ - ’ | ‘ / ’ | ‘ mod ’ � Bexp � ::= ‘ true ’ | ‘ false ’ | !( � Bexp � ) What is important about that syntax is that: | � Bexp � � Bop � � Bexp � | � Aexp � � Cop � � Aexp � Allow arrays (scalars = 1-length array) � Bop � ::= ‘ or ’ | ‘ and ’ Allow conditional tests to reference array cells � Cop � ::= ‘ < ’ | ‘ == ’ Allow array cells to be referenced by other array cells Allow while loops with no restrictions on conditions � Vexp � ::= X | X‘ [ ’ � Aexp � ‘ ] ’ � Sexp � ::= κ n ‘ :begin ’ | ‘ skip ’ | � Sexp � ‘ ; ’ � Sexp � | κ n ‘ :if ’ � Bexp � ‘ then ’ � Sexp � ‘ else ’ � Sexp � ‘ fi ’ | κ n ‘ :while ’ � Bexp � ‘ do ’ � Sexp � ‘ done ’ | � Vexp � ‘ := ’ � Aexp � paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 11 / 22

  17. An Example Program 01 i = 0 02 while i < N 03 j = 0 04 while j < 2 05 A[i+j+1] = A[j] + j 06 j = j + 1 07 k = 0 08 while k < 2 09 A[k+3+i] = A[k] + i 10 k = k + 1 11 i = i + 1 Iteration variables are not visible Add annotation to keep track of operations paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 12 / 22

  18. Annotation 00 κ 0 :begin 01 i = 0 02 κ 1 :while i < N 03 j = 0 04 κ 2 :while j < 2 05 A[i+j+1] = A[j] + j 06 j = j + 1 07 k = 0 08 κ 3 :while k < 2 09 A[k+3+i] = A[k] + i 10 k = k + 1 11 i = i + 1 Add variables which counts operations on a hierarchical level paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 13 / 22

  19. Iteration variables κ i in the semantics What the semantic is about? Describe the evolution of an augmented state: Standard state: snapshot of the memory at time t Augmented Memory: value and last modification time The current timestamp : a vector of κ s paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 14 / 22

  20. Unrolling of an Execution 00 κ 0 :begin Table: Timestamp 01 i = 0 02 κ 1 :while i < N 0 03 j = 0 κ 0 04 κ 2 :while j < 2 05 A[i+j+1] = A[j] + j 06 j = j + 1 07 k = 0 08 κ 3 :while k < 2 09 A[k+3+i] = A[k] + i 10 k = k + 1 11 i = i + 1 Cell Value Last access i 0 [ � κ 0 = 0 � ] j A[1] A[2] k A[3] A[4] Table: Memory State paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 15 / 22

  21. Unrolling of an Execution 00 κ 0 :begin Table: Timestamp 01 i = 0 02 κ 1 :while i < N 1 03 j = 0 κ 0 04 κ 2 :while j < 2 05 A[i+j+1] = A[j] + j 06 j = j + 1 07 k = 0 08 κ 3 :while k < 2 09 A[k+3+i] = A[k] + i 10 k = k + 1 11 i = i + 1 Cell Value Last access i 0 [ � κ 0 = 0 � ] j A[1] A[2] k A[3] A[4] Table: Memory State paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 15 / 22

  22. Unrolling of an Execution 00 κ 0 :begin Table: Timestamp 01 i = 0 02 κ 1 :while i < N 1 03 j = 0 κ 0 04 κ 2 :while j < 2 0 κ 1 05 A[i+j+1] = A[j] + j 06 j = j + 1 07 k = 0 08 κ 3 :while k < 2 09 A[k+3+i] = A[k] + i 10 k = k + 1 11 i = i + 1 Cell Value Last access i 0 [ � κ 0 = 0 � ] j 0 [ � κ 0 = 1 � , � κ 1 = 0 � ] A[1] A[2] k A[3] A[4] Table: Memory State paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 15 / 22

  23. Unrolling of an Execution 00 κ 0 :begin Table: Timestamp 01 i = 0 02 κ 1 :while i < N 1 03 j = 0 κ 0 04 κ 2 :while j < 2 1 κ 1 05 A[i+j+1] = A[j] + j 06 j = j + 1 07 k = 0 08 κ 3 :while k < 2 09 A[k+3+i] = A[k] + i 10 k = k + 1 11 i = i + 1 Cell Value Last access i 0 [ � κ 0 = 0 � ] j 0 [ � κ 0 = 1 � , � κ 1 = 0 � ] A[1] A[2] k A[3] A[4] Table: Memory State paul.iannetta@ens-lyon.fr Semantic Array Dataflow Analysis January 23, 2019 15 / 22

Recommend


More recommend