KEYWORDS: compiler, program analysis, program transformations, automatic parallelization, loop optimization, executable code.
LOCATION:
Team ALF, Inria, Campus de Beaulieu, RENNES (France)
or
team CAMUS, Laboratoire ICube, Université de Strasbourg, Pôle API, boulevard Brant, 67400 ILLKIRCH (France).
WORK ENVIRONMENT
Established in 1967, Inria is the only public research body fully dedicated to computational sciences in France.
Combining computer sciences with mathematics, Inria’s 3,500 researchers strive to invent the digital technologies of the future. Educated at leading international universities, they creatively integrate basic research with applied research and dedicate themselves to solving real problems, collaborating with the main players in public and private research in France and abroad and transferring the results of their work to innovative companies.
The researchers at Inria published over 4,500 articles in 2013. They are behind over 300 active patents and 120 start-ups. The 172 project teams are distributed in eight research centers located throughout France.
The ALF team regroups researchers in computer architecture, software/compiler optimization, and real-time systems. The long-term goal of the ALF project-team is to allow the end-user to benefit from the 2020’s many-core platform.
The CAMUS group is focusing on developing, adapting and extending automatic program parallelization and optimization techniques for the efficient use of current and future multicore processors.
MISSION
The ALF and CAMUS teams collaborate on dynamic optimization and parallelization of binary programs. The goal of the project is to analyze a program while it runs, and to identify transformations that will make it faster. In this context, a platform for analysis and optimization of x86 executables, named PADRONE, has been developed by the ALF team [1]. Among the implemented optimizations, we have proposed to convert the SSE vector instructions to AVX on-the-fly [2].
In order to enlarge the set of applicable optimizing transformations, in particular focusing on automatically parallelizing loops, we started translating on-the-fly assembly code to the intermediate representation of the LLVM compiler [3]. This representation enables higher-level analyses and transformations, such as dependence analysis, or re-scheduling of loop iterations. This translation to the intermediate representation is based on an extension of the mcsema [4] translator to x86-64 instructions.
In parallel with this, the CAMUS team is developing a software platform dedicated to automatic parallelization, at run-time, of loops in compute-intensive programs that cannot be parallelized at compile-time. This platform, named Apollo, implements a speculative approach based on prediction of data-dependences between memory accesses. Apollo consists in two main parts:
-
a “static” part, implemented as extensions to the LLVM compiler;
-
a “dynamic” part implemented in C++.
The purpose of the static part is to prepare the candidate loops for dynamic analysis and transformation. Starting from a loop nest, several versions are automatically generated: an instrumented version will collect the addresses of memory locations accessed by the program, as well as the values of certain variables; several incomplete optimized and parallelized versions, to be completed at run-time when the necessary information is obtained. We also generate instructions dedicated to verifying the validity of speculative parallelization. The prediction model for speculation is built by executiong samples of the loop nest thanks to the instrumented version. More details can be found in [5,6].
The post-doctoral candidate will contribute to the dynamic optimization and parallelization of binary programs, focusing particularly on:
-
extensions of the mcsema translator to extend the instruction coverage, and to improve the quality of the generated LLVM code.
-
speculative parallelization of loops in binary programs, using the Apollo platform.
-
analysis of the LLVM intermediate code thanks to standard passes, or newly designed passes: identification of loops, dependence analysis, instrumentation, etc.
-
transformation of the intermediate representation and just-in-time compilation: generation of versions, parallelization, management of speculation, etc.
[1] Emmanuel Riou, Erven Rohou, Philippe Clauss, Nabil Hallou, Alain Ketterlin : PADRONE: a Platform for Online Profiling, Analysis, and Optimization. DCE 2014 – International workshop on Dynamic Compilation Everywhere, Jan 2014, Vienne, Austria. 2014.
[2] Nabil Hallou, Erven Rohou, Philippe Clauss, Alain Ketterlin. Dynamic Re-Vectorization of Binary Code. International Conference on Embedded Computer Systems: Architectures, Modeling and Simulation – SAMOS XV, Jul 2015, Agios Konstantinos, Greece.
[3] The LLVM Compiler Infrastructure : http://llvm.org
[4] Mcsema, x86 to machine code translation framework: https://github.com/trailofbits/mcsema
[5] Alexandra Jimborean, Philippe Clauss, Jean-François Dollinger, Vincent Loechner, Juan Manuel Martinez Caamaño: Dynamic and Speculative Polyhedral Parallelization Using Compiler-Generated Skeletons. International Journal of Parallel Programming 42(4): 529-545 (2014).
[6] Aravind Sukumaran-Rajam, Juan Manuel Martinez Caamaño, Willy Wolff, Alexandra Jimborean, Philippe Clauss: Speculative Program Parallelization with Scalable and Decentralized Runtime Verification. RV 2014: 124-139.
COMPETENCES TECHNIQUES ET QUALITES REQUISES :
Skills: good knowledge of assembly language and processor architecture; good knowledge of compilers and compilation techniques; knowledge of parallelism and code parallelization techniques; some knowledge of the API of the LLVM compiler would be a plus.
Expertise: C/C++ programming
Life skills: ability to work in a team, capacity to listen and to share.
EDUCATION: PhD in computer science.
DURATION: 24 months
ESTIMATED STARTING DATE: between Sep 1st 2015 and Jan 1st 2016.
SALARY: 2.621 €/month gross (2.115 € net)
BENEFITS:
-
Possibility of French courses
-
Contribution in part to the costs of transport (French public transport company)
-
Complementary health insurance with competitive price
APPLICATION FILE
-
Application letter explaining why the applicant wishes to join Inria
-
Resume
-
Abstract of PhD thesis
-
Possibly letters of recommendation or references
CONTACTS AND APPLICATION
For any inquiry, please contact:
erven.rohou@inria.fr, +33 (0)2 99 84 74 93
or
philippe.clauss@inria.fr, +33 (0)3 68 85 45 37
ADDITIONAL INFORMATION
Security and defence procedure
In the interests of protecting its scientific and technological assets, Inria is a restricted-access establishment. Consequently, it follows special regulations for welcoming any person who whishes to work with the institute. The final acceptance of each candidate thus depends on applying this security and defence procedure.