I am a third-year PhD student in the PARKAS team of the Computer Science department of the École normale supérieure in Paris. I work on the design and implementation of programming languages for embedded multiprocessors, under the supervision of Albert Cohen, Marc Pouzet and Louis Mandel. Before that, I did a master in CS/EE in Université Pierre et Marie Curie.
During my thesis, I focus on the design and implementation of a language dedicated to high-performance stream-processing systems. More precisely, I try to extend the ideas found in synchronous languages such as Lustre and Lucy-n while keeping their good properties. I believe that it is a nice research area that involves several distinct computer science traditions:
- Functional programming and denotational semantics
- Digital synchronous circuits and latency-insensitive design
- Optimization and in particular cyclic scheduling
- Parallel language runtimes and relaxed memory programming
I am currently working on a compiler prototype for a language embodying several of my ideas. A preliminary release should be available here soon!
Bursty Kahn Networks and Integer Clocks [PDF, in French]
A. Guatto and L. Mandel (in JFLA 2014)
Data-flow synchronous languages à la Lustre offer an high-level equational formalism dedicated to the design and implementation of real-time systems. These languages have traditionally been restricted to critical systems with low computational demand; in particular, the generated code does not usually feature loops.
Lucy-n is a recent derivative of Lustre tailored to multimedia processing. In this paper, we propose an extension of Lucy-n's semantics where streams transport bursts of values rather than single scalars, and a type system characterizing the size of these bursts. The end goal is to adapt the code generation techniques in order to produce nested loops.
Correct and Efficient Bounded FIFO Queues [PDF]
N.-M. Lê, A. Guatto, A. Cohen and A. Pop (in SBAC-PAD 2013)
This paper gives an efficient, portable and correct implementation of bounded single-producer single-consumer first-in first-out queues in C11. This data-structure can serve as an elementary building block for high-performance data-flow language runtimes.
A Modular Memory Optimization for Synchronous Data-flow Languages [PDF]
L. Gérard, A. Guatto, C. Pasteur and M. Pouzet (in LCTES 2012, Best Paper)
Data-flow synchronous programming languages are pure functional programming languages. Modifying a value thus consists in non-destructively introducing a new version of the same value. This is a problem when handling composte data structures such as arrays: a naive impelmentation will mandate the use of costly memory copies.
The paper proposes a two-level solution to drastically reduce the number of copies while preserving the original functional semantics. At the intra-procedural level, we use an algorithm akin to register allocation to share non-interfering local variables. At the inter-procedural level, a linear type system enables programmer-controlled modular memory sharing. These ideas have been implemented in an experimental compiler.
Synchronous Machines: a Traced Category [HAL-INRIA]
M. Bagnol and A. Guatto (2012)
This paper describes a monoidal category of automata. We show how applying a categorical construction coming from models of linear logic gives for free a category with (linear) higher-order features.
SCADE/Lustre to VHDL research report [PDF, in French]
A. Guatto and M. Pouzet (2010)
This research report describes a straightforward translation from the synchronous programming language Lustre (and its industrial variant SCADE) to digital synchronous circuits. This procedure is fully automatic and produces synthesizable VHDL.
This is a very small step in the direction of a unified hardware/software programming language.
- Integer clocks [PDF], Synchron 2012 workshop
- Dynamic Scheduling of Synchronous Programs in Lucid Synchrone [PDF], Synchron 2011 workshop
- Generating Code from Lucy-n: Issues and Perspectives [PDF], PARKAS meeting, may 2012
TeachingI teach at university Paris 6 (UPMC) and the Polytech'UPMC engineering school.
- C Programming [2011-2012] (Polytech'UPMC, CS/EE first year)
- Electronics Project [2011-2014] (UPMC, EE third year)
- Synchronous Programming [2013-2014] (UPMC, CS fifth year)
- Computer Architecture [2012-2014] (Polytech'UPMC, CS/EE first year)