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 Ketterlin

dblp:44/6972 · DBLP profile ↗
← Back
13ranked-venue papers
8as first author
0since 2021 · last 2016
—ORCID · none

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

Software engineering, systems software and programming languages · 5 · 4 first-authorSystems, architecture and hardware · 4 · 2 first-authorArtificial intelligence and machine learning · 3 · 2 first-authorDatabases, data management, data science and information retrieval · 3 · 3 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
2 papers
Compilers and program optimization · 93% Program analysis · 7%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 100%
Databases, data mining, and information retrieval
2 papers
Data mining · 94% Data models and query languages · 6%

Topics — the 10 heaviest of 11, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization › parallelization
automatic parallelization
0.322012
Polyhedral parallelization of binary code · ACM Trans. Archit. Code Optim. 2012
Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization · MICRO 2012
Compilers and program optimization
dependence analysis
0.112012
Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization · MICRO 2012
Compilers and program optimization › loop transformation
polyhedral compilation
0.112012
Polyhedral parallelization of binary code · ACM Trans. Archit. Code Optim. 2012
Parallel and multicore computing › parallel computing › parallel program analysis
dependence profiling
0.112012
Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization · MICRO 2012
Parallel and multicore computing › loop transformation › loop parallelization
loop parallelism extraction
0.112012
Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization · MICRO 2012
Program analysis › dynamic analysis
dynamic binary instrumentation
0.012012
Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization · MICRO 2012
Parallel and multicore computing › loop transformation
loop parallelization
0.012012
Polyhedral parallelization of binary code · ACM Trans. Archit. Code Optim. 2012
Data mining
clustering
0.021997
Clustering Sequences of Complex Objects · KDD 1997
Conceptual Clustering in Structured Databases: A Practical Approach · KDD 1995
Data mining › clustering
sequence clustering
0.011997
Clustering Sequences of Complex Objects · KDD 1997
Data mining › clustering
conceptual clustering
0.011995
Conceptual Clustering in Structured Databases: A Practical Approach · KDD 1995

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

