Informations générales pour tous les stages :

1. Indemnité de stage :
L'estimation est la suivante :

  • aucune indemnité, si le stage dure moins de 2 mois ;
  • environ 400 euros/mois entre 2 et 6 mois.

2. Lieu :

Centre de recherche en informatique - CRI
MINES ParisTech
35 rue Saint-Honoré
77305 Fontainebleau Cedex

Un bus privé gratuit est disponible quotidiennement depuis Paris, sauf durant les vacances scolaires, pendant lesquelles les transports en commun RATP doivent être utilisés.

 

Offres de stage :

  1. Coarse grain loop parallelization (Stage master recherche)
  2. Coarse grain loop fusion (Stage master recherche)
  3. Analyse sémantique des tableaux, des structures et des pointeurs (Stage master recherche)
  4. Analyse statique des paramètres fonctionnels et des pointeurs vers des fonctions (Stage master recherche)
  5. Coarse grain approach for loop invariant code motion (Stage master recherche)
  6. Détection des variables non initialisées d'un programme C (Stage master recherche)
  7. Détection des débordements de tableaux d'un programme C (Stage master recherche)
  8. Linéarisation de tableaux et test de dépendance
  9. Régénération de code source C
  10. Gestion des dépendances de contrôle dans l'élimination de code mort
  11. Parallèlisation des réductions par sections critiques
  12. Ordonnancement optimal et vectorisation des calculs de l'opérateur de Dirac (Stage Master recherche)


  13. Représentations intermédiaires parallèles pour LLVM et GCC
  14. Multithreading sous Matlab (Stage Master Recherche 2012/2013)


  15. Mise en oeuvre efficace d'algothimes d'inondation sur des grandes images à niveaux de gris
  16. Mise en oeuvre efficace d'un système de localisation de texte enfoui dans des images ordinaires

  17. Optimisation et positionnement de sites web sur un sujet à très forte concurrence


Description :



Stage 1 « Coarse grain loop parallelization » :

Loop parallellization is crucial for GPU's and multicore processors. Standard techniques are based on dependence graphs linking definition and usage of variable values. The graph arcs contain additional information about the relationship between loop iterations creating these arcs. This information is used to decide if the loop can be parallelized and how it should be parallelized.

The coarse grain approach does not use graphs but summaries of the loop body effects on memory. Each loop can be parallelized, regardless of its body control structure and procedure calls. Coarse grain parallelizations has already been implemented in PIPS, our automatic code analysis and transformation framework, but it should be reimplemented in a simpler way, using additional transformer information and integrating, as far as possible, auxiliary transformations such as array section privatization (this includes scalar and array privatization) and invariant code motion.

PIPS is programmed in C. It already contains lots of program analyses and transformation and is designed to be extensible. This makes adding new transformation pretty easy, once the framework is understood.

This internship requires a good C programmer, with an interest in computer architecture and code optimization, ready to interact with other PIPS developers over Internet.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr



Stage 2 « Coarse grain loop fusion » :

Loop fusion is crucial for GPU's and multicore processors with a memory hierarchy because it improves locality, sometimes dramatically. Standard techniques are based on dependence graphs linking definition and usage of variable values. The graph arcs contain additional information about the relationship between loop iterations creating these arcs. This information is used to decide if two loops can be fused and how.

The coarse grain approach does not use graphs but summaries of the loops body effects on memory. Two loops can be fused if the memory areas they write do no impact the memory area they would have read before or written after. Bascially, the Bernstein conditions must be checked for different sets of iterations and this can be performed without building a graph. Loop fusion has already been implemented in PIPS, our automatic code analysis and transformation framework, using the standard graph-based technique, but it should be reimplemented in a simpler way, using additional transformer information, allowing shifting, prologue and epilogue when the iteration sets are different, and integrating, as far as possible, auxiliary transformations such as array section privatization (this includes scalar and array privatization) and invariant code motion. Non adjacent loops should also be tackled.

