Jobs/M2 RL 2014 problematiques-performance


Study of performance-related issues in image analysis in a generic context
Reference id

M2 RL 2014 problematiques-performance


5 - 6 months in 2014

Research field

Image Processing

Related project



Roland Levillain

General presentation of the field

This internship is part of the “genericity and efficiency” research line of the laboratory.

Many software tools for image processing are designed with performance issues in mind, related to either the data (many images or videos, or very large ones), the context (real-time constraints, the need to obtain a response in a “reasonable” time frame), or hardware (limited processing power or memory capacity).

Besides, more and more software libraries for image processing are built along the lines of an advanced design work, using “abstractions” representing the various concepts of the domain (image, point, value, neighborhood, etc. ). This approach enables a high-level strategy to write image processing algorithms, which are reusable (not restricted to a single use case) and often simpler. Software frameworks from this category are mostly based on object-oriented programming or generic programming (C++ templates, Java or C# generics).

Tools that seek to resolve the two previous issues (being efficient while providing a general writing via abstractions) are much more uncommon. The Olena project, developed for more than fifteen years by the LRDE, proposes a library for generic image processing in C++, Milena, designed for writing reusable and efficient algorithms. It relies both on generic and object-oriented programming. The internship aims to explore ways to extend the capabilities of Milena in the field of high performance computing (in particular in “Big Data” contexts), while preserving its current generic- and abstraction-related features.


Keywords : scientific computing, Big Data, C++, parallel programming.


Some working aspects include the following ideas:

  • The design and the addition of data structures for large volumes of data.
  • The use of vectorization instructions (SIMD) to speed up computations.
  • The use of parallel programming (multicore) to distribute computations.
  • The implementation of algorithms (or algorithms families) using a declarative strategy to uncouple their definition and implementation in low-level hardware in a given context.
  • The use of generic programming (e.g., canvas of algorithms) and / or generative programming (generation and assembly of code based on templates).
  • the introduction of Profile-Guided Optimizations taking advantage of real data to improve the generated code via “machine learning” techniques introduced in the compilation.

In any case, the research work should be conducted with a reusability / genericity goal (even a partial one) of the proposed solutions in mind, for example based on an incremental refinement (“lifting”) of a first implementation. Ultimately, the goal is to actually set the first elements of a more formal set of properties and data types, in order to generalize the performance improvements mentioned above.

Benefit for the candidate
Place LRDE: How to get to us

800 € gross/month

Future work opportunities

If you have performed the internship satisfactorily, we would like it to be followed by a PhD thesis.

Contact (Please mention the internship reference above when applying.)