static analysis · 0.3polyhedral transformation · 0.3dynamic binary instrumentation · 0.3binary parsing · 0.3
YearPublicationVenuePosition
2016 POSTER: Hybrid Data Dependence Analysis for Loop Transformations
abstract
Loop optimizations span from vectorization, scalar promotion, loop invariant code motion, software pipelining to loop fusion, skewing, tiling and loop parallelization. These transformations are essential in the quest for automated high-performance code generation.
Diogo Sampaio, Alain Ketterlin, Louis-Noël Pouchet, Fabrice Rastello
PACT2
2014 Improving the Performance of X10 Programs by Clock Removal
Paul Feautrier, Eric Violard, Alain Ketterlin
CC3
2014 Hardware/Software Helper Thread Prefetching on Heterogeneous Many Cores
abstract
Heterogeneous Many Cores (HMC) architectures that mix many simple/small cores with a few complex/large cores are emerging as a design alternative that can provide both fast sequential performance for single threaded workloads and power-efficient execution for through-put oriented parallel workloads. The availability of many small cores in a HMC presents an opportunity to utilize them as low-power helper cores to accelerate memory-intensive sequential programs mapped to a large core. However, the latency overhead of accessing small cores in a loosely coupled system limits their utility as helper cores. Also, it is not clear if small cores can execute helper threads sufficiently in advance to benefit applications running on a larger, much powerful, core. In this paper, we present a hardware/software framework called coretethering to support efficient helper threading on heterogeneous manycores. Core-tethering provides a co-processor like interface to the small cores that (a) enables a large core to directly initiate and control helper execution on the helper core and (b) allows efficient transfer of execution context between the cores, thereby reducing the performance overhead of accessing small cores for helper execution. Our evaluation on a set of memory intensive programs chosen from the standard benchmark suites show that, helper threads using moderately sized small cores can significantly accelerate a larger core compared to using a hardware prefacer alone. We find that a small core provides a good trade-off against using an equivalent large core to run helper threads in a HMC. Additionally, helper prefetching on small cores when used along with hardware prefetching, can provide an alternate design point to growing instruction window size for achieving higher sequential performance on memory intensive applications.
Bharath Narasimha Swamy, Alain Ketterlin, André Seznec
SBAC-PAD2
2014 Recovering memory access patterns of executable programs
Alain Ketterlin, Philippe Clauss
Sci. Comput. Program.1
2012 Profiling Data-Dependence to Assist Parallelization: Framework, Scope, and Optimization
abstract
This paper describes a tool using one or more executions of a sequential program to detect parallel portions of the program. The tool, called Par wiz, uses dynamic binary instrumentation, targets various forms of parallelism, and suggests distinct parallelization actions, ranging from simple directive tagging to elaborate loop transformations. The first part of the paper details the link between the program's static structures (like routines and loops), the memory accesses performed by the program, and the dependencies that are used to highlight potential parallelism. This part also describes the instrumentation involved, and the general architecture of the system. The second part of the paper puts the framework into action. The first study focuses on loop parallelism, targeting OpenMP parallel-for directives, including privatization when necessary. The second study is an adaptation of a well-known vectorization technique based on a slightly richer dependence description, where the tool suggests an elaborate loop transformation. The third study views loops as a graph of (hopefully lightly) dependent iterations. The third part of the paper explains how the overall cost of data-dependence profiling can be reduced. This cost has two major causes: first, instrumenting memory accesses slows down the program, and second, turning memory accesses into dependence graphs consumes processing time. Par wiz uses static analysis of the original (binary) program to provide data at a coarser level, moving from individual accesses to complete loops whenever possible, thereby reducing the impact of both sources of inefficiency.
Alain Ketterlin, Philippe Clauss
MICRO1
2012 Polyhedral parallelization of binary code
abstract
Many automatic software parallelization systems have been proposed in the past decades, but most of them are dedicated to source-to-source transformations. This paper shows that parallelizing executable programs is feasible, even if they require complex transformations, and in effect decouples parallelization from compilation, for example, for closed-source or legacy software, where binary code is the only available representation. We propose an automatic parallelizer, which is able to perform advanced parallelization on binary code. It first parses the binary code and extracts high-level information. From this information, a C program is generated. This program captures only a subset of the program semantics, namely, loops and memory accesses. This C program is then parallelized using existing, state-of-the-art parallelizers, including advanced polyhedral parallelizers. The original program semantics is then re-injected, and the transformed parallel loop nests are recompiled by a standard C compiler. We show on the PolyBench benchmark suite that our system successfully detects and parallelizes almost all the loop nests from the binary code, using a recent polyhedral loop parallelizer as a backend. The paper ends by elaborating a strategy to parallelize more complex programs, such as those containing non-linear accesses to memory, and provides a few example case-studies.
Benoît Pradelle, Alain Ketterlin, Philippe Clauss
ACM Trans. Archit. Code Optim.2
2011 Efficient memory tracing by program skeletonization
abstract
Memory profiling is useful for a variety of tasks, most notably to produce traces of memory accesses for cache simulation. However, instrumenting every memory access incurs a large overhead, in the amount of code injected in the original program as well as in execution time. This paper describes how static analysis of the binary code can be used to reduce the amount of instrumentation. The analysis extracts loops and memory access functions by tracking how memory addresses are computed from a small set of base registers holding, e.g., routine parameters and loop counters. Instrumenting these base registers instead of memory operands reduces the weight of instrumentation, first statically by reducing the amount of injected code, and second dynamically by reducing the amount of instrumentation code actually executed. Also, because the static analysis extracts intermediate-level program structures (loops and branches) and access functions in symbolic form, it is easy to transform the original executable into a skeleton program that consumes base register values and produces memory addresses. The first advantage of using a skeleton is to be able to overlap the execution of the instrumented program with that of the skeleton, thereby reducing the overhead of recomputing addresses. The second advantage is that the skeleton program and its shorter input trace can be saved and rerun as many times as necessary without requiring access to the original architecture, e.g., for cache design space exploration.
Alain Ketterlin, Philippe Clauss
ISPASS1
2011 A global averaging method for dynamic time warping, with applications to clustering
François Petitjean, Alain Ketterlin, Pierre Gançarski
Pattern Recognit.2
2010 Recovering the Memory Behavior of Executable Programs
abstract
This paper deals with the binary analysis of executable programs, with the goal of understanding how they access memory. It explains how to statically build a formal model of all memory accesses. Starting with a control-flow graph of each procedure, well-known techniques are used to structure this graph into a hierarchy of loops in all cases. The paper shows that much more information can be extracted by performing a complete data-flow analysis over machine registers after the program has been put in static single assignment (SSA) form. By using the SSA form, registers used in addressing memory can be symbolically expressed in terms of other, previously set registers. By including the loop structures in the analysis, loop indices and trip counts can also often be expressed symbolically. The whole process produces a formal model made of loops where memory accesses are linear expressions of loop counters and registers. The paper provides a quantitative evaluation of the results when applied to several dozens of SPEC benchmark programs. Because static analysis is often incomplete, the paper ends by describing a lightweight instrumentation strategy that collects at run time enough information to complete the program's symbolic description.
Alain Ketterlin, Philippe Clauss
SCAM1
2008 Prediction and trace compression of data access addresses through nested loop recognition
abstract
This paper describes an algorithm that takes a trace (i.e., a sequence of numbers or vectors of numbers) as input, and from that produces a sequence of loop nests that, when run, produces exactly the original sequence. The input format is suitable for any kind of program execution trace, and the output conforms to standard models of loop nests. The first, most obvious, use of such an algorithm is for program behavior modeling for any measured quantity (memory accesses, number of cache misses, etc.). Finding loops amounts to detecting periodic behavior and provides an explanatory model. The second application is trace compression, i.e., storing the loop nests instead of the original trace. Decompression consists of running the loops, which is easy and fast. A third application is value prediction. Since the algorithm forms loops while reading input, it is able to extrapolate the loop under construction to predict further incoming values. Throughout the paper, we provide examples that explain our algorithms. Moreover, we evaluate trace compression and value prediction on a subset of the SPEC2000 benchmarks.
Alain Ketterlin, Philippe Clauss
CGO1
1997 Clustering Sequences of Complex Objects
Alain Ketterlin
KDD1
1995 Conceptual Clustering in Structured Databases: A Practical Approach
Alain Ketterlin, Pierre Gançarski, Jerzy Korczak 0001
KDD1
1994 Concept Formation in Complex Domains
Alain Ketterlin, Jerzy Korczak 0001
ECML1