PIPS is programmed in C. It already contains lots of program analyses and transformation and is designed to be extensible. This makes adding new transformation pretty easy, once the framework is understood.

This internship requires a good C programmer, with an interest in computer architecture and code optimization, ready to interact with other PIPS developers over Internet.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr



Stage 3 «Analyse sémantique des tableaux, des structures et des pointeurs» :

L'utilisation de structures et de pointeurs est traditionnelle dans de nombreux domaines, mais encore limitée pour les applications nécessitant de grandes puissances de calcul comme le calcul scientifique ou le multimédia. Cette utilisation nécessite des extensions des analyses statiques de tels codes, que la multiplicité et la complexification des architectures matérielles rendent plus nécessaires que jamais: multicore, GPU, multiprocesseur hétérogène, accélérateur FPGA,...

L'objectif du stage est d'abord de faire un tour rapide des analyses existantes dans PIPS et de proposer une ou plusieurs solutions pour effectuer les extensions nécessaires afin de couvrir les accès à des éléments de tableaux constants, les champs des structures et, si possible, les pointeurs. Ensuite, une ou plusieurs de ces extensions seront implantées en C dans le framework de compilation source-a-source PIPS.

Ce stage peut éventuellement se prolonger par une thèse dans le domaine de la compilation.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr



Stage 4 « Analyse statique des paramètres fonctionnels et des pointeurs vers des fonctions » :

L'utilisation de paramètres fonctionnels et de pointeurs vers des fonctions permet d'écrire des codes élégants et puissants, mais elle rend les analyses statiques de tels codes plus délicates alors que la multiplicité et la complexification des architectures matérielles les rendent plus nécessaires que jamais: multicore, GPU, multiprocesseur hétérogène, accélérateur FPGA,...

L'objectif du stage est d'abord de faire un tour rapide de la bibliographie et de proposer plusieurs solutions plus ou moins précises. Ensuite, une ou plusieurs de ces solutions seront implantées en C dans le framework de compilation source-a-source PIPS.

Ce stage peut éventuellement se prolonger par une thèse dans le domaine de la compilation.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr



Stage 5 « Coarse grain approach for loop invariant code motion » :

Loop invariant code motion is a standard code optimization technique. We currently use a technique based on dependence graphs linking definition and usage of variable values. The graph arcs contain additional information about the relationship between loop iterations creating these arcs. The Allen & Kennedy algorithm is slightly modified to hoist the invariant code through loop distribution. This is described in Julien Zory's PhD dissertation, available on line, and implemented in PIPS, our automatic code analysis and transformation framework.

The coarse grain approach does not use graphs but summaries of the loop body effects on memory and of each of its components. It is possible to decide independently for each statement if it can be moved out of the loop because its result is iteration independent. It is still unclear how efficient this approach can be in practice. It is simpler but can only move one statement of the loop body, not a set of statements as is possible with the A&K based algorithm. Experiments will be carried out to check the effectiveness of the coarse grain approach.

PIPS is programmed in C. It already contains lots of program analyses and transformation and is designed to be extensible. This makes adding new transformation pretty easy, once the framework is understood.

This internship requires a good C programmer, with an interest in computer architecture and code optimization, ready to interact with other PIPS developers.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr



Stage 6 « Détection des variables non initialisées d'un programme C » :

La rétro-ingénierie, la maintenance et l'optimisation de codes nécessitent l'application de nombreuses analyses statiques ou dynamiques qui permettent de mieux comprendre, vérifier, améliorer et optimiser les instructions.

Parmi ces analyses, la détection des variables non initialisées avant leur utilisation permet d'éviter des erreurs lors de l'exécution du programme. Elle permet également de valider les analyses ultérieures portant sur les accès aux variables du programme, en lecture et écriture, telles que le calcul des dépendances.
La phase d'analyse dynamique de détection des variables non initialisées avant leur utilisation est déjà intégrée dans notre framework de compilation source-a-source PIPS pour des programmes en Fortran.

L'objectif de ce stage est d'implanter cette analyse pour les programmes C.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr



