Online demos

2016 R&D Engineer Internship - Positions available!

29 Oct 2015

Les missions de stage disponibles:

En 2016, plusieurs stages conventionnés sont disponibles au sein de l'équipe R&D de FEI Application Software Group, à Bordeaux (France, 33):

  1.  Compression par ondelettes pour rendu volumique
  2. Implémentation d'un processus d’intégration continue
  3. Technique d’occlusion culling basée shaders et prototypage
  4. Chargement dynamique asynchrone de modèles multi-résolutions
  5. Remplacement d’un parser C++ dans une chaîne de génération

 

A propos de FEI "Application Software Group"

Le groupe américain FEI est l'une des principales sociétés d'instruments scientifiques, qui fournit des outils de microscopie électronique dans de nombreux secteurs. Au sein du groupe FEI, l’entité technologique "Applications Software Group" édite – pour les entités business de FEI – des solutions logicielles de visualisation 3D et d’analyse de données scientifiques et industrielles.

L’entité "Applications Software Group" compte 120 employés, répartis entre la France (50 sur Bordeaux), les Pays-Bas, la Tchéquie et les Etats-Unis.

Les solutions logicielles développées par FEI Applications Software Group sont destinées pour plus de 90% à l’international dans les domaines de la recherche pétrolière, des sciences de la vie et du médical, de l’analyse de matériaux, l’ingénierie, du contrôle non destructif et des semi-conducteurs. Nous bénéficions d’une grande renommée et comptons parmi nos clients de grands groupes (Schlumberger, CGG Veritas, Shell, GE, Canon, Michelin, Airbus, Boeing, Siemens, Sanofi Aventis, Unilever, Intel, NASA, etc.), et des pôles universitaires et organisations gouvernementales de pointe (Argonne National Laboratory, Max Plank Institute, CNRS, Tokyo Medical University, Graz Institut für Anatomie, etc.).

Comment postuler?

Envoyez vos candidatures dès aujourd’hui par e-mail à Thierry Dufour (R&D Director, FEI-ASG), thierry.dufour@fei.com. Merci de joindre une lettre de motivation et un CV.

Description des stages:

 

1 - Compression par ondelettes pour rendu volumique

VOTRE MISSION

VolumeViz est un moteur de rendu 3D permettant d’afficher des données volumiques sous forme de coupes ou de volume rendering. Ces donnée peuvent provenir de différentes sources : médical, sismique, industrielle, etc.
Ce moteur, basé sur un système de pyramide de résolution, permet d’afficher de manière interactive des volumes de plusieurs centaines de Go sur des machines desktop standard.
Les donnée sont parfois stockées sur des serveurs distant et afin de diminuer la bande passante nécessaire, il peut être utile de compresser les donnée en amont et de les décompresser à la volé sur la machine client.

open-inventor_jobs_ondelette OBJECTIFS

VolumeViz supporte pour l’instant la compression Gzip et JPEG. Le but de ce stage est d’évaluer d’autres types de compressions plus efficaces, notamment la compression par ondelettes, et de l’implémenter sous forme de plug-in. Selon l’avancement du projet, une implémentation GPU sera envisagée.

Ce projet vous permettra de travailler en mode AGILE au sein des équipes de développement à part entière.

VOTRE PROFIL

  • Formation supérieur de niveau bac +4/5
  • Stage de fin d’étude
  • Votre esprit d’équipe et votre curiosité seront très appréciés dans notre société dynamique et novatrice
  • C++, GPU, multirésolution
  • Formation technologie multimédia, traitement du signal ou équivalent

Les plus:

  • Anglais (parlé et écrit) pour la communication interne
  • Connaissance de la méthode AGILE.

OU ET QUAND?

  • Durée : 4-6 mois
  • Début de la mission : le 1 février 2016 (ou selon votre calendrier de stage)
  • Lieu : Mérignac (33)

 

 

2 - Implémentation d'un processus d’intégration continue

VOTRE MISSION

Open Inventor est une bibliothèque de rendu graphique disponible en C++, .NET et JAVA sous Windows, Mac et Linux.
La solution d'intégration continue actuelle est basée sur Jenkins et utilise une vingtaine de noeuds de build pour compiler les douze plateformes supportées et exécuter les tests. Cette solution est limitée en termes d'évolution et de réutilisabilité et a des soucis de stabilité. Ce processus s'exécute toutes les nuits et nécessite régulièrement des opérations manuelles de maintenance.

Nous souhaitons mettre en place une nouvelle solution basée sur Buildbot pour paralléliser le build au maximum et le rendre utilisable plus facilement par les développeurs.
Buildbot est un framework d’intégration continue open source développé en python, utilisé par plusieurs grands noms du développement logiciel (GDB, GNOME, Python, Firefox, ...) et maintenu par la fondation Mozilla. Il a été retenu comme la meilleure solution lors d'un audit interne des divers logiciels du marché (Teamcity, Bamboo CI, etc.).

open-inventor_jobs_buildbot

OBJECTIFS

