4 research outputs found

    Technique étendue d’allocation mémoire basée sur les réseaux entiers

    Get PDF
    This work extends lattice-based memory allocation, an earlier work on memory (array)reuse analysis. The main motivation is to handle in a better way the more general forms ofspecifications we see today, e.g., with loop tiling, pipelining, and other forms of parallelism availablein explicitly parallel languages. Our extension has two complementary aspects. We show howto handle more general specifications where conflicting constraints (those that describe the arrayindices that cannot share the same location) are specified as a (non-convex) union of polyhedra.Unlike convex specifications, this also requires to be able to choose suitable directions (or basis) ofarray reuse. For that, we extend two dual approaches, previously proposed for a fixed basis, intooptimization schemes to select suitable basis. Our final approach relies on a combination of thetwo, also revealing their links with, on one hand, the construction of multi-dimensional schedulesfor parallelism and tiling (but with a fundamental difference that we identify) and, on the otherhand, the construction of universal reuse vectors (UOV), which was only used so far in a specificcontext, for schedule-independent mapping.Ce travail étend l’allocation mémoire basée sur les réseaux entiersprécédemment proposée en analyse de réutilisation mémoire (de tableaux). Lamotivation principale est de traiter de meilleure façon les formes plus généralesde spécifications rencontrées aujourd’hui, comportant du tuilage de boucles,du pipeline, et d’autres formes de parallélisme exprimées dans les langages àparallélisme explicite. Notre extension a deux aspects complémentaires. Nousmontrons comment nous pouvons prendre en compte des spécifications plusgénérales où les contraintes de conflit (celles qui décrivent les indices de tableauxqui ne peuvent pas partager le même emplacement mémoire) sont spécifiées parune union (non-convexe) de polyèdres. Au contraire des spécifications convexes,ceci requiert d’être capable de choisir des directions (c’est-à-dire une base)adéquates de réutilisation des cases de tableaux. Pour cela, nous étendons deuxapproches duales, précédemment proposées pour une base fixée, en des schémasd’optimisation permettant de choisir des bases adaptées. Notre approche finaleconsiste en une combinaison des deux approches, révélant également des liensavec, d’une part, la construction d’ordonnancements multi-dimensionnels pour leparallélisme et le tuilage (avec une différence fondamentale que nous identifions)et, d’autre part, la construction de vecteurs de réutilisation universelle (UOV),qui étaient utilisés jusqu’à présent uniquement dans un contexte spécifique, celuides allocations valides pour tout ordonnancement

    Extended Lattice-Based Memory Allocation

    No full text
    International audienceThis work extends lattice-based memory allocation, an earlier work on memory reuse through array contraction. Such an optimization is used for optimizing high-level programming languages where storage mapping may be abstracted away from programmers and to complement code transformations that introduce intermediate buffers. The main motivation for this extension is to improve the handling of more general forms of specifications we see today, e.g., with loop tiling, pipelining, and other forms of parallelism available in explicitly-parallel languages. Specifically, we handle the case when conflicting constraints (those that describe the array indices that cannot share the same location) are specified as a (non-convex) union of polyhedra. The choice of directions (or basis) of array reuse becomes important when dealing with non-convex specifications. We extend the two dual approaches in the original work to handle unions of polyhedra, and to select a suitable basis. Our final approach relies on a combination of the two, also revealing their links with, on one hand, the construction of multi-dimensional schedules for parallelism and tiling (but with a fundamental difference that we identify) and, on the other hand, the construction of universal reuse vectors (UOV), which was only used so far in a specific context, for schedule-independent mapping

    Extended Lattice-Based Memory Allocation

    No full text
    International audienceThis work extends lattice-based memory allocation, an earlier work on memory reuse through array contraction. Such an optimization is used for optimizing high-level programming languages where storage mapping may be abstracted away from programmers and to complement code transformations that introduce intermediate buffers. The main motivation for this extension is to improve the handling of more general forms of specifications we see today, e.g., with loop tiling, pipelining, and other forms of parallelism available in explicitly-parallel languages. Specifically, we handle the case when conflicting constraints (those that describe the array indices that cannot share the same location) are specified as a (non-convex) union of polyhedra. The choice of directions (or basis) of array reuse becomes important when dealing with non-convex specifications. We extend the two dual approaches in the original work to handle unions of polyhedra, and to select a suitable basis. Our final approach relies on a combination of the two, also revealing their links with, on one hand, the construction of multi-dimensional schedules for parallelism and tiling (but with a fundamental difference that we identify) and, on the other hand, the construction of universal reuse vectors (UOV), which was only used so far in a specific context, for schedule-independent mapping
    corecore