Encyclopedia of Parallel Computing

2011 Edition
| Editors: David Padua

Polyhedron Model

  • Paul Feautrier
  • Christian Lengauer
Reference work entry
DOI: https://doi.org/10.1007/978-0-387-09766-4_502



The polyhedron model (earlier known as the polytope model [2137]) is an abstract representation of a loop program as a computation graph in which questions such as program equivalence or the possibility and nature of parallel execution can be answered. The nodes of the computation graph, each of which represents an iteration of a statement, are associated with points of \({\mathbb{Z}}^{n}\)

This is a preview of subscription content, log in to check access.


  1. 1.
    Ancourt C, Irigoin F (1991) Scanning polyhedra with DO loops. In: Proceedings of the Third ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), ACM, pp 39–50Google Scholar
  2. 2.
    Bagnara R, Hill PM, Zaffanella E (2008) The Parma polyhedra library: toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems. Sci Comput Program 72(1–2):3–21, http://www.cs.unipr.it/ppl
  3. 3.
    Banerjee U (1993) Loop transformations for restructuring compilers: the foundations. Series on Loop Transformations for Restructuring Compilers. Kluwer, NorwellzbMATHGoogle Scholar
  4. 4.
    Banerjee U (1994) Loop parallelization. Series on Loop Transformations for Restructuring Compilers. Kluwer, NorwellzbMATHGoogle Scholar
  5. 5.
    Banerjee U (1997) Dependence analysis. Series on Loop Transformations for Restructuring Compilers. Kluwer, NorwellzbMATHGoogle Scholar
  6. 6.
    Bastoul C (2004) Code generation in the polyhedral model is easier than you think. In: Proceedings of the 13th International Conference on Parallel Architecture and Compilation Techniques (PACT), IEEE Computer Society Press, pp 7–16, http://www.cloog.org/
  7. 7.
    Bastoul C, Feautrier P (2003) Improving data locality by chunking. In: Compiler Construction (CC), Lecture Notes in Computer Science, vol 2622. Springer, Berlin, pp 320–335Google Scholar
  8. 8.
    Bernstein AJ (1966) Analysis of programs for parallel processing. In: IEEE Transactions on Electronic Computers, EC-15:757–762Google Scholar
  9. 9.
    Bondhugula U, Hartono A, Ramanujam J, Sadayappan P (2008) A practical automatic polyhedral parallelizer and locality optimizer. SIGPLAN Notices, 43(6):101–113, 2008. http://pluto-compiler.sourceforge.net/
  10. 10.
    Clauss P (1996) Counting solutions to linear and non-linear constraints through Ehrhart polynomials. In: Proceedings of the ACM/IEEE Conference on Supercomputing, ACM, pp 278–285Google Scholar
  11. 11.
    Clauss P, Loechner V (1998) Parametric analysis of polyhedral iteration spaces, extended version. J VLSI Signal Process 19(2):179–194, http://icps.u-strasbg.fr/polylib/
  12. 12.
    Collard J-F (2003) Reasoning about program transformations – imperative programming and flow of data. Springer, BerlinzbMATHGoogle Scholar
  13. 13.
    Collard J-F, Griebl M (1999) A precise fixpoint reaching definition analysis for arrays. In: Carter L, Ferrante J (eds) Languages and Compilers for Parallel Computing (LCPC), Lecture Notes in Computer Science, vol 1863, Springer, Berlin, pp 286–302Google Scholar
  14. 14.
    Collard J-F (1995) Automatic parallelization of while-loops using speculative execution. Int J Parallel Program 23(2):191–219Google Scholar
  15. 15.
    Darte A, Robert Y, Vivien F (2000) Scheduling and automatic parallelization. Birkhäuser, BostonzbMATHGoogle Scholar
  16. 16.
    Darte A, Schreiber R, Villard G (2005) Lattice-based memory allocation. IEEE Transaction on Computers TC-54(10):1242–1257Google Scholar
  17. 17.
    D’Hollander EH (1992) Partitioning and labeling of loops by unimodular transformations. IEEE Trans Parallel Distrib Syst 3(4):465–476MathSciNetGoogle Scholar
  18. 18.
    Faber P (2007) Code optimization in the polyhedron model – improving the efficiency of parallel loop nests. PhD thesis, Department of Informatics and Mathematics, University of Passau, 2007. http://www.fim.unipassau.de/cl/publications/docs/Faber07.pdf
  19. 19.
    Feautrier P (1988) Parametric integer programming. Oper Res 22(3):243–268, http://www.piplib.org
  20. 20.
    Feautrier P (1991) Dataflow analysis of scalar and array references. Parallel Program 20(1):23–53zbMATHGoogle Scholar
  21. 21.
    Feautrier P (1996) Automatic parallelization in the polytope model. In: Perrin G-R, Darte A (eds) The data parallel programming model. Lecture Notes in Computer Science, vol 1132, Springer, Berlin, pp 79–103Google Scholar
  22. 22.
    Griebl M (1997) The mechanical parallelization of loop nests containing WHILE loops. PhD thesis, Department of Mathematics and Informatics, University of Passau, January 1997. http://www.fim.unipassau.de/cl/publications/docs/Gri96.pdf
  23. 23.
    Griebl M (2004) Automatic parallelization of loop programs for distributed memory architectures. Habilitation thesis, Department of Informatics and Mathematics, University of Passau, June 2004. http://www.fim.unipassau.de/cl/publications/docs/Gri04.pdf
  24. 24.
    Griebl M, Feautrier P, Lengauer C (2000) Index set splitting. Int J Parallel Process 28(6):607–631 Special Issue on the International Conference on Parallel Architectures and Compilation Techniques (PACT’99)Google Scholar
  25. 25.
    Griebl M, Lengauer C (1994) On the space-time mapping of WHILE loops. Parallel Process Lett 4(3):221–232Google Scholar
  26. 26.
    Griebl M, Lengauer C (1997) The loop parallelizer LooPo – announcement. In: Sehr D (ed) Languages and Compilers for Parallel Computing (LCPC). Lecture Notes in Computer Science, vol 1239, pp 603–604. Springer, Berlin, http://www.infosun.fim.uni-passau.de/cl/loopo/
  27. 27.
    Größlinger A (2009) The challenges of non-linear parameters and variables in automatic loop parallelisation. PhD thesis, Department of Informatics and Mathematics, University of Passau, December 2009. http://nbnresolving.de/urn:nbn:de:bvb:739-opus-17893
  28. 28.
    Größlinger A, Griebl M, Lengauer C (2006) Quantifier elimination in automatic loop parallelization. J Symbolic Computation 41(11):1206–1221zbMATHGoogle Scholar
  29. 29.
    Größlinger A, Schuster S (2008) On computing solutions of linear diophantine equations with one non-linear parameter. In: Proceedings of the 10th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), IEEE Computer Society Press, pp 69–76Google Scholar
  30. 30.
    Guerdoux-Jamet P, Lavenier D (1997) SAMBA: hardware accelerator for biological sequence comparison. Comput Appl Biosci 13(6):609–615Google Scholar
  31. 31.
    Irigoin F, Triolet R (1989) Dependence approximation and global parallel code generation for nested loops. In: Cosnard M, Robert Y, Quinton P, Raynal M (eds) Parallel and distributed algorithms. Bonas, North-Holland, pp 297–308Google Scholar
  32. 32.
    Jeannet B, Miné A (2009) APRON: a library of numerical abstract domains for static analysis. In: Computed Aided Verification (CAV). Lecture Notes in Computer Science, vol 5643, Springer, pp 662–667, http://apron.cri.ensmp.fr/library
  33. 33.
    Kahn G (1974) The semantics of simple language for parallel programming. In: Proceedings of the IFIP Congress, Stockholm, pp 471–475Google Scholar
  34. 34.
    Karp RM, Miller RE, Winograd S (1967) The organization of computations for uniform recurrence equations. J ACM 14(3):563–590zbMATHMathSciNetGoogle Scholar
  35. 35.
    Kienhuis B, Rijpkema E, Ed Deprettere F (2000) Compaan: deriving process networks from matlab for embedded signal processing architectures. In: Vahid F, Madsen J (eds) Proceedings of the Eighth International Workshop on Hardware/Software Codesign (CODES 2000), ACM pp 13–17Google Scholar
  36. 36.
    Lamport L (1974) The parallel execution of DO loops. Comm ACM 17(2):83–93zbMATHMathSciNetGoogle Scholar
  37. 37.
    Lengauer C (1993) Loop parallelization in the polytope model. In: Best E (ed) CONCUR’93. Lecture Notes in Computer Science, vol 715, pp 398–416, Springer, 1993Google Scholar
  38. 38.
    Loos R, Weispfenning V (1993) Applying linear quantifier elimination. The Computer J 36(5):450–462zbMATHMathSciNetGoogle Scholar
  39. 39.
    Pouchet L-N, Bastoul C, Cohen A, Cavazos J (2008) Iterative optimization in the polyhedral model: Part II, multidimensional time. SIGPLAN Notices 43(6):90–100Google Scholar
  40. 40.
    Pouchet L-N, Bastoul C, Cohen A, Vasilache N (2007) Iterative optimization in the polyhedral model: Part I, one-dimensional time. In IEEE/ACM Fifth International Symposium on Code Generation and Optimization (CGO’07), IEEE Computer Society Press, pp 144–156Google Scholar
  41. 41.
    Pugh W (1991) The Omega test: a fast and practical integer programming algorithm for dependence analysis. In: Proceedings of the 5th International Conference on Supercomputing, ACM, pp 4–13. 1991. http://www.cs.umd.edu/projects/omega
  42. 42.
    Quinton P (1983) The systematic design of systolic arrays. In: Soulié FF, Robert Y, Tchuenté M (eds) Automata networks in computer science, chapter 9, pp 229–260. Manchester University Press, 1987. Also: Technical Reports 193 and 216, IRISA (INRIA-Rennes)Google Scholar
  43. 43.
    Schrijver A (1986) Theory of linear and integer programming. Wiley, New YorkzbMATHGoogle Scholar
  44. 44.
    Smith TF, Waterman MS (1981) Identification of common molecular subsequences. J Molecular Biology 147(1):195–197Google Scholar
  45. 45.
    Trifunovic K, Cohen A, Edelsohn D, Feng L, Grosser T, Jagasia H, Ladelsky R, Pop S, Sjödin J, Upadrasta R (2010) GRAPHITE two years after. In: Proceedings of the 2nd International Workshop on GCC Research Opportunities (GROW), pp 4–19, January 2010. http://gcc.gnu.org/wiki/GROW-2010
  46. 46.
    Verdoolaege S (2009) An integer set library for program analysis. In: Advances in the theory of integer linear optimization and its extensions. AMS 2009 Western Section, 2009, http://freshmeat.net/projects/isl/
  47. 47.
    Verdoolaege S, Nikolov H, Todor N, Stefanov P (2006) Improved derivation of process networks. In Proceedings of the 4th International Workshop on Optimization for DSP and Embedded Systems (ODES), 2006, http://www.ece.vill.edu/∼deepu/odes/odes-4_digest.pdf
  48. 48.
    Verdoolaege S, Seghir R, Beyls K, Loechner V, Bruynooghe M (2007) Counting integer points in parametric polytopes using Barvinok’s rational functions. Algorithmica 48(1):37–66, http://freshmeat.net/projects/barvinok
  49. 49.
    Wolf ME, Lam MS (1991) A data locality optimizing algorithm. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), ACM, pp 30–44Google Scholar
  50. 50.
    Xue J (2000) Loop tiling for parallelism. Kluwer, BostonzbMATHGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC 2011

Authors and Affiliations

  • Paul Feautrier
    • 1
  • Christian Lengauer
    • 1
  1. 1.Laboratoire LIPCNRS École Normale Supérieure de LyonLyon Cedex 07France