VLDB 2026 Research / reviewers in the wild / expert
Alban Douillet
dblp:80/2349
· DBLP profile ↗
8ranked-venue papers
2as first author
0since 2021 · last 2008
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 5 · 2 first-authorSoftware engineering, systems software and programming languages · 5
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
3 papers |
Compilers and program optimization · 100% | |
| Computer architecture, parallel and distributed computing, and storage systems
2 papers |
Processor architecture and microarchitecture · 100% |
Topics — the 6 heaviest of 6, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Compilers and program optimization › instruction scheduling
software pipelining |
0.2 | 3 | 2008 | Register allocation for software pipelined multidimensional loops · ACM Trans. Program. Lang. Syst. 2008 Single-dimension software pipelining for multidimensional loops · ACM Trans. Archit. Code Optim. 2007 Register allocation for software pipelined multi-dimensional loops · PLDI 2005 |
Compilers and program optimization
register allocation |
0.1 | 2 | 2008 | Register allocation for software pipelined multidimensional loops · ACM Trans. Program. Lang. Syst. 2008 Register allocation for software pipelined multi-dimensional loops · PLDI 2005 |
Compilers and program optimization
instruction scheduling |
0.1 | 1 | 2008 | Register allocation for software pipelined multidimensional loops · ACM Trans. Program. Lang. Syst. 2008 |
Compilers and program optimization › loop transformation
loop scheduling |
0.1 | 1 | 2007 | Single-dimension software pipelining for multidimensional loops · ACM Trans. Archit. Code Optim. 2007 |
Compilers and program optimization › instruction scheduling › software pipelining
modulo scheduling |
0.1 | 1 | 2007 | Single-dimension software pipelining for multidimensional loops · ACM Trans. Archit. Code Optim. 2007 |
Processor architecture and microarchitecture
instruction-level parallelism |
0.0 | 2 | 2007 | Single-dimension software pipelining for multidimensional loops · ACM Trans. Archit. Code Optim. 2007 Register allocation for software pipelined multi-dimensional loops · PLDI 2005 |
Methods — techniques the papers use, named apart from their topics
modulo scheduling · 0.1hyperplane scheduling · 0.1data dependence graph · 0.1bin-packing · 0.1vector lifetime analysis · 0.1bin packing · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2008 | Register allocation for software pipelined multidimensional loopsabstractThis article investigates register allocation for software pipelined multidimensional loops where the execution of successive iterations from an n -dimensional loop is overlapped. For single loop software pipelining, the lifetimes of a loop variable in successive iterations of the loop form a repetitive pattern. An effective register allocation method is to represent the pattern as a vector of lifetimes (or a vector lifetime using Rau's terminology [Rau 1992]) and map it to rotating registers. Unfortunately, the software pipelined schedule of a multidimensional loop is considerably more complex and so are the vector lifetimes in it. In this article, we develop a way to normalize and represent the vector lifetimes, which captures their complexity, while exposing their regularity that enables a simple solution. The problem is formulated as bin-packing of the multidimensional vector lifetimes on the surface of a space-time cylinder. A metric, called distance, is calculated either conservatively or aggressively to guide the bin-packing process, so that there is no overlapping between any two vector lifetimes, and the register requirement is minimized. This approach subsumes the classical register allocation for software pipelined single loops as a special case. The method has been implemented in the ORC compiler and produced code for the IA-64 architecture. Experimental results show the effectiveness. Several strategies for register allocation are compared and analyzed. Hongbo Rong, Alban Douillet, Guang R. Gao |
ACM Trans. Program. Lang. Syst. | 2 |
| 2007 | Software-Pipelining on Multi-Core Architectures
Alban Douillet, Guang R. Gao |
PACT | 1 |
| 2007 | Single-dimension software pipelining for multidimensional loopsabstractTraditionally, software pipelining is applied either to the innermost loop of a given loop nest or from the innermost loop to outer loops. This paper proposes a three-step approach, called single-dimension software pipelining (SSP) , to software pipeline a loop nest at an arbitrary loop level that has a rectangular iteration space and contains no sibling inner loops in it. The first step identifies the most profitable loop level for software pipelining in terms of initiation rate, data reuse potential, or any other optimization criteria. The second step simplifies the multidimensional data-dependence graph (DDG) of the selected loop level into a one-dimensional DDG and constructs a one-dimensional (1D) schedule. Based on the one-dimensional schedule, the third step derives a simple mapping function that specifies the schedule time for the operation instances in the multidimensional loop. The classical modulo scheduling is subsumed by SSP as a special case. SSP is also closely related to hyperplane scheduling, and, in fact, extends it to be resource constrained. We prove that SSP schedules are correct and at least as efficient as those schedules generated by traditional modulo scheduling methods. We extend SSP to schedule imperfect loop nests, which are most common at the instruction level. Multiple initiation intervals are naturally allowed to improve execution efficiency. Feasibility and correctness of our approach are verified by a prototype implementation in the ORC compiler for the IA-64 architecture, tested with loop nests from Livermore and SPEC2000 floating-point benchmarks. Preliminary experimental results reveal that, compared to modulo scheduling, software pipelining at an appropriate loop level results in significant performance improvement. Software pipelining is beneficial even with prior loop transformations. Hongbo Rong, Zhizhong Tang, R. Govindarajan, Alban Douillet, Guang R. Gao |
ACM Trans. Archit. Code Optim. | 4 |
| 2006 | Multi-dimensional Kernel Generation for Loop Nest Software Pipelining
Alban Douillet, Hongbo Rong, Guang R. Gao |
Euro-Par | 1 |
| 2005 | Register allocation for software pipelined multi-dimensional loopsabstractSoftware pipelining of a multi-dimensional loop is an important optimization that overlaps the execution of successive outermost loop iterations to explore instruction-level parallelism from the entire n-dimensional iteration space. This paper investigates register allocation for software pipelined multi-dimensional loops.For single loop software pipelining, the lifetime instances of a loop variant in successive iterations of the loop form a repetitive pattern. An effective register allocation method is to represent the pattern as a vector of lifetimes (or a vector lifetime using Rau's terminology) and map it to rotating registers. Unfortunately, the software pipelined schedule of a multi-dimensional loop is considerably more complex, and so are the vector lifetimes in it.In this paper, we develop a way to normalize and represent vector lifetimes in multi-dimensional loop software pipelining, which capture their complexity, while exposing their regularity that enables us to develop a simple, yet powerful solution. Our algorithm is based on the development of a metric, called distance, that quantitatively determines the degree of potential overlapping (conflicts) between two vector lifetimes. We show how to calculate and use the distance, conservatively or aggressively, to guide the register allocation of the vector lifetimes under a bin-packing algorithm framework. The classical register allocation for software pipelined single loops is subsumed by our method as a special case.The method has been implemented in the ORC compiler and produced code for the Itanium architecture. We report the effectiveness of our method on 134 loop nests with 348 loop levels. Several strategies for register allocation are compared and analyzed. Hongbo Rong, Alban Douillet, Guang R. Gao |
PLDI | 2 |
| 2004 | Code Generation for Single-Dimension Software Pipelining of Multi-Dimensional LoopsabstractTraditionally, software pipelining is applied either to the innermost loop of a given loop nest or from the innermost loop to the outer loops. We proposed a scheduling method, called single-dimension software pipelining (SSP), to software pipeline a multidimensional loop nest at an arbitrary loop level. We describe our solution to SSP code generation. In contrast to traditional software pipelining, SSP handles two distinct repetitive patterns, and thus requires new code generation algorithms. Further, these two distinct repetitive patterns complicate register assignment and require two levels of register renaming. As rotating registers support renaming at only one level, our solution is based on a combination of dynamic register renaming (using rotating registers) and static register renaming (using code replication). Finally, code size increase, an even more important issue for SSP than for traditional software-pipelining, is also addressed. Optimizations are proposed to reduce code size without significant performance degradation. We first present a code generation scheme and subsequently implement it for the IA-64 architecture, making effective use of rotating registers and predicated execution. We present some initial experimental results, which demonstrate not only the feasibility and correctness of our code generation scheme, but also its code quality. Hongbo Rong, Alban Douillet, R. Govindarajan, Guang R. Gao |
CGO | 2 |
| 2004 | Single-Dimension Software Pipelining for Multi-Dimensional LoopsabstractTraditionally, software pipelining is applied either to the innermost loop of a given loop nest or from the innermost loop to outer loops. We propose a three-step approach, called single-dimension software pipelining (SSP), to software pipeline a loop nest at an arbitrary loop level. The first step identifies the most profitable loop level for software pipelining in terms of initiation rate or data reuse potential. The second step simplifies the multidimensional data-dependence graph (DDG) into a 1-dimensional DDG and constructs a 1-dimensional schedule for the selected loop level. The third step derives a simple mapping function which specifies the schedule time for the operations of the multidimensional loop, based on the 1-dimensional schedule. We prove that the SSP method is correct and at least as efficient as other modulo scheduling methods. We establish the feasibility and correctness of our approach by implementing it on the IA-64 architecture. Experimental results on a small number of loops show significant performance improvements over existing modulo scheduling methods that software pipeline a loop nest from the innermost loop. Hongbo Rong, Zhizhong Tang, R. Govindarajan, Alban Douillet, Guang R. Gao |
CGO | 4 |
| 2001 | Speculative Prefetching of Induction Pointers
Arthur Stoutchinin, José Nelson Amaral, Guang R. Gao, James C. Dehnert, Suneel Jain, Alban Douillet |
CC | 6 |