Stage 7 « Détection des débordements de tableaux d'un programme C » :

La rétro-ingénierie et la maintenance de codes nécessitent l'application de nombreuses analyses statiques ou dynamiques qui permettent de mieux comprendre et de vérifier les programmes.

Parmi ces analyses, la détection des débordements de tableaux est essentielle. Elle permet d'éviter des erreurs lors de l'exécution du programme, mais aussi de valider les résultats des analyses qui caractérisent l'ensemble des éléments de tableaux référencés par des instructions. La phase d'analyse dynamique de détection des débordements de tableaux est déjà intégrée dans notre framework de compilation source-a-source PIPS pour des programmes en Fortran.

L'objectif de ce stage est d'implanter cette analyse pour les programmes C.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr


Stage 8 « Linéarisation de tableaux et test de dépendance » :

PIPS est un framework de compilation source-a-source qui intègre de nombreuses  transformations de programmes source-a-source ainsi que des analyses statiques et dynamiques et qui permet d'en développer rapidement de nouvelles. 

Une des optimisations clés est la parallélisation automatique de boucles. Mais les programmeurs C ainsi que les générateurs automatiques de code C ont tendance à linéariser leurs tableaux, c'est-à-dire à remplacer les tableaux multidimensionnels par des tableaux monodimensionnels. Les expressions d'indices qui en résultent ne sont généralement pas affines et les tests de dépendance échouent. L'objectif de ce stage est de développer un nouveau test de dépendance permettant de linéariser, dans le vrai sens du terme, les polynomes qui résultent d'une linéarisation de tableaux. Un minimum de connaissance en algèbre linéaire permettra d'aborder le sujet plus facilement.

Ce stage est plutôt orienté ingénieur, mais il peut éventuellement se prolonger par une thèse dans le domaine de la compilation.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr                               


Stage 9 « Régénération de code source C » :

PIPS est un framework de compilation source-a-source qui intègre de nombreuses  transformations de programmes source-a-source ainsi que des analyses statiques et dynamiques et qui permet d'en développer rapidement de nouvelles.

Les analyses et transformations sont appliquées à une représentation interne du programme, mais une fois les analyses ou transformations réalisées, il faut montrer le résultat en respectant au mieux le style initial du code source. L'objectif de ce stage est de raffiner cette phase de restitution pour les programmes C. Au-delà des problèmes d'indentation qui peuvent être traités en interne ou en externe via, par exemple, indent, il faudrait aussi reconnaître les graphes de contrôle qui peuvent être représentés par la construction switch, regénérer les includes, et ajouter des commentaires Doxygen en fonction des résultats d'analyse de PIPS.

Ce stage est plutôt conçu comme un stage ingénieur, mais il peut éventuellement se prolonger par une thèse dans le domaine de la compilation.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr                               


Stage 10 « Gestion des dépendances de contrôle dans l'élimination de code mort » :

PIPS est un framework de compilation source-a-source qui intègre de nombreuses  transformations de programmes source-a-source ainsi que des analyses statiques et dynamiques et qui permet d'en développer rapidement de nouvelles.

L'élimination de code mort consiste à retirer d'un programme toutes les instructions et les variables qui n'ont pas d'impact sur le résultat. Cette transformation s'appuie sur les use-def chains, mais elle doit aussi prendre en compte les dépendances de contrôle. Elle est particulierement utile pour traiter du code généré automatiquement par un outil ou un compilateur de langage DSL. L'implantation qui est disponible dans PIPS prend correctement en compte les dépendances de données, mais les dépendances de contrôle le sont imparfaitement.

Le but du stage est de compléter cette implantation, voire d'introduire une nouvelle analyse, une analyse de continuation. La continuation consiste à déterminer si un statement peut provoquer un arrêt ou une boucle infinie, ou bien si l'éxecution doit nécessairement passer au statement suivant. L'information de continuation reste à raffiner puisqu'on ne pourra pas toujours déterminer s'il y a continuation nécessaire ou continuation possible.