Implémenter un processus d'intégration continue basé sur Buildbot qui répond aux contraintes suivantes :

  • Fiabilité : Pas ou peu d’intervention manuelle.
  • Versatilité : Permettre aux développeurs de lancer des builds et tests en journée facilement
  • Flexibilité : Pouvoir exécuter indépendamment les tâches (Doc, tests, compilation, wrapping Java, etc.)
  • Extensibilité : Pouvoir ajouter de nouveau compilateur aisément (VS 2015, gcc4.7, clang, etc.)
  • Efficacité : Maximiser l’utilisation des machines de build.

Si le temps le permet, une intégration avec le serveur de revue Gitlab utilisé en interne peut être envisagée, notamment pour:

  • Compiler automatiquement toute branche au début de sa revue
  • Poster les résultats de compilation/tests sur la page de revue

Ce sujet touche à toute la chaine de compilation et nécessite une certaine compréhension des différentes technologies utilisées, i.e. Git, CMake, Visual Studio, GCC, python ainsi qu’une bonne culture général du milieu informatique.

Ce projet vous permettra de travailler en mode AGILE au sein des équipes de développement à part entière.

VOTRE PROFIL

  • Formation supérieur de niveau bac +4/5
  • Stage de fin d’étude
  • Votre esprit d’équipe et votre curiosité seront très appréciés dans notre société dynamique et novatrice
  • Filière Génie Logiciel
  • Bonne connaissance des outils et méchanisme de compilations

Les plus:

  • Anglais (parlé et écrit) pour la communication interne
  • Connaissance de la méthode AGILE
  • Participation à un projet hébergé sur une plateforme de développement collaboratif type GitHub ou Sourceforge serait un gros plus

OU ET QUAND?

  • Durée : 4-6 mois
  • Début de la mission : le 1 février 2016 (ou selon votre calendrier de stage)
  • Lieu : Mérignac (33)

 

 

3 - Technique d’occlusion culling basée shaders et prototypage

VOTRE MISSION

Contexte: Open Inventor est une bibliothèque orientée objet de rendu graphique disponible en C ++, .NET et Java sous Windows, Mac et Linux.
Open Inventor expose aux clients une abstraction basée sur un graphe de scène. Il s’agit d’un graphe acyclique direct contenant des nœuds de propriété et des nœuds de données géométriques. Il est traversé par des actions afin de fournir des services à la clientèle, comme le rendu OpenGL, la sérialisation, etc. .
Le graphe de scène peut être modifié dynamiquement par l'interaction de l'utilisateur, et par exemple en cas de changement du point de vue ou la position caméra.

Sujet: Pour être en mesure d’améliorer le frame rate d’affichage avec des très grands graphes de scène, par exemple ceux qui sont utilisés dans des applications CAO, nous aimerions analyser et prototyper parmi des shaders des techniques d’occlusion culling basee sur la tesselation des patches. Il s’agit des techniques par lesquelles la partie du graphe qui n’est pas visible à partir de la camera qui encadre la scène est abattu avant d’être rastérisé.

OIV_jobs_occlusion-culling

OBJECTIFS

  • Analyser les techniques (state-of-the-art) de l'« occlusion culling » et publier un résumé technique qui les compare de façon critique.
  • Dessiner et prototyper - en utilisant Open Inventor - un prototype qui implémente une technique d’occlusion culling.
  • Mesurer les prestations dynamique de la technique implémentée.

Ce projet vous permettra de travailler en mode AGILE au sein des équipes de développement à part entière.

VOTRE PROFIL

  • Formation supérieur de niveau bac +4/5
  • Stage de fin d’étude
  • Votre esprit d’équipe et votre curiosité seront très appréciés dans notre société dynamique et novatrice
  • Langage et technologies: 3D, C++, OpenGL & Shader language

Les plus:

  • Anglais (parlé et écrit) pour la communication interne
  • Connaissance de la méthode AGILE

OU ET QUAND?

  • Durée : 4-6 mois
  • Début de la mission : le 1 février 2016 (ou selon votre calendrier de stage)
  • Lieu : Mérignac (33)

 

 

4 - Chargement dynamique asynchrone de modèles multi-résolutions

VOTRE MISSION

Contexte: Open Inventor est une bibliothèque orientée objet de rendu graphique disponible en C ++, .NET et Java sous Windows, Mac et Linux.

Open Inventor expose aux clients une abstraction basée sur un graphe de scène. Il s’agit d’un graphe acyclique direct contenant nœuds de propriété et des nœuds de données géométriques. Il est traversé par des actions afin de fournir des services à la clientèle, comme le rendu OpenGL, la sérialisation, etc. .

Le graphe de scène peut être modifié dynamiquement par l'interaction de l'utilisateur, et par exemple en cas de changement du point de vue ou la position caméra.

OIV_jobs_LevelOfDetail

