Nicolas BENOIT - Research

My PhD research work, from 10/2008 to 10/2011, focused on code generation for embedded massively parallel architectures.

During the last decades, the performance of microprocessors has been continuously driven by the growth of clock frequencies.
Yet, this evolution is slowed down by new physical constraints, while the demand of computational power keeps growing exponentially.
That is why manufacturers had to find another way to increase their chips' performances.
Adding multiple independent execution cores is one of the solutions proposed, it is simple and promising but requires a paradigm shift in the field of programming.
Instead of writing a single monolithic task, programmers are now required to distribute collaborating tasks to multiple cores.


Gomet is the experimental framework I built within GCC in order to integrate multi-grain parallelization.

After performing an inter-procedural data-dependence analysis on the input program, it builds a hierarchical intermediate representation of it.
This representation is transformed and adapted to the available parallelism features of the target architecture.
For example, Gomet can detect two independent procedure calls and encapsulate them in distinct threads.
Gomet generates C source code that can then be processed by native compilation tools.


For each function in a source file, Gomet's front-end is called as an optimization pass, and interrupts the passes sequence just before the Gimple I.R. is lowered to RTL.
When the last function is reached, Gomet enters its own processing chain and generates a hierarchical I.R. of the input program.
This I.R. is named Kimble and captures all the parallelism available in the program.

In Gomet's back-end, the Kimble I.R. is scheduled and transformed to map the target architecture.
When done, Gomet outputs the corresponding C source code with the necessary system/hardware primitives.
Current target architectures include the IBM Cell BE, CUDA-enabled GPGPUs and systems supporting the PThreads API.


GROW 2010(Edit)

Extending GCC with a Multi-Grain Parallelism Adaptation Framework for MPSoCs (PDF)
Nicolas BENOIT and Stéphane LOUISE
GCC for Research Opportunities Workshop
Co-located with HiPEAC 2010 Conference

PDP 2010(Edit)

Model Driven Iterative Multi-dimensional Parallelization of Multi-task Programs for the Cell BE
Miao WANG, Nicolas BENOIT and François BODIN
Eighteenth Euromicro International Conference on Parallel, Distributed and Network-Based Computing

WIR 2011(Edit)

Kimble: a Hierarchical Intermediate Representation for Multi-Grain Parallelism (PDF)
Nicolas BENOIT and Stéphane LOUISE
Workshop on Intermediate Representations
Co-located with CGO 2011 Conference

IEEE MCSoC 2015(Edit)

A Performance Prediction for Automatic Placement of Heterogeneous Workloads
Nicolas BENOIT and Stéphane LOUISE
IEEE 9th International Symposium on Embedded Multicore/Many-core Systems-on-Chip

ICCS 2015(Edit)

A First Step to Performance Prediction for Heterogeneous Processing on Manycores
Nicolas BENOIT and Stéphane LOUISE
International Conference on Computational Science (ICCS) 2015

PDP 2016(Edit)

Using an Intermediate Representation to Map Workloads on Heterogeneous Parallel Systems
Nicolas BENOIT and Stéphane LOUISE
Twenty-fourth Euromicro International Conference on Parallel, Distributed and Network-Based Computing


ACCA 2011(Edit)

Bringing IR Interpretation to Compilers for Analysis Purpose
Nicolas BENOIT and Stéphane LOUISE
Analyse to Compile, Compile to Analyse Workshop
Affiliated with CGO 2011 Conference

RCFC 01/2011(Edit)

Une adaptation du flot de compilation à l'exploitation de paralllélismes imbriqués
Nicolas BENOIT and Stéphane LOUISE
Troisièmes Rencontres de la Communauté Française de Compilation