Ce stage est plutôt conçu comme un stage ingénieur, mais il peut éventuellement se prolonger par une thèse dans le domaine de la compilation.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr                               


Stage 11 « Parallèlisation des réductions par sections critiques » :

PIPS est un framework de compilation source-a-source qui intègre de nombreuses  transformations de programmes source-a-source ainsi que des analyses statiques et dynamiques et qui permet d'en développer rapidement de nouvelles.

La détection des réductions est implantée dans PIPS, mais elle est exploitée en générant les directives OpenMP spécifiques. Dans certains cas, il est plus efficace de ne pas distribuer une grosse boucle de calcul en une boucle de calcul parallèle et une boucle de réduction. Pour des raisons de localités, il vaut mieux éxécuter en parallèle la boucle initiale et protéger par une section critique la mise à jour de la variable de réduction.

L'objet premier de ce stage est de générer les sections critiques nécessaires à l'éxécution parallèle des réductions. L'objectif second est de vérifier que cette technique permet de traiter efficacement les réductions avant ou après une parallèlisation dite CoarseGrain.

Ce stage est plutôt conçu comme un stage ingénieur, mais il peut éventuellement se prolonger par une thèse dans le domaine de la compilation.

Personne à contacter :

Envoyer un CV et une lettre de motivation à François Irigoin (CRI, MINES ParisTech).
E-mail : irigoin--at--mines-paristech.fr                               


Stage 12 « Ordonnancement optimal et vectorisation des calculs de l'opérateur de Dirac » :

