counting affine calculator and applications
play

Counting Affine Calculator and Applications Sven Verdoolaege Team - PowerPoint PPT Presentation

April 3, 2011 1 / 23 Counting Affine Calculator and Applications Sven Verdoolaege Team ALCHEMY, INRIA Saclay, France Sven.Verdoolaege@inria.fr April 3, 2011 April 3, 2011 2 / 23 Outline Introduction 1 2 Basic Concepts and Operations


  1. April 3, 2011 1 / 23 Counting Affine Calculator and Applications Sven Verdoolaege Team ALCHEMY, INRIA Saclay, France Sven.Verdoolaege@inria.fr April 3, 2011

  2. April 3, 2011 2 / 23 Outline Introduction 1 2 Basic Concepts and Operations Representation Dataflow Analysis Code Generation Transitive Closures 3 Introduction Reachability Analysis Basic Counting 4 5 Weighted Counting Introduction Dynamic Memory Requirement Estimation

  3. Introduction April 3, 2011 3 / 23 Outline Introduction 1 2 Basic Concepts and Operations Representation Dataflow Analysis Code Generation Transitive Closures 3 Introduction Reachability Analysis Basic Counting 4 5 Weighted Counting Introduction Dynamic Memory Requirement Estimation

  4. Introduction April 3, 2011 4 / 23 Introduction What is iscc ? ⇒ interactive interface to the barvinok counting library ⇒ also provides interface to the CLooG code generation library and to some operations of the isl integer set library ⇒ inspired by Omega Calculator from the Omega Project

  5. Introduction April 3, 2011 4 / 23 Introduction What is iscc ? ⇒ interactive interface to the barvinok counting library ⇒ also provides interface to the CLooG code generation library and to some operations of the isl integer set library ⇒ inspired by Omega Calculator from the Omega Project Where to get iscc ? ⇒ currently distributed as part of the barvinok distribution ⇒ available from http://freshmeat.net/projects/barvinok/

  6. Introduction April 3, 2011 4 / 23 Introduction What is iscc ? ⇒ interactive interface to the barvinok counting library ⇒ also provides interface to the CLooG code generation library and to some operations of the isl integer set library ⇒ inspired by Omega Calculator from the Omega Project Where to get iscc ? ⇒ currently distributed as part of the barvinok distribution ⇒ available from http://freshmeat.net/projects/barvinok/ How to run iscc ? ⇒ optionally obtain CLooG from http://www.cloog.org/ ⇒ compile and install barvinok following the instructions in README ⇒ run iscc Note: iscc currently does not use readline, so you may want to use a readline front-end: rlwrap iscc

  7. Introduction April 3, 2011 5 / 23 Interaction with Libraries isl : manipulates parametric affine sets and relations barvinok : counts elements in parametric affine sets and relations CLooG : generates code to scan elements in parametric affine sets GMP isl NTL PolyLib CLooG barvinok iscc

  8. Introduction April 3, 2011 5 / 23 Interaction with Libraries isl : manipulates parametric affine sets and relations barvinok : counts elements in parametric affine sets and relations CLooG : generates code to scan elements in parametric affine sets GMP isl NTL PolyLib CLooG barvinok iscc Future work: remove dependence on PolyLib and NTL

  9. Introduction April 3, 2011 5 / 23 Interaction with Libraries isl : manipulates parametric affine sets and relations barvinok : counts elements in parametric affine sets and relations CLooG : generates code to scan elements in parametric affine sets GMP isl CLooG barvinok iscc Future work: remove dependence on PolyLib and NTL

  10. Introduction April 3, 2011 5 / 23 Interaction with Libraries isl : manipulates parametric affine sets and relations barvinok : counts elements in parametric affine sets and relations CLooG : generates code to scan elements in parametric affine sets GMP isl CLooG barvinok iscc Future work: remove dependence on PolyLib and NTL merge barvinok into isl

  11. Basic Concepts and Operations April 3, 2011 6 / 23 Outline Introduction 1 2 Basic Concepts and Operations Representation Dataflow Analysis Code Generation Transitive Closures 3 Introduction Reachability Analysis Basic Counting 4 5 Weighted Counting Introduction Dynamic Memory Requirement Estimation

  12. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]);

  13. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); Iteration domains: D := [N] -> { S1[i] : 0 <= i < N; S2[i] : 0 <= i < N };

  14. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters Iteration domains: D := [N ] -> { S1[i] : 0 <= i < N; S2[i] : 0 <= i < N };

  15. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters (optional) name of space Iteration domains: D := [N ] -> { S1 [i] : 0 <= i < N; S2[i] : 0 <= i < N };

  16. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters (optional) name of space disjunction Iteration domains: D := [N ] -> { S1 [i] : 0 <= i < N; S2[i] : 0 <= i < N };

  17. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters (optional) name of space disjunction Iteration domains: D := [N ] -> { S1 [i] : 0 <= i < N; S2[i] : 0 <= i < N }; Read accesses: R := [N] -> { S1[i] -> a[i]; S2[i] -> t[N-i-1] } * D;

  18. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters (optional) name of space disjunction Iteration domains: D := [N ] -> { S1 [i] : 0 <= i < N; S2[i] : 0 <= i < N }; intersect domain of map on the left with set on the right Read accesses: R := [N] -> { S1[i] -> a[i]; S2[i] -> t[N-i-1] } * D;

  19. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters (optional) name of space disjunction Iteration domains: D := [N ] -> { S1 [i] : 0 <= i < N; S2[i] : 0 <= i < N }; intersect domain of map on the left with set on the right Read accesses: R := [N] -> { S1[i] -> a[i]; S2[i] -> t[N-i-1] } * D; Write accesses: W := { S1[i] -> t[i]; S2[i] -> b[i] } * D;

  20. Basic Concepts and Operations Representation April 3, 2011 7 / 23 Representation Simple program with temporary array t : for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); parameters (optional) name of space disjunction Iteration domains: D := [N ] -> { S1 [i] : 0 <= i < N; S2[i] : 0 <= i < N }; intersect domain of map on the left with set on the right Read accesses: R := [N] -> { S1[i] -> a[i]; S2[i] -> t[N-i-1] } * D; Write accesses: W := { S1[i] -> t[i]; S2[i] -> b[i] } * D; Schedule: S := { S1[i] -> [0,i]; S2[i] -> [1,i] };

  21. Basic Concepts and Operations Dataflow Analysis April 3, 2011 8 / 23 Dataflow Analysis for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); dep1,dep2

  22. Basic Concepts and Operations Dataflow Analysis April 3, 2011 8 / 23 Dataflow Analysis for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); individual pair of accesses A1:=[N] -> { S1[i] -> t[i] : 0 <= i < N }; A2:=[N] -> { S2[i] -> t[N-i-1] : 0 <= i < N }; dep1,dep2

  23. Basic Concepts and Operations Dataflow Analysis April 3, 2011 8 / 23 Dataflow Analysis for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); individual pair of accesses A1:=[N] -> { S1[i] -> t[i] : 0 <= i < N }; A2:=[N] -> { S2[i] -> t[N-i-1] : 0 <= i < N }; Map to all writes: R := A2 . (A1ˆ-1); dep1,dep2

  24. Basic Concepts and Operations Dataflow Analysis April 3, 2011 8 / 23 Dataflow Analysis for (i = 0; i < N; ++i) S1: t[i] = f(a[i]); for (i = 0; i < N; ++i) S2: b[i] = g(t[N-i-1]); individual pair of accesses A1:=[N] -> { S1[i] -> t[i] : 0 <= i < N }; A2:=[N] -> { S2[i] -> t[N-i-1] : 0 <= i < N }; Map to all writes: R := A2 . (A1ˆ-1); Last write: lexmax R; dep1,dep2

Recommend


More recommend