Pour être en mesure de soutenir des très grandes graphes de scène, par exemple ceux qui sont utilisés dans des applications de machines ou de plantes CAO, nous aimerions améliorer le soutien pour le niveau de détail. Il s’agit d’une technique par laquelle une partie du graphe de scène, est modifiée par l'amélioration ou l'abaissement des détails à optimiser la visualisation. La technique est utilisée pour fournir de bons taux de trame, mais est également important pour l'empreinte mémoire.

Sujet: Téléchargement à  la demande et asynchrone de graphe de scène pour gérer le Niveau de détail.

Nous aimerions généraliser un prototype existant pour intégrer le téléchargement asynchrone de graphe de scène sur demande de l'utiliser pour fournir un meilleur niveau de fonctionnalités de Level of detail dans OpenInventor. L'architecture de mise en œuvre doit bien sûr être multi-threaded et doit être extensible à fournir un soutien pour les dispositifs avec mémoire limitée ou à faible bande passante, pour les appareils portables utilisant le stockage d'instance en nuage. 

OBJECTIFS

  • Concevoir et mettre en œuvre un nouvel objet Open Inventor pour soutenir la charge à la demande qui effectue le chargement efficace asynchrone de graphe de scène à partir des ressources de stockage local ou distant.
  • Intégration du nouvel objet avec le nœud « SoLOD »   déjà existante pour fournir une navigation transparente et fluide sur une grande scène-graphe comme, par exemple, ceux qui sont utilisés en CAO pour les plantes, adaptant automatiquement le niveau requis de détail par rapport à le frustum de la caméra.
  • Extensibilité: la mise en œuvre doit être prouvé pour être évolutif sur des appareils portables disposant de ressources mémoire limitées et testé en utilisant le stockage à distance accessible à travers "une faible bande passante» / des canaux de communication de la variance élevés.

Open-Inventor_jobs_LevelOfDetails-2

Ce projet vous permettra de travailler en mode AGILE au sein des équipes de développement à part entière.

VOTRE PROFIL

  • Formation supérieur de niveau bac +4/5
  • Stage de fin d’étude
  • Votre esprit d’équipe et votre curiosité seront très appréciés dans notre société dynamique et novatrice
  • C++, OpenGL 

Les plus:

  • Anglais (parlé et écrit) pour la communication interne
  • Connaissance de la méthode AGILE

OU ET QUAND?

  • Durée : 4-6 mois
  • Début de la mission : le 1 février 2016 (ou selon votre calendrier de stage)
  • Lieu : Mérignac (33)

 

 

5 - Remplacement d’un parser C++ dans une chaîne de génération automatique de code Java et .NET

VOTRE MISSION

Open Inventor est une librairie graphique orientée objet basée sur OpenGL. Cette librairie est écrite en C++ et propose une API (Application Programming Interface) publique C++, .NET et Java.
Ces deux dernières sont implémentées par une redirection (wrapping) de méthodes Java et C# vers les méthodes natives de l’api publique C++. Le code d’implémentation de ces librairies est généré automatiquement à l’aide d’un outil interne (Pangolin) en prenant comme donnée d’entrée la définition publique de l’API construite à partir des fichiers d’entêtes (header) de l’API C++.

Le schéma suivant montre l’architecture de l’outil interne et du processus de génération automatique:

Open-Inventor_jobs_AST-wrapping

L’outil interne Pangolin est entièrement écrit en C#. Il est composé d’un plugin spécifique pour la génération de code Java et JNI (Java Native Interface, code C/C++) pour l’API Java et d’un plugin spécifique pour la génération de code C++/CLI pour l’API .NET.

La lecture des fichiers d’entêtes C++ afin d’en extraire une représentation de l’API est réalisée par l’outil Doxygen (cf. www.doxygen.org). Il s’agit d’une utilisation non conventionnelle de cet outil dont l’objectif principal est la génération de documentation pour des apis C++. Les limitations induites par Doxygen nous motivent à remplacer celui-ci par un véritable outil d’analyse lexicale et syntaxique tel que Clang AST (Abstract Syntax Tree).

OBJECTIFS

  • Etude des outils existants pour analyser/représenter une API C++ (Clang AST, CastXML, etc.),
  • Spécification et développement d’un module d’extension (plugin) ou outil autonome pour sérialiser l’API OpenInventor C++ en fonction du choix précèdent,
  • Intégration du résultat de cette sérialisation dans Pangolin.

Ce projet vous permettra de travailler en mode AGILE au sein des équipes de développement à part entière.

VOTRE PROFIL

  • Formation supérieur de niveau bac +4/5
  • Stage de fin d’étude
  • Votre esprit d’équipe et votre curiosité seront très appréciés dans notre société dynamique et novatrice
  • Les domaines et compétences requises sont les langages C++/C# & Java mais surtout un goût prononcé pour l’analyse lexicale et syntaxique et la théorie des langages en général

Les plus:

  • Anglais (parlé et écrit) pour la communication interne
  • Connaissance de la méthode AGILE

OU ET QUAND?

  • Durée : 4-6 mois
  • Début de la mission : le 1 février 2016 (ou selon votre calendrier de stage)
  • Lieu : Mérignac (33)