La Chromodynamique Quantique sur Réseaux (Lattice Quantum ChromoDynamics ou LQCD en anglais) étudie le mécanisme de la formation de la matière à travers l'interaction des particules fondamentales de l'univers sous les contraintes de confinement (naissance de l'univers juste après le Big Bang). Un axe très prépondérant de cette étude repose sur d'intenses simulations (de type Monte Carlo), dont le principal ingrédient est l'opérateur de Dirac. Du point de vue informatique, la mise en œuvre de cet opérateur expose des patterns d'accès mémoire assez spéciaux ainsi qu'un schéma de calcul pouvant contenir des redondances. L’évaluation de l'opérateur de Dirac étant très répétée, sa mise en œuvre optimisée (suivant l'architecture cible) est devenue le principal cheval de bataille dans la recherche en LQCD (voir le projet PetaQCD financé par l'Agence Nationale de le Recherche).

L'étude d'une mise en œuvre efficace de l'opérateur de Dirac se fait à deux niveaux. Le niveau macroscopique, dans lequel le réseaux global est subdivisé en sous-réseaux géométriquement identiques, il faut donc trouver le bon partitionnement et gérer efficacement les communications entre les sous-réseaux. Le niveau microscopique, dans lequel on réorganise les calculs de base de l'opérateur proprement dit de manière à réduire les redondances tout en limitant la perte d'efficacité mémoire (défaut de caches). Cette réorganisation peut se faire par des approches algébriques (factorisations et simplifications en algèbre linéaire) et/ou par une réécriture des instructions de manière à utiliser plus efficacement les possibilités de l'architecture cible (pipeline d'instructions, vectorisation). Le travail ici consistera à transformer le corps de la boucle principale de l'opérateur de Dirac, de manière à réduire au mieux les défauts de cache. On pourra utiliser un modèle analytique (à déterminer) ou un outil approprié pour mesurer l'efficacité mémoire. La vectorisation explicite du code sera ensuite envisagée.

Un minimum de connaissance en algèbre linéaire et optimisation de code facilitera l'entrée en matière pour ce sujet. De plus, un intérêt pour l'adéquation application/code/architecture sera utile pour entretenir un bon degré de motivation et d'enthousiasme. Il n'est pas nécessaire d'avoir des connaissances en physique des particules, mais un minimum de culture sur le sujet sera acquis en chemin. Ce stage, qui pourra être mené aussi bien sous un angle recherche que sous un angle programmation, pourra servir de point de départ pour une thèse en calcul haute performance (pour la QCD).

Personne à contacter :

Envoyer un CV et une lettre de motivation à Claude Tadonki (CRI, MINES ParisTech).
E-mail : tadonki--at--mines-paristech.fr       
Web : http://www.omegacomputer.com/staff/tadonki/

Stage 13 « Représentations intermédiaires parallèles pour LLVM et GCC » :
1. Sujet :
Application de la méthodologie SPIRE, développée au CRI et permettant l'extension des représentations intermédiaires de compilateurs, aux plateformes LLVM et GCC.

2. Projet :
La plupart des grandes plateformes de compilation comme LLVM, GCC ou PIPS ont été conçues dans l'optique de la génération de code pour des langages impératifs séquentiels. Avec la multiplication des architectures multicoeurs, des langages explicitement parallèles de type X10, Habanero-Java… et des extensions parallèles type OpenMP et MPI, il convient d'envisager d'étendre l'architecture de ces plateformes pour être à même de traiter les spécificités de ces langages.
Afin de pouvoir réutiliser autant que possible l'investissement logiciel lourd auquel correspondent ces compilateurs, la méthodologie SPIRE d'extension "légère" de représentation intermédiaire, une structure de données centrale dans ces systèmes, a été proposée au CRI et validée, en partie, dans le cas de la plateforme de compilation PIPS.

3. Descriptif :

L'objet du stage de niveau Master 2 Recherche, de quelques mois, est, en partant du système SPIRE développé par le CRI :

  • d'étudier en détail les représentations intermédiaires (RI) des compilateurs LLVM et GCC ;
  • d'analyser les extensions parallèles des RIs déjà introduites dans la littérature ;
  • de tester la capacité de la méthodologie SPIRE à étendre ces RIs séquentielles au monde parallèle ;
  • et d'implémenter dans au moins une de ces plateformes ces RI étendues pour en tester expérimentalement la pertinence.

4. Exigences :
Une bonne connaissance de la programmation en C, des systèmes de compilation et des méthodes de spécification formelle est nécessaire.

5. Personne à contacter

Envoyer un CV et une lettre de motivation à Pierre Jouvelot (CRI, MINES ParisTech).
E-mail : pierre.jouvelot--at--mines-paristech.fr
Web : http://www.cri.mines-paristech.fr/~pj

Stage 14 « Multithreading sous Matlab » :

1. Sujet :
Multithreading sous Matlab (Stage Master Recherche 2012/2013)

2. Projet :
Matlab est un environnement de calcul et de programmation scientifique très utilisé pour la puissance de son moteur (noyau de traitement constitué de routines optimisées) et sa très grande flexibilité (prise en main aisée et utilisation assez souple).
Toutefois, dans sa version "langage de programmation", il propose un interpréteur à la place d'un compilateur. Ceci justifie sa souplesse de programmation et d'exécution interactive, mais en contre partie, il y a d'une part le surcoût sur le temps global d'exécution qui est dû au fonctionnement de l'interpréteur, et d'autre part la difficulté (voire l'impossibilité) d'utiliser directement les outils traditionnels d'analyse et d'optimisation de codes (y compris la parallélisation).
Notons toutefois qu'il existe un moyen de se raccrocher à un langage compilé tel que le C (C++ ou Fortran) via le mécanisme des fichiers "mex".
Avec l'avènement des machines multicœurs, il devient indispensable d'offrir la possibilité de paralléliser les applications dans tout environnement de programmation ou de calcul.

3. Descriptif :
Le but de ce stage sera donc d'étudier ce problème dans le cadre de Matlab.
En résumé, il s'agit d'étudier les mécanismes de programmation ou d'exécution multithreadée sous Matlab, en analyser les avantages et inconvénients, et procéder à des études de cas avec mesures de performances commentées.
Ce sera l'occasion pour le stagiaire, en fonction de ses capacités, de développer aussi sa propre méthodologie, tout au moins en initier une qui pourra être approfondie plus tard et étendue aux environnements similaires.

4. Exigences :
Le candidat devra avoir un niveau acceptable en C et connaître un peu Matlab (pas indispensable toutefois, à défaut il y aura une phase de familiarisation préalable).
De même, des notions de base de parallélisme sont importantes, surtout le modèle à mémoire partagé. L'occasion sera donnée au candidat de s'initier à la parallélisation automatique.

5. Personne à contacter

Envoyer un CV et une lettre de motivation à Claude Tadonki (CRI, MINES ParisTech).
E-mail : claude.tadonki--at--mines-paristech.fr
Web : http://www.omegacomputer.com/staff/tadonki/

Stage 15 « Mise en oeuvre efficace d'algothimes d'inondation sur des grandes images à niveaux de gris » :

Une image à niveaux de gris peut être considérée comme un relief topographique, lorsqu'on attribue à chaque point de l'image une altitude proportionnelle à son intensité de gris. Cette représentation reste valable quel que soit le nombre de dimensions spatiales de l'image ou encore lorsque l'information d'altitude est portée par les poids attribués aux noeuds d'un graphe (éventuellement valué).

Une inondation d'un relief produit un certain nombre de lacs de profondeur quelconque. Un tel relief image représente une nouvelle image à niveaux de gris, plus simple avec moins de vallées que le relief initial. Et bien évidemment, la surface de chaque lac est plate.

L'opération duale de l'inondation consiste à araser les pics. On l'obtient en inondant le négatif d'une image avant de reprendre le négatif du résultat; on arase ainsi les pics. On peut éviter cette double négation et construire directement les opérateurs d'arasement. Ces derniers se déduisent très simplement des algorithmes d'inondation et sont de même complexité. Nous ne nous intéresserons donc ici qu'aux algorithmes d'inondation.

Les deux opérateurs d'inondation et d'arasement sont les ingrédients de base de beaucoup d'opérateurs de filtrage et de segmentation. De nombreuses inondations sont possibles pour un relief donné ; cependant il en existe une seule si on considère la plus haute inondation possible d'une fonction f sous la contrainte d'une fonction plafond g. La fonction g est une fonction quelconque, supérieure ou égale en tout point à la fonction f (comme un seuil d'altitude non nécessairement constant).

L'opérateur d'inondation maximale prend les images f et g en entrée et produit l'image de l'inondation en sortie, laquelle est une image à niveau de gris égale à l'altitude de l'inondation en tout point inondé et au relief f partout ailleurs.

Les algorithmes classiques sont de deux types: les premiers construisent le résultat par balayages itératifs de l'image, tandis que les deuxièmes contrôlent l'inondation au moyen d'une file d'attente hiérarchique. Ces algorithmes sont très lents sur des très grandes images (2D ou 3D), l'objet de stage est donc de les accélérer. On explorera plusieurs voies :

  • Si on a recours à plusieurs coeurs ou processeurs, comment faut-il leur distribuer le travail de la manière la plus efficace ?
  • Etudier le recours à des représentations locales du relief sous forme de flèches entre chaque point et ses voisins plus hauts ou plus bas afin de limiter le nombre d'accès à la mémoire.
  • Réaliser des mises en oeuvre sur processeurs vectoriels ou graphiques. Contacts:

Personnes à contacter :

Envoyer un CV et une lettre de motivation à
Fernand Meyer (fernand.meyer--at--mines-paristech.fr) et
Claude Tadonki (claude.tadonki--at--mines-paristech.fr)

 

Stage 16 « Mise en oeuvre efficace d'un système de localisation de texte enfoui dans des images ordinaires » :

Les OCR (Optical Character Recognition) commerciaux sont de plus en plus performants mais leur utilisation est encore restreinte aux documents numérisés ou aux images prises dans des conditions d'acquisition maîtrisées (support plat, sans effet de perspective, le document occupant la presque totalité de l'image,..). Ils ne sont pas capables de gérer la diversité de styles, les déformations liées à la perspective ou la complexité de l'environnement. La localisation du texte enfoui est une étape nécessaire pour étendre les conditions d'utilisation des OCR existants.

Le CMM (Centre de Morphologie Mathématique) de l'Ecole des Mines de Paris a développé un système de localisation de texte enfoui pour des images tout venant. Ce système a remporté la première place dans la catégorie « localisation de texte » lors de la campagne d'évaluation d'algorithmes de traitement d'images ImagEval. Aucune contrainte temps réel n'était considérée à cette occasion.

Aujourd'hui nous envisageons de porter ces algorithmes sur des dispositifs portables, type smartphone. Pour cela, un travail important de simplification et d'optimisation des algorithmes est nécessaire. Il s'agit de trouver un compromis qualité/performance satisfaisant. En effet, la puissance traitement des systèmes mobiles est modérée, de même que l'approvisionnement en énergie (généralement de modestes batteries). A partir du système mobile, on devrait donc être capable d'acquérir une image avec ses contraintes (résolution et environnement) et d'en extraire les informations textuelles dans un délai acceptable à l'échelle de l'utilisateur. Le texte deviendrait accessible aux personnes malvoyantes ou illettrées (ou ne parlant pas la langue du pays où elles se trouvent) en combinant ce système soit à un module de restitution orale ou à un module de traduction, respectivement. On peut bien sûr imaginer un télétraitement de cette phase dans une approche du type Cloud Computing, mais nous ne l'aborderons pas dans ce stage.

Exigences :
Le candidat retenu pour ce stage aura pour tâche principale d'accélérer un module critique de l'application développée par le CMM, de manière à répondre à l'exigence du compromis qualité/performance mentionné précédemment. Le travail se fera sur des processeurs multi-coeurs standards, très probablement en C. Toutefois, si le candidat a des compétences dans la programmation des systèmes mobiles et si le temps le permet, il pourra étendre sa contribution dans ce contexte-là.

Personnes à contacter :

Envoyer un CV et une lettre de motivation à
Beatriz Marcotegui (beatriz.marcotegui--at--mines-paristech.fr) et
Claude Tadonki (claude.tadonki--at--mines-paristech.fr)

 

Stage 17 « Optimisation et positionnement de sites web sur un sujet à très forte concurrence » :

HEMISPHERE EDUCATION (www.hemisphere-education.com) est un site entièrement dédié à l'accompagnement scolaire à l'aide de supports numériques interactifs, structurés et dynamiques. Son contenu actuel couvre les cycles primaires et secondaires, en plus d'un espace d'initiation réservé aux premiers apprentissages. Aux côtés des cours et des exercices, éditables en ligne par des contributeurs enregistrés, divers outils de travail et d'entraînement sont disponibles. De plus, le site offre un mécanisme de suivi automatique par des tuteurs aux choix.
La concurrence étant très forte dans le domaine de l'éducation numérique, des sites portant sur l'apprentissage scolaire foisonnent sur Internet, ce qui pose un problème de positionnement pour les nouveaux arrivants, même avec un contenu très compétitif et gratuit.

Le but de se stage sera de prendre le cas du site de HEMISPHERE EDUCATION et d'essayer d'en améliorer le positionnement et la visibilité.
Le candidat utilisera les principales techniques proposées dans la littérature (étude statistique et qualitative des mots-clés, échanges de liens, soumission à les moteurs de recherche, annonces ciblées, pour ne citer que ceux-là) et mesurera l'impact de ses actions en analysant diverses métriques issues des statistiques sur le serveurs et ceux fournies par les sites spécialisés.

Exigences :
Bonne connaissance du web et du langage html. Le candidat devra aussi avoir un goût prononcé pour ce type d'activité et une envie de mener une analyse comportementale des internautes.

Personnes à contacter :

Envoyer un CV et une lettre de motivation à
Laurent Daverio (laurent.daverio--at--mines-paristech.fr) et
Claude Tadonki (claude.tadonki--at--mines-paristech.fr)