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

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