Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Alain Darte

dblp:d/AlainDarte · DBLP profile ↗
← Back
48ranked-venue papers
25as first author
0since 2021 · last 2016
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 39 · 21 first-authorSoftware engineering, systems software and programming languages · 11 · 3 first-authorTheory of computation · 2 · 2 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
5 papers
Compilers and program optimization · 90% Operating systems · 10%
Computer architecture, parallel and distributed computing, and storage systems
6 papers
Electronic design automation · 49% Parallel and multicore computing · 18% Processor architecture and microarchitecture · 17%
Theoretical computer science
2 papers
Algorithms and data structures · 77% Computational geometry · 23%

Topics — the 17 heaviest of 19, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization
register allocation
0.212014
Studying Optimal Spilling in the Light of SSA · ACM Trans. Archit. Code Optim. 2014
Compilers and program optimization › intermediate representation
static single assignment form
0.212014
Studying Optimal Spilling in the Light of SSA · ACM Trans. Archit. Code Optim. 2014
Electronic design automation
high-level synthesis
0.222012
Optimizing remote accesses for offloaded kernels: application to high-level synthesis for FPGA · PPoPP 2012
Lattice-Based Memory Allocation · IEEE Trans. Computers 2005
Processor architecture and microarchitecture › instruction set architecture › instruction set style
load-store architecture
0.112014
Studying Optimal Spilling in the Light of SSA · ACM Trans. Archit. Code Optim. 2014
Compilers and program optimization
compiler analysis
0.112005
A linear-time algorithm for optimal barrier placement · PPoPP 2005
Operating systems › resource management › memory management
memory allocation
0.112005
Lattice-Based Memory Allocation · IEEE Trans. Computers 2005
Compilers and program optimization › compiler optimization
memory reuse
0.112005
Lattice-Based Memory Allocation · IEEE Trans. Computers 2005
Parallel and multicore computing
synchronization
0.112005
A linear-time algorithm for optimal barrier placement · PPoPP 2005
Algorithms and data structures
combinatorial algorithms
0.112005
A linear-time algorithm for optimal barrier placement · PPoPP 2005
Reconfigurable computing and FPGAs › FPGA accelerator
FPGA offloading
0.012012
Optimizing remote accesses for offloaded kernels: application to high-level synthesis for FPGA · PPoPP 2012
Compilers and program optimization › instruction scheduling
software pipelining
0.011998
Circuit Retiming Applied to Decomposed Software Pipelining · IEEE Trans. Parallel Distributed Syst. 1998
Embedded and real-time systems › embedded software › embedded operating systems › embedded memory management
scratchpad memory allocation
0.012005
Lattice-Based Memory Allocation · IEEE Trans. Computers 2005
Computational geometry › discrete geometry
integer lattice
0.012005
Lattice-Based Memory Allocation · IEEE Trans. Computers 2005
Compilers and program optimization › loop transformation
nested loop scheduling
0.011994
Constructive Methods for Scheduling Uniform Loop Nests · IEEE Trans. Parallel Distributed Syst. 1994
Processor architecture and microarchitecture
instruction-level parallelism
0.011998
Circuit Retiming Applied to Decomposed Software Pipelining · IEEE Trans. Parallel Distributed Syst. 1998
Parallel and multicore computing › parallel scheduling
loop scheduling
0.011998
Circuit Retiming Applied to Decomposed Software Pipelining · IEEE Trans. Parallel Distributed Syst. 1998
Parallel and multicore computing
parallelizing compiler
0.011994
Constructive Methods for Scheduling Uniform Loop Nests · IEEE Trans. Parallel Distributed Syst. 1994

Methods — techniques the papers use, named apart from their topics

