Top Banner

of 21

FeautrierLengauerPolyhedronModel

Feb 28, 2018

Download

Documents

tharun
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    1/21

    See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/233401207

    Polyhedron Model

    Chapter September 2011

    DOI: 10.1007/978-0-387-09766-4_502

    CITATIONS

    2

    READS

    80

    2 authors:

    Paul Feautrier

    Ecole normale suprieure de Lyon

    130PUBLICATIONS 3,633CITATIONS

    SEE PROFILE

    Christian Lengauer

    Universitt Passau

    218PUBLICATIONS 2,062CITATIONS

    SEE PROFILE

    All in-text references underlined in blueare linked to publications on ResearchGate,

    letting you access and read them immediately.

    Available from: Paul Feautrier

    Retrieved on: 26 May 2016

    https://www.researchgate.net/profile/Paul_Feautrier?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_7https://www.researchgate.net/institution/Ecole_normale_superieure_de_Lyon?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_6https://www.researchgate.net/profile/Christian_Lengauer?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_7https://www.researchgate.net/institution/Universitaet_Passau?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_6https://www.researchgate.net/?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_1https://www.researchgate.net/profile/Christian_Lengauer?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_7https://www.researchgate.net/institution/Universitaet_Passau?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_6https://www.researchgate.net/profile/Christian_Lengauer?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_5https://www.researchgate.net/profile/Christian_Lengauer?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_4https://www.researchgate.net/profile/Paul_Feautrier?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_7https://www.researchgate.net/institution/Ecole_normale_superieure_de_Lyon?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_6https://www.researchgate.net/profile/Paul_Feautrier?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_5https://www.researchgate.net/profile/Paul_Feautrier?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_4https://www.researchgate.net/?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_1https://www.researchgate.net/publication/233401207_Polyhedron_Model?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_3https://www.researchgate.net/publication/233401207_Polyhedron_Model?enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw%3D%3D&el=1_x_2
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    2/21

    TITLE

    The Polyhedron Model

    BYLINE

    Paul FeautrierLIP, ENS Lyon

    [email protected]

    Christian Lengauer

    Department of Informatics and MathematicsUniversity of Passau

    PassauGermany

    [email protected]

    SYNONYMS

    Polytope model

    DEFINITION

    The polyhedron model (earlier known as the polytope model[21,37]), is an abstractrepresentation 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 an-swered. The nodes of the computation graph, each of which represents an iteration of

    a statement, are associated with points of Zn. These points belong to polyhedra whichare inferred from the bounds of the surrounding loops. In turn, these polyhedra can

    be analyzed and transformed with the help of linear programming tools. This enablesthe automatic exploration of the space of equivalent programs; one may even formu-

    late an objective function (such as the minimum number of synchronization points)and ask the linear programming tool for an optimal solution. The polyhedron model

    has stringent applicability constraints (mainly to FOR loop programs acting on arrays),but extending its limits has been an active field of research. Beyond autoparalleliza-

    tion, the polyhedron model can be useful in many situations which call for a programtransformation, such as in memory or performance optimization.

    1

    https://www.researchgate.net/publication/2508644_Automatic_Parallelization_in_the_Polytope_Model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2824885_Loop_Parallelization_in_the_Polytope_Model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2824885_Loop_Parallelization_in_the_Polytope_Model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2508644_Automatic_Parallelization_in_the_Polytope_Model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    3/21

  • 7/25/2019 FeautrierLengauerPolyhedronModel

    4/21

    Since program equivalence is undecidable in general, one must be content with con-servative answers, i.e. with sufficient but not necessary equivalence conditions. The

    usual approach is based on the concept ofdependences(see also the [Dependence]entry in this encyclopedia). Assuming that, given the name of an instanceu, one cancharacterize the sets (or supersets) of read and written memory cells, R(u)and W(u),u andv are in dependence, written u v, if both access some memory cell and oneof them at least modifies it. In symbols: uv iff at least one of the sets R(u) W(v),W(u) R(v) or W(u) W(v) is not empty. The concept of a dependence was firstformulated by Bernstein[8]. One can prove that two programs are equivalent if depen-dent instances are executed in the same order in both.

    Aside. Proving equivalence starts by showing that under Bernsteins conditions,

    two independent consecutive instances can be interchanged without modifying

    the final state of memory. In the case of a terminating program, the result follows

    by specifying a succession of interchanges that convert one order into the other

    without changing the final result. The proof is more complex for non terminatingprograms and depends on a fairness hypothesis, namely that every instance is

    to be executed eventually. One can then prove that the succession of values

    assigned to each variable its history is the same for both programs. One

    first shows that the succession of assignments to a given variable is the same for

    both programs, since they are in dependence, and, as a consequence, that the

    assigned values are the same, provided all instances are deterministic, i.e. return

    the same value when executed with the same arguments.

    To construct a parallel program, one wants to remove all orderings between indepen-dent instances, i.e. construct the relation , and take its transitive closure. This

    execution order may be too complex to be represented by the available parallel con-structs, like the parallel sections or the parallel loops of OpenMP. In this case, one has

    to trade some parallelism for a more compact program.It remains to explain how to name instances, how to specify the index domain of a

    program and its execution order, and how to compute dependences. There are manypossibilities, but most of them ask for the resolution of undecidable problems, which isunsuitable for a compiler. In the polyhedron model, sets are represented aspolyhedra

    in Zn, i.e. sets of (integer) solutions of systems of affine inequalities (inequalities of the

    formA x b, whereAis a constant matrix,xa variable vector andba constant vector).It so happens that these sets are the subject of a well developed theory, (integer) linear

    programming[43], and that all the necessary tools have efficient implementations.The crucial observation is that the iterations of a regular loop (a Fortran DO loop, or aPascal FOR loop, or restricted forms of C, C++ and Java FOR loops) are represented

    by a segment (which is a one-dimensional polyhedron), and that the iterations of aregular loop nest are represented by a polyhedron with as many dimensions as the

    nest has loops. Consider, for instance, the first statement of the loop program in Fig.1(a). It is enclosed in two loops. The instances it generates can be named by stating

    the values ofi andj , and the iteration domain is defined by the constraints:

    1i n, 1 j i+m

    3

    https://www.researchgate.net/publication/3476943_Analysis_of_Programs_for_Parallel_Processing?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/228057867_Theory_of_Linear_and_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/228057867_Theory_of_Linear_and_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3476943_Analysis_of_Programs_for_Parallel_Processing?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    5/21

    for i= 1 to n do

    for j = 1 to i+m do

    S1 : A(i, j) = A(i1, j) +A(i, j1)

    od

    S2 : A(i, i+m+1) =A(i1, i+m)+A(i, i+m)

    od

    (a) source loop nest

    for t= 0 to m+2n1 do

    parfor p= max(0, tn+1) to min(t, (t+m)/2)do

    if2p= t+m+1 then

    S2 : A(pm, p+1) =A(pm1, p) +A(pm, p)

    else

    S1 : A(tp+1, p+1) =A(tp, p+1) +A(tp+1, p)

    fi

    od

    od

    (d) target loop nest

    j

    i t

    p

    i

    (b) source iteration domain (c) target iteration domain

    Figure 1: Loop nest transformation in the basic polyhedron model

    4

  • 7/25/2019 FeautrierLengauerPolyhedronModel

    6/21

    which are affine and therefore define a polyhedron. In the same way, the iteration do-main of the second statement is1 i n. For better readability, the loop counters areusually arranged from outside inward in a vector, theiteration vectorof the instance.Observe that, in this representation, n and m are parameters, and that the size of therepresentation is independent of their values. Also, the upper bound of the loop on jis not constant: iteration domains are not limited to parallelepipeds.The iteration domain of the program is the disjoint union of these two polyhedra, asdepicted in Fig. 1(b) with dependences. (The dependences and the right side of the

    figure are discussed below.) To distiguish the several components of the union, onecan use statement labels, as in:

    E={S1, i , j | 1 i n, 1 j i+m} { S2, i |1 i n}

    The execution order can be deduced from two observations:

    In a program without control constructs, the execution order is textual order. Let

    u

  • 7/25/2019 FeautrierLengauerPolyhedronModel

    7/21

    whereFRis a matrix of dimension dAdRwithdRbeing the number of loops surround-ing R, and gR is a vector of dimension dA. One may associate with each candidatedependence a system of constraints by gathering the subscripts equations, the con-straints which define the iteration domains of R and S, and the sequencing predicateabove. All of these constraints are affine, with the exception of the sequencing pred-

    icate which is a disjunction of affine constraints. Each disjunct can be tested for so-lutions, either by ad hocconservative methods see the [Banerjee test] entry in thisencyclopedia or by linear programming algorithms see the [Dependence] entry.

    In summary, a program can be handled in the polyhedron model and is then called aregularorstatic control program if its only control constructs are (also called regular)

    loops with affine bounds and its data structures are either scalars or arrays with affinesubscripts in the surrounding loop counters. It should be noted that these restrictions

    must not be taken syntactically but semantically. For instance, in the program:

    i= 0; k= 0;

    whilei < ndoa[k] = 0.0;i= i+1;k= k +3

    od

    the loop is in fact regular with counter i, and the subscript of a is really 3 i, which isaffine. There are many classical techniques here, induction variable detection fortransforming such constructs into a more polyhedron-friendly form.

    Regular programs are mainly found in scientific computing, linear algebra and signalprocessing, where unbounded iteration domains are frequent. Perhaps more surpris-

    ingly, many variants of the Smith and Waterman algorithm [44],which is the basic toolfor genetic sequence analysis, are regular and can be optimized with polyhedral tools

    [30]. Also, while large programs rarely fit in the model, it is often possible to extractregular kernels and to process them in isolation.

    Transformations

    The main devices for program optimization in the polyhedron model are coordinatetransformations of the iteration domain.

    An example

    Consider Fig. 1 as an illustration of the use of transformations. Fig. 1(a) presents a

    sequential source program with two nested loops. The loop nest is imperfect: not allstatements belong to the innermost loop body.

    Fig. 1(b) depicts the iteration domain of the source program, as explained in the pre-vious section. The arrows represent dependences and impose a partial order on the

    loop steps. Apart from these ordering constraints, steps can be executed in any orderor in parallel.

    6

    https://www.researchgate.net/publication/15934339_Identification_of_Common_Molecular_Subsequences?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/13754917_SAMBA_Hardware_accelerator_for_biological_sequence_comparison?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/15934339_Identification_of_Common_Molecular_Subsequences?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/13754917_SAMBA_Hardware_accelerator_for_biological_sequence_comparison?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    8/21

    In the source iteration domain, parallelism is in some sense hidden. The loop on j issequential, since the value stored in A(i, j) at iteration j is used as A(i, j 1) in thenext iteration. The same is true for the loop oni. However, parallelism can be madevisible by applying a skewing transformation as in Fig. 1(c). For a given value of t,there are no dependences between iterations of thep loop, which is therefore parallel.The required transformation can be viewed as a change of coordinates or a renaming:

    S1 :

    tp

    =

    1 10 1

    ij

    +

    21

    S1 :

    tp

    =

    21

    i

    +

    m 1

    m

    Observe that the transformation for S1 has the non-singular matrix

    1 10 1

    and,

    hence, is bijective. Furthermore, the determinant of this matrix is 1 (the matrix isunimodular), which means that the transformation is bijective in the integers.

    A target loop nest which corresponds to the target iteration domain is depicted in

    Fig. 1(d). The issue of target code generation is addressed later. For now, just notethat the target loop nest is much more complex than the source loop nest, and that itwould be cumbersome and error-prone to derive it manually. On the other hand, the

    fact that both transformation matrices are unimodular simplifies the target code: bothloops have unit stride.

    The search for a transformation

    The fundamental constraint on a transformation in the polyhedron model is affinity.

    As explained before, each row of the transformation matrix corresponds to one axisof the target coordinate system. Each axis represents either a sequential loop or a

    parallel loop. Iterations of a sequential loop are executed successively; hence, theloop counter can be interpreted as (logical) time. Iterations of a parallel loop are

    executed simultaneously (available resources permitting) by different processors; thevalues of their loop counters correspond to processor names. Finding the coefficients

    for the sequential axes constitutes a problem of scheduling, finding the coefficients forthe parallel axes one of placement or allocation. Different methods exist for solving

    these two problems.The order in which sequential and parallel loops are nested is important. One can

    show that it is always possible to move the parallel loops deeper inside the loop nest,which generates lock-step parallelism, suitable for vector or VLIW processors. For less

    tightly coupled parallelism, suitable for multicores or message-passing architectures,one would like to move the parallel loops farther out, but this is not always possible.

    Scheduling

    A schedule maps each instance in the iteration domain to a logical date. In contrast to

    what happens in task graph scheduling (see the corresponding entry), the number ofinstances is large, or unknown at compile time, or even infinite, so that it is impossible

    to tabulate this mapping. The schedule must be a closed-form function of the iteration

    7

  • 7/25/2019 FeautrierLengauerPolyhedronModel

    9/21

    vector; we will see presently that its determination is easy only if restricted to affinefunctions.

    LetR(i) be the schedule of instanceR, i. Since the source of a dependence mustbe executed before its destination, the schedule must satisfy the following causality

    constraint:

    i, j :R, i S, j R(i)< S(j).

    There are as many such constraints as there are dependences in the program. The

    unknowns are the coefficients ofRandS. The first step in the solution is the elimina-tion of the quantifiers oni and j . There are general methods of quantifier elimination[38] but, due to the affinity of the constraints in the polyhedron model, more efficientmethods can be applied. In fact, the form of the causality constraint above asserts

    that the affinedelayS(j)R(i) must be positive inside thedependence polyhedron{i, j| R, i S, j}. To this end, it is necessary and sufficient that the delay be positiveat the vertices of the dependence polyhedron, or that it be an affine positive combina-tion of the dependence constraints (Farkas lemma). The result of quantifier elimination

    is a linear system of inequalities which can be solved by any linear programming tool.This system of constraints may not be feasible, i.e. it may have no solution. This

    means simply that no linear-time parallel execution exists for the source program. Thesolution is to construct a multidimensional schedule. In the target loop nest, there will

    be as many sequential loops as the schedule has dimensions.More information on scheduling can be found in the [Scheduling Algorithms] entry of

    this encyclopedia.

    Placement

    A placement maps each instance to a (virtual) processor number. Again, this mappingmust be in the form of a closed affine function. In contrast to scheduling, there is nolegality constraint for placements: any placement is valid, but may be inefficient.

    For each dependence between instances that are assigned to distinct processors,one must generate a communication or a synchronization, depending on whether the

    target architecture has distributed or shared memory. These are costly operations,which must be kept at a minimum. Hence, the aim of a placement algorithm is to find

    a function: : E[0, P[

    wherePis the number of processors, such that the size of the set:

    C={u, v E| u v,(u)=(v)}

    is minimal. Since counting integer points inside a polyhedron is difficult, one usu-ally uses the following heuristics: try to cut as many dependences as possible. A

    dependence from statementR to Scan becutif the following constraint holds:

    R, i S, j R(i) =S(j).

    This condition can be transformed into a system of homogeneous linear equations for

    the coefficients of . The problem is that, in most cases, if one tries to satisfy all the

    8

  • 7/25/2019 FeautrierLengauerPolyhedronModel

    10/21

    cutting constraints, the only solution is (u) = 0, which corresponds to execution ononly one processor: this, indeed, results in the minimal number of synchronizations

    (namely zero)! A possible way out is to solve the cutting constraints one at time, inorder of decreasing size of the dependence polyhedron, and to stop just before gener-

    ating the trivial solution. The uncut dependences induce synchronization operations.

    If all dependences can be cut, the program has communication-free parallelismandcan be rewritten with one or more outermost parallel loops.In the special case of a perfect loop nest with uniform dependences, one may ap-

    proximate the dependence graph by the translations of the lattice generated by thedependence vectors. If the determinant of this lattice is larger than1, the program canbe split into as many independent parts [17].Lastly, instead of assigning a processor number to each instance, one may assign

    all iterations of one statement to the same processor [35, 47]. This results in theconstruction of a Kahn process network[33].

    Code generation

    In the polyhedron model, a transformation of the source iteration domain can be foundautomatically, which optimizes some objective function. The highest execution speed

    (i.e. the minimum number of steps to be executed in sequence) may be the first thingthat comes to mind, but many other functions are possible.

    Unfortunately, it is not trivial to generate efficient target code from the optimal solutionin the model. There are several factors that can degrade performance seriously. The

    enumeration of the points in the target iteration domain involves tests for the lower andupper border. If the code is not chosen wisely, these tests will often degrade scalabil-

    ity. For example, in Fig. 1, a maximum and a minimum is involved. The example ofFig. 1 also shows that additional control (the IF statement) may be introduced, which

    degrades performance. Of course, synchronizations and communications can alsodegrade performance seriously.

    For details on code generation in the polyhedron model, see the [Parallel Code Gen-eration] entry.

    Extensions

    The following extensions have successively been made to the basic polyhedron model.

    WHILE loops

    The presence of a WHILE loop in the loop nest turns the iteration domain from a finiteset (a polytope) into an infinite set (a polyhedron). If the control dependence that the

    termination test of the loop imposes is being respected, the iteration must necessarilybe sequential. However, the steps of a WHILE loop in a nest with further (FOR or

    WHILE) loops may be distributed in space. There have been two approaches to theparallelization of WHILE loops.

    9

    https://www.researchgate.net/publication/3848991_Compaan_Deriving_Process_Networks_from_Matlab_for_Embedded_Signal_Processing_Architectures?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/228779451_Improved_derivation_of_process_networks?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221329680_The_Semantics_of_Simple_Language_for_Parallel_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/228779451_Improved_derivation_of_process_networks?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3848991_Compaan_Deriving_Process_Networks_from_Matlab_for_Embedded_Signal_Processing_Architectures?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221329680_The_Semantics_of_Simple_Language_for_Parallel_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    11/21

    for i= 0 to 2n1 do

    A(i, 0) =. . . A(2ni1, 0)

    od

    =

    for i= 0 to n1 do

    A(i, 0) = . . . A(2ni1, 0)

    od

    for i= n to 2n1 do

    A(i, 0) = . . . A(2ni1, 0)

    od

    Figure 2: Iteration domain splitting

    Theconservative approach[22,25]respects the control dependence. One challengehere is the discovery of global termination. Thespeculative approach [14]does not

    respect the control dependence. Thus, several loop steps may be executed in parallelif there is no other dependence between them. The price paid is the need for storage of

    intermediate results, in case a rollback needs to be done when the point of terminationhas been discovered but further steps have already been executed. In some cases,

    overshooting the termination point does not jeopardize the correctness of the programand no rollback is needed. Discovering this property is beyond the capability of present

    compilers.

    Conditional statements

    The basic model permits only assignment statements in the loop body. The challenge

    of conditionals is that a dependence may hold only for certain executions, i.e., not forall branches. A static analysis can only reveal the union of these dependences [13].

    Iteration domain splitting

    In some cases, the schedule can be improved by orders of magnitude if one splits the

    iteration domain in appropriate places [24]. One example is depicted in Fig. 2. Withthe best affine schedule of i/2 each parallel step contains two loop iterations, i.e.the execution is sped up by a factor of 2. (The reason is that the shortest dependencehas length 2.). The domain split on the right yields two partitions, each without de-

    pendences between its iterations. Thus, all iterations of the upper loop (enumeratingthe left partition) can be executed in a first parallel step, and the iterations of the lower

    loop (enumerating the right partition) in a second one, for a speedup of n/2

    Tiling

    The technique of domain splitting has a further, larger significance. The polyhedronmodel is prone to yielding very fine-grained parallelism. To coarsen the grain when

    not enough processors are available, one partitions (parts of) the iteration domain in

    10

    https://www.researchgate.net/publication/242071220_The_mechanical_parallelization_of_loop_nests_containing_while_loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2820098_On_the_space-time_mapping_of_WHILE-loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2820098_On_the_space-time_mapping_of_WHILE-loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/242071220_The_mechanical_parallelization_of_loop_nests_containing_while_loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    12/21

    equally sized and shaped tiles. Each tile covers a set of iterations and the pointsin a tile are enumerated in time rather than in space, i.e., the iteration over a tile is

    resequentialized.One can tile the source iteration domain or the target iteration domain. In the latter

    case, one can tile space and also time. Tiling time corresponds to adding hands to

    a clock and has the effect of coarsening the grain of processor communications. Thehabilitation thesis of Martin Griebl[23]offers a comprehensive treatment of this topicand an extensive bibliography. See also the [Tiling] entry of this encyclopedia.

    Treatment of expressions

    In the basic model, expressions are considered atomic. There is an extension of the

    polyhedron model to the parallelization of the evaluation of expressions [18]. It alsopermits the identification of common subexpressions and provides a means to choose

    automatically the suitable point in time and the suitable place at which to evaluate it

    just once. Its value is then communicated to other places.

    Relaxations of affinity

    The requirement of affinity enters everywhere in the polyhedron model: in the loop

    bounds, in the array index expressions, in the transformations. Quickly, after the poly-

    hedron model had been developed, the desire arose to transcend affinity in places.Iteration domain splitting is one example.

    Lately, a more encompassing effort has been made to leave affinity behind. Onecircumstance that breaks the affinity of index expressions is that the so-called structure

    parameters(e.g. variablesnandmin the loops of Fig. 1 and 2) enter multiplicatively asunevaluated variables, not as constants. For example, when a two-dimensional arrayis linearized, array subscripts are of the formn i+jwithi,j being the loop iterators. Asa consequence, subscript equations are non-linear in the structure parameters, too.An algorithm for computing the solutions of equation systems with exactly one such

    structure parameter exists[29].In transformations and code generation, non-linear structure parameters, as in ex-

    pressions n i, n2 i or n m i, can be handled by generalizing existing algorithms (forthe case without non-linear parameters) using quantifier elimination[28]. Code gen-

    eration can even be generalized to handle non-linear loop indices, as in n i2, n2 i2 or

    i j. To this end, cylindrical algebraic decomposition (CAD)[27], which correspondsto Fourier-Motzkin elimination in the basic model, is used for computing loops nestswhich enumerate the points in the transformed domains efficiently. This extends the

    frontier of code generation to arbitrary polynomial loop bounds.

    11

    https://www.researchgate.net/publication/244454946_Automatic_Parallelization_of_Loop_Programs_for_Distributed_Memory_Architectures?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220964353_On_Computing_Solutions_of_Linear_Diophantine_Equations_with_One_Non-linear_Parameter?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/223379941_Quantifier_elimination_in_automatic_loop_parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/40677496_The_Challenges_of_Non-linear_Parameters_and_Variables_in_Automatic_Loop_Parallelisation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220964353_On_Computing_Solutions_of_Linear_Diophantine_Equations_with_One_Non-linear_Parameter?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/223379941_Quantifier_elimination_in_automatic_loop_parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/40677496_The_Challenges_of_Non-linear_Parameters_and_Variables_in_Automatic_Loop_Parallelisation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/244454946_Automatic_Parallelization_of_Loop_Programs_for_Distributed_Memory_Architectures?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    13/21

    Applications other than loop parallelization

    Array expansion

    It is easy to see that, if a loop modifies a scalar, there is a dependence between any

    two iterations, and the loop must remain sequential. When the modification occursearly in the loop body, before any use, the dependence can be removed by expanding

    the scalar to a new array, with the loop counter as its subscript. This idea can beextended to all cases in which a memory cell be it a scalar or part of an array ismodified more than once. The transformation proceeds in two steps:

    Replace the left side of each assignment by a fresh array, subscripted by thecounters of all enclosing loops.

    Inspect all the right sides and replace each reference by its source[20].

    The source of a use is the latest modification that precedes the use in the sequential

    execution order. It can be computed byparametric integer programming. The resultof this transformation is a program indynamic single-assignment form. Each memory

    cell is written to just once in the course of a program execution. As a consequence,the setsW(u) W(v) are always empty: the transformed program has far fewer de-pendences and, occasionally, much more parallelism than the original.

    Array shrinking

    A consequence of the previous transformation is a large increase in the memory foot-

    print of the program. In many cases, the same degree of parallelism can be achieved

    with less expansion, or the target architecture cannot exploit all parallelism there is,and some of the parallel loops have to be sequentialized. Another situation, in apurely sequential context, is when a careless programmer has used more memory

    than strictly necessary to implement an algorithm.The aim of array shrinking is to detect these situations, and to reduce the memory

    needs by inserting modulo operators in subscripts. Suppose, for instance, that in thefollowing code:

    fori = 0to n1doa[i] =... ;

    od

    one replacesa[i]bya[i mod 16]. The dimension ofa, which isn in the first version, isreduced to16 in the second version. Of course, this means that the value stored ina[i]is destroyed after sixteen iterations of the loop. This transformation may change theoutcome of the program, unless one can prove that thelifetimeofa[i]does not exceedsixteen iterations.Finding an automatic solution to this problem has been the subject of much work since

    1990 (Darte[16]offers a good discussion). The proposed solution is to construct aninterference polyhedron for the elements of a fixed array, and to cover it by a maximally

    tight lattice such that only the lattice origin falls inside the polyhedron. The basis

    12

    https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221148213_Lattice-based_memory_allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    14/21

    vectors of the lattice are taken as coordinate axes of the reduced array, and theirlengths are related to the modulus of the new subscripts.

    Communication Generation

    When constructing programs for distributed memory architectures, be it with data dis-

    tribution directives in languages like High-Performance Fortran (HPF) or under thedirection of a placement function, one has to generate communication code. It so

    happens that this is also a problem in polyhedron scanning. It can be solved with thesame techniques and the same tools that are used for code generation.

    Locality enhancement

    Most modern processors have caches: small but fast memories that retain a copy ofrecently accessed memory cells. A program has locality if memory accesses are clus-

    tered such that there is a high likelihood of finding a copy of the needed information incache rather than in main memory. Improving the locality of a program is highly bene-

    ficial for performance, since caches are usually accessed in one cycle while memorylatency may range from ten to a hundred cycles.Since the cache controller returns old copies to memory in order to find room for new

    ones, locality is enhanced by changing the execution order such that the reuse dis-

    tancebetween successive accesses to the same cell is minimal. This can be achieved,for instance, by moving all such accesses to the innermost loop of the program [49].

    Another approach consists of dividing a program into chunkswhose memory footprintsare smaller than the cache size. Conceptually, the program is executed by filling the

    cache with the necessary data for one chunk, executing the chunk without any cachemiss, and emptying the cache for the next chunk. One can show that the memorytraffic will be minimal if each datum belongs to the footprint of only one chunk. The

    construction of chunks is somewhat similar to scheduling [7]. It is enough to haveasymptotic estimates of the footprint sizes. One advantage of this method is that it can

    be adapted easily to the management of scratchpad memories, software-controlledcaches as can be found in embedded processors.

    Dynamic optimization

    Dynamic optimization resulted from the observation that modern processors and com-pilers are so complex that building a realistic performance estimator is nearly impos-

    sible. The only way of evaluating the quality of a transformed program is to run it andtake measurements.

    In the polyhedron model, one can define the polyhedron of all legal schedules (see theprevious section on scheduling). Usually, one selects one schedule in this polyhedron

    according to some simple objective function. Another possibility is to generate oneprogram for each legal schedule, measure its performance, and retain the best one.

    Experience shows that, in many cases, the best program is unexpected, the proof of its

    13

    https://www.researchgate.net/publication/216801805_A_Data_Locality_Optimizing_Algorithm?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/216801805_A_Data_Locality_Optimizing_Algorithm?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    15/21

    legality is not obvious, and the reasons for its efficiency are difficult to fathom. As soonas the source program has more than a few statements, the size of the polyhedron

    of legal schedules explodes: sophisticated techniques including genetic algorithmsand machine learning are needed to restrict the exploration to interesting solutions

    [39, 40].

    Tools

    There is a variety of tools which support several phases in the polyhedral paralleliza-tion process.

    Mathematical support

    PIP [19] is an all integer implementation of the Simplex algorithm, augmented withGomory cuts for integer programming[43]. The most interesting feature of PIP is that

    it can solve parametric problems, i.e. find the lexicographic minimal x such that

    Ax By+c

    as a function of y.Omega[41]is an extension of the Fourier-Motzkin elimination method to the case of

    integer variables. It has been extended into a fully fledged tool for the manipulationof Presburger formulas (logical formulas in which the atoms are affine constraints on

    integer variables).There are many so-called polyhedral libraries; the oldest one is the PolyLib [11]. The

    core of these libraries is a tool for converting a system of affine constraints into thevertices of the polyhedron it defines, and back. The PolyLib also includes a tool for

    counting the number of integer points inside a parametric polyhedron, the result beingan Ehrhart polynomial[10]. More recent implementations of these tools, occasionally

    using different algorithms, are the Parma Polyhedral Library[2], the Integer Set Library[46], the Barvinok Library [48], and the Polka Library [32]. This list is probably not

    exhaustive.

    Code generation

    CLooG [6] takes as input the description of an iteration domain, in the form of a disjoint

    union of polyhedra, and generates an efficient loop nest that scans all the points inthe iteration domain in the order given by a set of scattering functions, which can beschedules, placements, tiling functions and more. For a detailed description of CLooG,

    see the [Parallel Code Generation] entry in this encyclopedia.

    Fully-fledged loop restructurers

    LooPo[26]was the first polyhedral loop restructurer. Work on it was started at the

    University of Passau in 1994 and it was developed in steps over the years and is still

    14

    https://www.researchgate.net/publication/213876788_Iterative_Optimization_in_the_Polyhedral_Model_Part_I_One-Dimensional_Time?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/228057867_Theory_of_Linear_and_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2772646_The_Omega_Test_a_fast_and_practical_integer_programming_algorithm_for_dependence_analysis?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/225198995_Counting_Integer_Points_in_Parametric_Polytopes_Using_Barvinok's_Rational_Functions?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/225103229_APRON_A_Library_of_Numerical_Abstract_Domains_for_Static_Analysis?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2450012_The_Loop_Parallelizer_LooPo_-_Announcement?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/225198995_Counting_Integer_Points_in_Parametric_Polytopes_Using_Barvinok's_Rational_Functions?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/228057867_Theory_of_Linear_and_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2772646_The_Omega_Test_a_fast_and_practical_integer_programming_algorithm_for_dependence_analysis?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876788_Iterative_Optimization_in_the_Polyhedral_Model_Part_I_One-Dimensional_Time?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220751911_Iterative_optimization_in_the_polyhedral_model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/225103229_APRON_A_Library_of_Numerical_Abstract_Domains_for_Static_Analysis?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2450012_The_Loop_Parallelizer_LooPo_-_Announcement?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    16/21

    being extended. LooPo is meant to be a research platform for trying out and comparingdifferent methods and techniques based on the polyhedron model. It offers a number

    of schedulers and allocators and generates code for shared-memory and distributedmemory architectures. All of the extensions mentioned above have been implemented

    and almost all are being maintained.

    Pluto[9]was developed at Ohio-State University. Its main objective is to use place-ment functions to improve locality, and to integrate tiling into the polyhedron model. Itstarget architectures are multicores and graphical processing units (GPUs).

    GRAPHITE [45] is an extension of the GCC compiler suite whose ultimate aim is toapply polyhedral optimization and parallelization techniques, where possible, to run-

    of-the-mill programs. Graphite looks for static control parts (SCoPs) in the GCC in-termediate representation, generates their polyhedral representation, applies trans-

    formations, and generates target code using CLooG. At the time of writing, the set ofavailable transformations is still rudimentary, but is supposed to grow.

    RELATED ENTRIES

    Banerjee testDependence abstractions

    Dependence analysisHigh-Performance Fortran

    Loop-level speculationLoop nest parallelization

    Loop scheduling

    OpenMPParallel Code GenerationScheduling algorithms

    Task Graph SchedulingTiling

    BIBLIOGRAPHIC NOTES AND FURTHER READING

    The development of the polytope model was driven by two nearly disjoint communities.Hardware architects wanted to take a set of recurrence equations, expressing, for in-

    stance, a signal transformation, and derive a parallel processor array from it. Compilerdesigners wanted to take a sequential loop nest and derive parallel loop code from it.

    One can view the seed of the model for architecture in the seminal paper by Karp,Miller and Winograd on analyzing recurrence equations[34]and the seed for software

    in the seminal paper by Lamport on Fortran DO loop parallelization [36]. Lamport usedhyperplanes (the slices in the polyhedron that make up the parallel steps), instead of

    polyhedra. In the early Eighties, Quinton drafted the components of the polyhedronmodel[42], still in the hardware context (at that time: systolic arrays).

    15

    https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220431171_The_Organization_of_Computations_for_Uniform_Recurrence_Equations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220420132_The_Parallel_Execution_of_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/262295042_The_systematic_design_of_systolic_arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/262295042_The_systematic_design_of_systolic_arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220420132_The_Parallel_Execution_of_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220431171_The_Organization_of_Computations_for_Uniform_Recurrence_Equations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    17/21

    The two communities met around the end of the Eighties at various workshops andconferences, notably the International Conference on Supercomputing and CONPAR

    and PARLE, the predecessors of the Euro-Par series. Two developments made thepolyhedron model ready for compilers: parametric integer programming, worked out

    by Feautrier[19], which is used for dependence analysis, scheduling and code gener-

    ation, and seminal work on code generation by Irigoin et al. [1, 31]. Finally, Lengauer[37]gave the model its name.The Nineties saw the further development of the theory underlying the models meth-

    ods, particularly for scheduling, placement and tiling. Extensions and applicationsother than loop parallelization came mainly in the latter part of the Nineties and in the

    following decade.A number of textbooks focus on polyhedral methods. There is the three-part series

    of Banerjee [3, 4, 5], a book on tiling by Xue [50] and a comprehensive book onscheduling by Darte, Robert and Vivien [15]. Collard[12] applies the model to the

    optimization of loop nests for sequential as well as parallel execution and studies a

    similar model for recursive programs.In the past several years, the polyhedron model has become more mainstream. Theseed of this development was an advance in code generation methods [6]. With the

    GCC community taking an interest, it is to be expected that polyhedral methods willincreasingly find their way into production compilers.

    BIBLIOGRAPHY

    [1] Corinne Ancourt and Francois Irigoin. Scanning polyhedra with DO loops. In

    Proc. Third ACM SIGPLAN Symp. on Principles & Practice of Parallel Program-ming (PPoPP), pages 3950. ACM Press, 1991.

    [2] Roberto Bagnara, Patricia M. Hill, and Enea Zaffanella. The Parma PolyhedraLibrary: Toward a complete set of numerical abstractions for the analysis and

    verification of hardware and software systems. Science of Computer Program-ming, 72(12):321, 2008. Web site: http://www.cs.unipr.it/ppl.

    [3] Utpal Banerjee. Loop Transformations for Restructuring Compilers: The Foun-

    dations. Series on Loop Transformations for Restructuring Compilers. Kluwer,1993.

    [4] Utpal Banerjee. Loop Parallelization. Series on Loop Transformations for Re-structuring Compilers. Kluwer, 1994.

    [5] Utpal Banerjee. Dependence Analysis. Series on Loop Transformations for Re-structuring Compilers. Kluwer, 1997.

    [6] Cedric Bastoul. Code generation in the polyhedral model is easier than you

    think. In Proc. 13th Int. Conf. on Parallel Architecture and Compilation Tech-niques (PACT), pages 716. IEEE Computer Society Press, September 2004.

    Web site: http://www.cloog.org/.

    16

    https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/242363063_Dependence_approximation_and_global_parallel_code_generation_joe_nested_loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2824885_Loop_Parallelization_in_the_Polytope_Model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220691015_Reasoning_about_program_transformations_-_imperative_programming_and_flow_of_data?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213888658_Loop_Parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213888658_Loop_Parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213888658_Loop_Parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213888658_Loop_Parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/221643404_Scanning_Polyhedra_with_DO_Loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/222403082_The_Parma_Polyhedra_Library_toward_a_complete_set_of_numerical_abstractions_for_the_analysis_and_verification_of_hardware_and_software_systems_Sci_Comput_Program_721-23-21?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220689593_Loop_Transformations_for_Restructuring_Compilers_The_Foundations?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213888658_Loop_Parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213888658_Loop_Parallelization?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2824885_Loop_Parallelization_in_the_Polytope_Model?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/242363063_Dependence_approximation_and_global_parallel_code_generation_joe_nested_loops?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220691015_Reasoning_about_program_transformations_-_imperative_programming_and_flow_of_data?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==
  • 7/25/2019 FeautrierLengauerPolyhedronModel

    18/21

    [7] Cedric Bastoul and Paul Feautrier. Improving data locality by chunking. InCom-piler Construction (CC), Lecture Notes in Computer Science 2622, pages 320

    335. Springer-Verlag, 2003.

    [8] A. J. Bernstein. Analysis of programs for parallel processing. IEEE Trans. on

    Electronic Computers, EC-15:757762, October 1966.

    [9] Uday Bondhugula, Albert Hartono, J. Ramanujam, and P. Sadayappan. A prac-

    tical automatic polyhedral parallelizer and locality optimizer. SIGPLAN Notices,43(6):101113, 2008. Web site: http://pluto-compiler.sourceforge.net/.

    [10] Philippe Clauss. Counting solutions to linear and non-linear constraints through

    ehrhart polynomials. InProc. ACM/IEEE Conf. on Supercomputing, pages 278285. ACM Press, 1996.

    [11] Philippe Clauss and Vincent Loechner. Parametric analysis of polyhedral itera-

    tion spaces, extended version. J. VLSI Signal Processing, 19(2):179194, 1998.Web site: http://icps.u-strasbg.fr/polylib/.

    [12] Jean-Francois Collard. Reasoning About Program Transformations Imperative

    Programming and Flow of Data. Springer-Verlag, 2003.

    [13] Jean-Francois Collard and Martin Griebl. A precise fixpoint reaching definitionanalysis for arrays. In Larry Carter and Jean Ferrante, editors,Languages and

    Compilers for Parallel Computing (LCPC), Lecture Notes in Computer Science1863, pages 286302. Springer-Verlag, 1999.

    [14] Jean-Francois Collard. Automatic parallelization ofwhile

    -loops using speculativeexecution. Int. J. Parallel Programming, 23(2):191219, 1995.

    [15] Alain Darte, Yves Robert, and Frederic Vivien. Scheduling and Automatic Paral-lelization. Birkhauser, 2000.

    [16] Alain Darte, Robert Schreiber, and Gilles Villard. Lattice-based memory alloca-

    tion. IEEE Trans. on Computers, TC-54(10):12421257, October 2005.

    [17] Eric H. DHollander. Partitioning and labeling of loops by unimodular transforma-tions. IEEE Trans. on Parallel and Distributed Systems, 3(4):465476, 1992.

    [18] Peter Faber. Code Optimization in the Polyhedron Model - Improvingthe Efficiency of Parallel Loop Nests. PhD thesis, Department of Infor-matics and Mathematics, University of Passau, 2007. http://www.fim.uni-

    passau.de/cl/publications/docs/Faber07.pdf.

    [19] Paul Feautrier. Parametric integer programming. Operations Research,22(3):243268, 1988. Web site: http://www.piplib.org.

    [20] Paul Feautrier. Dataflow analysis of scalar and array references. Parallel Pro-

    gramming, 20(1):2353, February 1991.

    17

    https://www.researchgate.net/publication/3476943_Analysis_of_Programs_for_Parallel_Processing?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3476943_Analysis_of_Programs_for_Parallel_Processing?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3476943_Analysis_of_Programs_for_Parallel_Processing?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3476943_Analysis_of_Programs_for_Parallel_Processing?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/213876794_A_practical_automatic_polyhedral_parallelizer_and_locality_optimizer?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/47735245_Parametric_Analysis_of_Polyhedral_Iteration_Spaces?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220691015_Reasoning_about_program_transformations_-_imperative_programming_and_flow_of_data?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220691015_Reasoning_about_program_transformations_-_imperative_programming_and_flow_of_data?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220691015_Reasoning_about_program_transformations_-_imperative_programming_and_flow_of_data?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/220691015_Reasoning_about_program_transformations_-_imperative_programming_and_flow_of_data?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2868754_A_Precise_Fixpoint_Reaching_Definition_Analysis_for_Arrays?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/255811152_Automatic_parallelization_of_while-Loops_using_speculative_execution?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/37658001_Code_Optimization_in_the_Polyhedron_Model_-_Improving_the_Efficiency_of_Parallel_Loop_Nests?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/245810130_Counting_solutions_to_linear_and_non-linear_constraints_through_Ehrhart_polynomials?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/3044962_Lattice-Based_Memory_Allocation?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https://www.researchgate.net/publication/2423873_Parametric_Integer_Programming?el=1_x_8&enrichId=rgreq-bb38c48c-a57e-49a9-9c1b-49f205a010fa&enrichSource=Y292ZXJQYWdlOzIzMzQwMTIwNztBUzoyMjc5MzAwMDU1Njk1MzZAMTQzMTM1NDE1NjM3Nw==https