rematerialization · 0.4memory coalescing · 0.4integer linear programming · 0.4modular mapping · 0.2integer lattice · 0.2critical lattice · 0.2affine mapping · 0.2polyhedral code analysis · 0.1dependence graph analysis · 0.0circuit retiming · 0.0affine scheduling · 0.0
YearPublicationVenuePosition
2016 Extended lattice-based memory allocation
abstract
This 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.
Alain Darte, Alexandre Isoard, Tomofumi Yuki
CC1
2015 Exact and Approximated Data-Reuse Optimizations for Tiling with Parametric Sizes
Alain Darte, Alexandre Isoard
CC1
2014 Studying Optimal Spilling in the Light of SSA
abstract
Recent developments in register allocation, mostly linked to static single assignment (SSA) form, have shown the benefits of decoupling the problem in two phases: a first spilling phase places load and store instructions so that the register pressure at all program points is small enough, and a second assignment and coalescing phase maps the variables to physical registers and reduces the number of move instructions among registers. This article focuses on the first phase, for which many open questions remain: in particular, we study the notion of optimal spilling (what can be expressed?) and the impact of SSA form (does it help?). To identify the important features for optimal spilling on load-store architectures, we develop a new integer linear programming formulation, more accurate and expressive than previous approaches. Among other features, we can express SSA ϕ-functions, memory-to-memory copies, and the fact that a value can be stored simultaneously in a register and in memory. Based on this formulation, we present a thorough analysis of the results obtained for the SPECINT 2000 and EEMBC 1.1 benchmarks, from which we draw, among others, the following conclusions: (1) rematerialization is extremely important; (2) SSA complicates the formulation of optimal spilling, especially because of memory coalescing when the code is not in conventional SSA (CSSA); (3) microarchitectural features are significant and thus have to be accounted for; and (4) significant savings can be obtained in terms of static spill costs, cache miss rates, and dynamic instruction counts.
Quentin Colombet, Florian Brandner, Alain Darte
ACM Trans. Archit. Code Optim.3
2013 Optimizing remote accesses for offloaded kernels: application to high-level synthesis for FPGA
abstract
Some data- and compute-intensive applications can be accelerated by offloading portions of codes to platforms such as GPGPUs or FPGAs. However, to get high performance for these kernels, it is mandatory to restructure the application, to generate adequate communication mechanisms for the transfer of remote data, and to make good usage of the memory bandwidth. In the context of the high-level synthesis (HLS), from a C program, of hardware accelerators on FPGA, we show how to automatically generate optimized remote accesses for an accelerator communicating to an external DDR memory. Loop tiling is used to enable block communications, suitable for DDR memories. Pipelined communication processes are generated to overlap communications and computations, thereby hiding some latencies, in a way similar to double buffering. Finally, not only intra-tile but also inter-tile data reuse is exploited to avoid remote accesses when data are already available in the local memory. Our first contribution is to show how to generate the sets of data to be read from (resp. written to) the external memory just before (resp. after) each tile so as to reduce communications and reuse data as much as possible in the accelerator. The main difficulty arises when some data may be (re)defined in the accelerator and should be kept locally. Our second contribution is an optimized code generation scheme, entirely at source-level, i.e., in C, that allows us to compile all the necessary glue (the communication processes) with the same HLS tool as for the computation kernel. Both contributions use advanced polyhedral techniques for program analysis and transformation. Experiments with Altera HLS tools demonstrate how to use our techniques to efficiently map C kernels to FPGA.
Christophe Alias, Alain Darte, Alexandru Plesco
DATE2
2012 Optimizing remote accesses for offloaded kernels: application to high-level synthesis for FPGA
abstract
In the context of the high-level synthesis (HLS) of regular kernels offloaded to FPGA and communicating with an external DDR memory, we show how to automatically generate adequate communicating processes for optimizing the transfer of remote data. This requires a generalized form of communication coalescing where data can be transferred from the external memory even when this memory is not fully up-to-date. Experiments with Altera HLS tools demonstrate that this automatization, based on advanced polyhedral code analysis and code generation techniques, can be used to efficiently map C kernels to FPGA, by generating, entirely at C level, all the necessary glue (the communication processes), which is compiled with the same HLS tool as for the computation kernel.
Christophe Alias, Alain Darte, Alexandru Plesco
PPoPP2
2012 SSI Properties Revisited
abstract
The static single information (SSI) form is an extension of the static single assignment (SSA) form, a well-established compiler intermediate representation that has been successfully used for numerous compiler analysis and optimizations. Several interesting results have also been shown for SSI form concerning liveness analysis and the representation of live-ranges of variables, which could make SSI form appealing for just-in-time compilation. Unfortunately, we have uncovered several mistakes in the previous literature on SSI form, which, admittedly, is already quite sparse. This article corrects the mistakes that are most germane to SSI form. We first explain why the two definitions of SSI form proposed in past literature, first by C. S. Ananian, then by J. Singer, are not equivalent. Our main result is then to prove that basic blocks, and thus program points, can be totally ordered so that live-ranges of variables correspond to intervals on a line, a result that holds for both variants of SSI form. In other words, in SSI form, the intersection graph defined by live-ranges is an interval graph, a stronger structural property than for SSA form for which the intersection graph of live-ranges is chordal. Finally, we show how this structure of live-ranges can be used to simplify liveness analysis.
Benoit Boissinot, Philip Brisk, Alain Darte, Fabrice Rastello
ACM Trans. Embed. Comput. Syst.3
2011 A Non-iterative Data-Flow Algorithm for Computing Liveness Sets in Strict SSA Programs
Benoit Boissinot, Florian Brandner, Alain Darte, Benoît Dupont de Dinechin, Fabrice Rastello
APLAS3
2011 Studying optimal spilling in the light of SSA
abstract
Recent developments in register allocation, mostly linked to static single assignment (SSA) form, have shown that it is possible to decouple the problem in two successive phases: a first spilling phase places load and store instructions so that the register pressure at all program points is small enough, a second assignment and coalescing phase maps the remaining variables to physical registers and reduces the number of move instructions among registers. This paper focuses on the first phase, for which many open questions remain: in particular, we study the notion of optimal spilling (what can be expressed?) and the impact of SSA form (does it help?).
Quentin Colombet, Florian Brandner, Alain Darte
CASES3
2010 Optimizing DDR-SDRAM communications at C-level for automatically-generated hardware accelerators an experience with the Altera C2H HLS tool
abstract
Thanks to efficient scheduling, resource sharing, and finite-state machines generation, high-level synthesis (HLS) tools are now more mature for generating hardware accelerators with an optimized internal structure. But interfacing them within the complete design, with optimized communications, to achieve the best throughput remains hard. Expert designers still need to program all the necessary glue (in VHDL/Verilog) to get an efficient design. Taking the example of C2H, the Altera HLS tool, and of accelerators communicating to an external DDR memory, we show it is possible to restructure the application code, to generate adequate communication processes, in C, and to compile them all with C2H, so that the resulting application is highly-optimized, with full usage of the memory bandwidth. In other words, our study demonstrates that HLS tools can be used as back-end optimizers for front-end optimizations, as it is the case for standard compilation with high-level transformations developed on top of assembly-code optimizers. We believe this is the way to go for making HLS tools viable.
Christophe Alias, Alain Darte, Alexandru Plesco
ASAP2
2010 Understanding loops: The influence of the decomposition of Karp, Miller, and Winograd
abstract
Loops are a fundamental control structure in programming languages. Being able to analyze, to transform, to optimize loops is a key feature for compilers to handle repetitive schemes with a complexity proportional to the program size and not to the number of operations it describes. This is true for the generation of optimized software as well as for the generation of hardware, for both sequential and parallel execution. The goal of this talk is to recall one of the most important theory to understand loops - the decomposition of Karp, Miller, and Winograd (1967) for systems of uniform recurrence equations - and its connections with two different developments on loops: the theory of transformation and parallelization of (nested) DO loops and the theory of ranking functions for proving the termination of (imperative) programs with WHILE loops. Other connections, which will not be covered, include reachability problems in vector addition systems and Petri nets.
Alain Darte
MEMOCODE1
2010 Multi-dimensional Rankings, Program Termination, and Complexity Bounds of Flowchart Programs
Christophe Alias, Alain Darte, Paul Feautrier, Laure Gonnord
SAS2
2010 Parallel copy motion
abstract
International audience
Florent Bouchez, Quentin Colombet, Alain Darte, Fabrice Rastello, Christophe Guillon
SCOPES3
2009 Revisiting Out-of-SSA Translation for Correctness, Code Quality and Efficiency
abstract
Static single assignment (SSA) form is an intermediate program representation in which many code optimizations can be performed with fast and easy-to-implement algorithms. However, some of these optimizations create situations where the SSA variables arising from the same original variable now have overlapping live ranges. This complicates the translation out of SSA code into standard code. There are three issues to consider: correctness, code quality (elimination of copies), and algorithm efficiency (speed and memory footprint). Briggs et al. proposed patches to correct the initial approach of Cytron et al. A cleaner and more general approach was proposed by Sreedhar et al., along with techniques to reduce the number of generated copies. We propose a new approach based on coalescing and a precise view of interferences, in which correctness and optimizations are separated. Our approach is provably correct and simpler to implement, with no patches or particular cases as in previous solutions, while reducing the number of generated copies. Also, experiments with SPEC CINT2000 show that it is 2x faster and 10x less memory-consuming than the Method III of Sreedhar et al., which makes it suitable for just-in-time compilation.
Benoit Boissinot, Alain Darte, Fabrice Rastello, Benoît Dupont de Dinechin, Christophe Guillon
CGO2
2009 Introduction
Pedro C. Diniz, Ben H. H. Juurlink, Alain Darte, Wolfgang Karl
Euro-Par3
2008 Advanced conservative and optimistic register coalescing
abstract
In the context of embedded systems, it is crucial to minimize memory transfers to reduce latency and power consumption. Stack access due to variable spilling during register allocation can be significantly reduced using aggressive live-range splitting. However, without a good (conservative) coalescing technique, the benefit of a good spilling may be lost due to the many register-to-register moves introduced. The challenge is thus to find a good trade-off between a too aggressive strategy that could make the interference graph uncolorable without more spilling, and a too conservative strategy that preserves colorability but leaves unnecessary moves. Two main approaches are "iterated register coalescing" by George and Appel and "optimistic coalescing" by Park and Moon. The first coalesces moves one by one conservatively. The second coalesces moves regardless of the colorability, then undo coalescings to reduce spilling. Focusing on greedy-k-colorable graphs---which are usually obtained after all spill decisions and, possibly, some split decisions---we show how these two approaches can be improved, optimistic coalescing with a more involved de-coalescing phase, incremental coalescing with a less pessimistic conservative technique. Unlike previous experiments, our results show that optimistic strategies do not outperform conservative ones. Our incremental conservative coalescing performs even better than our improved de-coalescing scheme and leads to about 15% improvement compared to the state-of-the-art optimistic coalescing.
Florent Bouchez, Alain Darte, Fabrice Rastello
CASES2
2007 Scheduling Register-Allocated Codes in User-Guided High-Level Synthesis
abstract
In high-level synthesis, as for compilers, an important question is when register assignment should take place. Unlike compilers for which the processor architecture is given, synthesizers can, in principle, perform scheduling before register assignment by instantiating, after scheduling, the adequate number of registers (thus with no spilling) and the right connections between operators. However, this approach may sometimes lead to suboptimal data paths. An alternate solution is to let the designer have some control on the compilation process so as to force desirable data paths and resource sharing. For example, in UGH, a public-domain user-guided high-level synthesis tool, the designer interacts with the synthesizer by providing an early allocation of scalar variables to registers and a draft data path that describes some or all connections between registers and operators. The well-known drawback of early register assignment is that it over-constrains the scheduler with false dependences. The UGH scheduler first removes these dependences and adds them on the fly during scheduling. It has been noticed that, although this approach can achieve good results in practice for suitable user designs, some rare deadlock situations can arise in the scheduler. We analyze the reason for such deadlocks and improve UGH strategy with a new implementation. We show how to avoid the deadlocks as much as possible and how, with some register duplication, they can be circumvented otherwise. We also show that, unless P=NP, there is no hope to design a polynomial test that decides which operation to schedule first so as to avoid a deadlock, therefore a duplication.
Alain Darte, C. Quinson
ASAP1
2007 On the Complexity of Register Coalescing
abstract
Memory transfers are becoming more important to optimize, for both performance and power consumption. With this goal in mind, new register allocation schemes are developed, which revisit not only the spilling problem but also the coalescing problem. Indeed, a more aggressive strategy to avoid load/store instructions may increase the constraints to suppress (coalesce) move instructions. This paper is devoted to the complexity of the coalescing phase, in particular in the light of recent developments on the SSA form. We distinguish several optimizations that occur in coalescing heuristics: a) aggressive coalescing removes as many moves as possible, regardless of the colorability of the resulting interference graph; b) conservative coalescing removes as many moves as possible while keeping the colorability of the graph; c) incremental conservative coalescing removes one particular move while keeping the colorability of the graph; d) optimistic coalescing coalesces moves aggressively, then gives up about as few moves as possible so that the graph becomes colorable again. We almost completely classify the NP-completeness of these problems, discussing also on the structure of the interference graph: arbitrary, chordal, or k-colorable in a greedy fashion. We believe that such a study is a necessary step for designing new coalescing strategies
Florent Bouchez, Alain Darte, Fabrice Rastello
CGO2
2007 Bee+Cl@k: an implementation of lattice-based array contraction in the source-to-source translator rose
abstract
We build on prior work on intra-array memory reuse, for which a general theoretical framework was proposed based on lattice theory. Intra-array memory reuse is a way of reducing the size of a temporary array by folding, thanks to affine mappings and modulo operations, reusing memory locations when they contain a value not used later. We describe the algorithms needed to implement such a strategy. Our implementation has two parts. The first part, Bee, uses the source-to-source transformer ROSE to extract from the program all necessary information on the lifetime of array elements and to generate the code after memory reduction. The second part, Cl@k, is a stand-alone mathematical tool dedicated to optimizations on polyhedra, in particular the computation of successive minima and the computation of good admissible lattices, which are the basis for lattice-based memory reuse. Both tools are developed in C++ and use linear programming and polyhedra manipulations. They can be used either for embedded program optimizations, e.g., to limit memory expansion introduced for parallelization, or in high-level synthesis, e.g., to design memories between communicating hardware accelerators.
Christophe Alias, Fabrice Baray, Alain Darte
LCTES3
2007 On the complexity of spill everywhere under SSA form
abstract
Compilation for embedded processors can be either aggressive (time consuming cross-compilation) or just in time (embedded and usually dynamic). The heuristics used in dynamic compilation are highly constrained by limited resources, time and memory in particular. Recent results on the SSA form open promising directions for the design of new register allocation heuristics for embedded systems and especially for embedded compilation. In particular, heuristics based on tree scan with two separated phases -- one for spilling, then one for coloring/coalescing -- seem good candidates for designing memory-friendly, fast, and competitive register allocators. Still, also because of the side effect on power consumption, the minimization of loads and stores overhead (spilling problem) is an important issue. This paper provides an exhaustive study of the complexity of the "spill everywhere" problem in the context of the SSA form. Unfortunately, conversely to our initial hopes, many of the questions we raised lead to NP-completeness results. We identify some polynomial cases but that are impractical in JIT context. Nevertheless, they can give hints to simplify formulations for the design of aggressive allocators.
Florent Bouchez, Alain Darte, Fabrice Rastello
LCTES2
2006 Scheduling under resource constraints using dis-equations
abstract
Scheduling is an important step in high-level synthesis (HLS). In our tool, we perform scheduling in two steps: coarse-grain scheduling, in which we take into account the whole control structure of the program including imperfect loop nests, and fine-grain scheduling, where we refine each logical step using a detailed description of the available resources. This paper focuses on the second step. Tasks are modeled as reservation tables (or templates) and we express resource constraints using dis-equations (i.e., negations of equations). We give an exact algorithm based on a branch-and-bound method, coupled with variants of Dijkstra's algorithm, which we compare with a greedy heuristic. Both algorithms are tested on pieces of scientific applications to demonstrate their suitability for HLS tools
Hadda Cherroun, Alain Darte, Paul Feautrier
DATE2
2005 Hardware/Software Interface for Multi-Dimensional Processor Arrays
abstract
On most recent systems on chip, the performance bottleneck is the on-chip communication medium, bus or network. Multimedia applications require a large communication bandwidth between the processor and graphic hardware accelerators, hence an efficient communication scheme using burst mode is mandatory. In the context of data-flow hardware accelerators, we approach this problem as a classical resource-constrained problem. We explain how to use recent optimization techniques so as to define a conflict-free schedule of input/output for multi-dimensional processor arrays (e.g. 2D grids). This schedule is static and allows us to perform further optimizations such as grouping successive data in packets to operate in burst mode. We also present an effective VHDL implementation on FPGA and compare our approach to a run-time congestion resolution showing important gains in hardware area.
Alain Darte, Steven Derrien, Tanguy Risset
ASAP1
2005 A linear-time algorithm for optimal barrier placement
abstract
We want to perform compile-time analysis of an SPMD program and place barriers in it to synchronize it correctly, minimizing the runtime cost of the synchronization. This is the barrier minimization problem. No full solution to the problem has been given previously.Here we model the problem with a new combinatorial structure, a nested family of sets of circular intervals. We show that barrier minimization is equivalent to finding a hierarchy of minimum cardinality point sets that cut all intervals. For a single loop, modeled as a simple family of circular intervals, a linear-time algorithm is known. We extend this result, finding a linear-time solution for nested circular interval families. This result solves the barrier minimization problem for general nested loops.
Alain Darte, Robert Schreiber
PPoPP1
2005 Lattice-Based Memory Allocation
abstract
We investigate the problem of memory reuse in order to reduce the memory needed to store an array variable. We develop techniques that can lead to smaller memory requirements in the synthesis of dedicated processors or to more effective use by compiled code of software-controlled scratchpad memory. Memory reuse is well-understood for allocating registers to hold scalar variables. Its extension to arrays has been studied recently for multimedia applications, for loop parallelization, and for circuit synthesis from recurrence equations. In all such studies, the introduction of modulo operations to an otherwise affine mapping (of loop or array indices to memory locations) achieves the desired reuse. We develop here a new mathematical framework, based on critical lattices, that subsumes the previous approaches and provides new insight. We first consider the set of indices that conflict, those that cannot be mapped to the same memory cell. Next, we construct the set of differences of conflicting indices. We establish a correspondence between a valid modular mapping and a strictly-admissible integer lattice-one having no nonzero element in common with the set of conflicting index differences. The memory required by an optimal modular mapping is equal to the determinant of the corresponding lattice. The memory reuse problem is thus reduced to the (still interesting and nontrivial) problem of finding a strictly admissible integer lattice-of least determinant. We then propose and analyze several practical strategies for finding strictly admissible integer lattices, either optimal or optimal up to a multiplicative factor, and, hence, memory-saving modular mappings. We explain and analyze previous approaches in terms of our new framework.
Alain Darte, Robert Schreiber, Gilles Villard
IEEE Trans. Computers1
2003 Lattice-based memory allocation
abstract
We investigate the problem of memory reuse, for reducing the necessary memory size, in the context of compilation of dedicated processors. Memory reuse is a well-known concept when allocating registers (i.e., scalar variables). Its (recent) extension to arrays was studied mainly by Lefebvre and Feautrier (for loop parallelization) and by Quillere and Rajopadhye (for circuit synthesis based on recurrence equations). Both consider affine mappings of indices to data, with modulo expressions in the first and (mainly) projections in the second. We develop a mathematical framework based on (integral) critical lattices that subsumes all previous approaches and gives new insights into the problem. Our technique consists first in building an abstract representation of conflicting indices (equivalent in a multi-dimensional space to the interference graph for register allocation), then in defining an integral lattice, admissible for the set of differences of conflicting indices, used to build a valid modular allocation. We also show the link with critical lattices, successive minima, and basis reduction, and we analyze various strategies for lattice-based memory allocation.
Alain Darte, Robert Schreiber, Gilles Villard
CASES1
2003 Generalized multipartitioning of multi-dimensional arrays for parallelizing line-sweep computations
Alain Darte, John M. Mellor-Crummey, Robert J. Fowler, Daniel G. Chavarría-Miranda
J. Parallel Distributed Comput.1
2002 New Results on Array Contraction
abstract
Array contraction is an optimization that transforms array variables into scalar variables within a loop. While the opposite transformation, scalar expansion, is used for enabling parallelism (with a penalty in memory size), array contraction is used to save memory by removing temporary arrays and to increase locality. Several heuristics have already been proposed to perform array contraction through loop fusion and/or loop shifting, but thus far, the complexity of the problem was unknown, and no exact approach was available. In this paper, we prove two NP-complete results that characterize precisely the problem and we give a practical integer linear programming formulation to solve the problem exactly.
Alain Darte, Guillaume Huard
ASAP1
2002 Complexity of Multi-dimensional Loop Alignment
Alain Darte, Guillaume Huard
STACS1
2002 Constructing and exploiting linear schedules with prescribed parallelism
abstract
We present two new results of importance in code generation for and synthesis of synchronously scheduled parallel processor arrays and multicluster VLIWs. The first is a new practical method for constructing a linear schedule for the iterations of a loop nest that schedules precisely one iteration per cycle on each of a prescribed set of processors. While this problem goes back to the era in which systolic computation was in vogue, it has defied practical solution until now. We provide a closed form solution that enables the enumeration of all such schedules. The second result is a new technique that reduces the cost of code or hardware whose function is to control the flow of data and predicate operations, and to generate memory addresses. The key idea is that by using the mathematical structure of any of the conflict-free schedules we construct, a very shallow recurrence can be developed to inexpensively update these quantities.
Alain Darte, Robert Schreiber, Bob Rau, Frédéric Vivien
ACM Trans. Design Autom. Electr. Syst.1
2000 Scheduling the Computations of a Loop Nest with Respect to a Given Mapping
Alain Darte, Claude G. Diderich, Marc Gengler, Frédéric Vivien
Euro-Par1
2000 Temporary Arrays for Distribution of Loops with Control Dependences
Alain Darte, Georges-André Silber
Euro-Par1
2000 A Constructive Solution to the Juggling Problem in Processor Array Synthesis
abstract
We describe a new, practical, constructive method for solving the well-known conflict-free scheduling problem for the locally sequential, globally parallel (LSGP) case of processor array synthesis. First, we provide a closed form solution that enables the enumeration of all conflict-free schedules. Then, we discuss the reduction of the cost of hardware whose function is to control the flow of data, enable or disable functional units, and generate memory addresses. We present a new technique for controlling the complexity of these housekeeping functions in a processor array. Both of these techniques have been incorporated into a software system for the automatic synthesis of hardware accelerators developed by HP Labs.
Alain Darte, Robert Schreiber, Bob Rau, Frédéric Vivien
IPDPS1
2000 On the complexity of loop fusion
Alain Darte
Parallel Comput.1
1998 Loop Parallelization Algorithms: From Parallelism Extraction to Code Generation
Pierre Boulet, Alain Darte, Georges-André Silber, Frédéric Vivien
Parallel Comput.2
1998 Circuit Retiming Applied to Decomposed Software Pipelining
abstract
This paper elaborates on a new view on software pipelining, called decomposed software pipelining. The approach is to decouple the problem into resource constraints and dependence constraints. Resource constraints management amounts to scheduling an acyclic graph subject to resource constraints for which an efficiency bound is known, resulting in a bound for loop scheduling. The acyclic graph is obtained by cutting some particular edges of the (cyclic) dependence graph. In this paper, we cut edges in a different way, using circuit retiming algorithms, so as to minimize both the longest dependence path in the acyclic graph, and the number of edges in the acyclic graph. With this technique, we improve the efficiency bound given for Gasperoni and Schwlegelshohn algorithm, and we reduce the constraints that remain for the acyclic problem. We believe this framework to be of interest because it brings a new insight into the software problem by establishing its deep link with the circuit retiming problem.
Pierre-Yves Calland, Alain Darte, Yves Robert
IEEE Trans. Parallel Distributed Syst.2
1997 HPFIT: A Set of Integrated Tools for the Parallelization of Applications Using High Performance Fortran. PART I: HPFIT and the TransTOOL Environment
Thomas Brandes, Serge Chaumette, Marie Christine Counilh, Jean Roman, Alain Darte, Frédéric Desprez, J. C. Mignot
Parallel Comput.5
1997 Plugging Anti and Output Dependence Removal Techniques Into Loop Parallelization Algorithm
Pierre-Yves Calland, Alain Darte, Yves Robert, Frédéric Vivien
Parallel Comput.2
1996 On the Removal of Anti and Output Dependences
abstract
In this paper we build upon results of D.A. Padua and M.J. Wolfe (1986), who introduce two graph transformations to eliminate anti and output dependences. We first give a unified framework for such transformations. Then, given a loop nest, we aim at determining which statements should be transformed so as to break artificial cycles involving anti or output dependences. The problem of finding the mininum number of statements to be transformed is shown to be NP-complete in the strong sense, and we propose two efficient heuristics.
Pierre-Yves Calland, Alain Darte, Yves Robert, Frédéric Vivien
ASAP2
1996 A New Guaranteed Heuristic for the Software Pipelining Problem
abstract
lVe present yet another heuristic for the software pipelining problem.This heuristic brings a new insight to the software pipelining problem by establishing its deep link with the circuit retiming problem.Also, in the single resource class case, our new heuristic is guaranteed, with a better bound than that of [6].Finally, we point out that, in its simplest form, our algorithm has a lower complexity.
Pierre-Yves Calland, Alain Darte, Yves Robert
International Conference on Supercomputing2
1995 Revisiting the Decomposition of Karp, Miller and Winograd
abstract
This paper is devoted to the construction of multi-dimensional schedules for a system of uniform recurrence equations. We show that this problem is dual to the problem of computability of a system of uniform recurrence equations. We propose a new study of the decomposition algorithm first proposed by Karp, Miller and Winograd: we base our implementation on linear programming resolutions whose duals give exactly the desired multi-dimensional schedules. Furthermore, we prove that the schedules built this way are optimal up to a constant factor.
Alain Darte, Frédéric Vivien
ASAP1
1995 Affine-by-Statement Scheduling of Uniform and Affine Loop Nests over Parametric
Alain Darte, Yves Robert
J. Parallel Distributed Comput.1
1994 (Pen)-ultimate tiling?
Pierre Boulet, Alain Darte, Tanguy Risset, Yves Robert
Integr.2
1994 Mapping Uniform Loop Nests Onto Distributed Memory Architectures
Alain Darte, Yves Robert
Parallel Comput.1
1994 Constructive Methods for Scheduling Uniform Loop Nests
abstract
This paper surveys scheduling techniques for loop nests with uniform dependences. First, we introduce the hyperplane method and related variants. Then we extend it by using a different affine scheduling for each statement within the nest. In both cases, we present a new, constructive, and efficient method to determine optimal solutions, i.e., schedules whose total execution time is minimum.>
Alain Darte, Yves Robert
IEEE Trans. Parallel Distributed Syst.1
1993 Communication-minimal mapping of uniform loop nests onto distributed memory architectures
abstract
The authors deal with mapping techniques for uniform loop nests. Target machines are SPMD distributed memory parallel computers. They use affine-by-variable mapping to synthesize a virtual grid architecture from the original loop nest. The key to the mapping strategy is the communication graph, which enables us to derive optimal mappings, i.e., where the number of communications is proved to be minimal.>
Alain Darte, Yves Robert
ASAP1
1992 Linear scheduling is close to optimality
abstract
This paper deals with the problem of finding optimal schedulings for uniform dependence algorithms. Given a convex domain, let T/sub f/ be the total time needed to execute all computations using the free (greedy) schedule and let T/sub l/ be the total time needed to execute all computations using the optimal linear schedule. The authors' main result is to bound T/sub l//T/sub f/ and T/sub l/-T/sub f/ for sufficiently 'fat' domains.>
Alain Darte, Leonid Khachiyan, Yves Robert
ASAP1
1992 Erratum to: Regular partitioning for synthesizing fixed-size systolic arrays
Alain Darte
Integr.1
1991 Synthesizing systolic arrays: some recent developments
abstract
Methods for synthesizing systolic arrays from uniform DAGs are well understood. The idea is to extract from the original sequential algorithm a dependence graph where all incoming arcs to a given node come from a fixed-size neighborhood, so that dependencies are local. Space-time transformations are then used for scheduling the DAG (timing function) and mapping nodes onto physical processors (allocation function). Both linear and piece-wise linear mappings can be derived in a systematic way, and methods exist to optimize given criteria such as the execution time, the number of processors or the cell utilization. The authors survey three recent developments along the following lines: DAG uniformization and spacetime minimal arrays; mapping n-dimensional DAGs (n>or=3) onto linear arrays; and partitioning techniques for the efficient mapping of a computational DAG onto a fixed-size processor array.>
Alain Darte, Tanguy Risset, Yves Robert
ASAP1
1991 Regular partitioning for synthesizing fixed-size systolic arrays
Alain Darte
Integr.1