ARCHIVES des RECRUTEMENT / JOB OPPORTUNITY RECORD

L'Université Nice Sophia Antipolis a ouvert au concours un poste de Professeur des Universités profil "Interaction Homme Machine", enseignement à Polytech Nice Sophia (Sophia), recherche dans l'équipe SPARKS.

L'Université Nice Sophia Antipolis a ouvert au concours un poste de Professeur desUniversités profil "Systèmes distribués et programmation", enseignement à la faculté des sciences (Valrose / Sophia), recherche dans l'équipe COMRED.

L'Université Nice Sophia Antipolis a ouvert au concours un poste de Maître de Conférences profil "Programmation par contraintes", enseignement à la faculté des sciences (Valrose / Sophia), recherche dans l'équipe MDSC.

Laboratoire d’accueil:
I3S, stage commun entre les équipes COMRED et SPARKS.
Encadrants
Sid Touati (professeur UNS), Jean-Pierre Lozi (maître de conférences UNS)
Gratification de stage:
Montant standard des stages M2.
Possibilité de poursuite en thèse:
Une prolongation en thèse est possible, sur bourse de l’École Doctorale ou financement CIFRE.

2.1  Cadre générale

Dans le domaine des calculs parallèles hautes performances, le placement des processus légers (threads) sur les CPU est devenu un enjeu important pour accélérer la vitesse des calculs. En effet, une application qui exécute n processus légers sur un processeur ayant mn cœurs peut soit améliorer soit dégrader son temps d’exécution selon l’affinité et le placement des threads. Le placement ici veut dire de décider sur quel cœur (CPU) doit s’exécuter chaque thread. Malheureusement, les systèmes d’exploitation comme Linux ont une vision haut niveau des CPU: tous les CPU (cœurs) sont considérés par l’OS comme identiques, et les techniques de placement de threads ne considèrent pas les caractéristiques micro-architetcurales du processeur. Cela résulte en une dégradation des performances, et une instabilité de celles-ci.
Ces applications de calculs HPC sont programmées avec divers langages (C, C++, fortran, etc.), avec un usage avancé du parallélisme (OpenMP, MPI, GP-GPU, etc) sur des grilles de calculs (machines INRIA, machine cicada à l’UNS, PRACE, Genci, etc.). Des méthodes de calculs intensifs sont utilisées mais malheureusement pas de méthodes de HPC (High Performance Computing).
En effet, les calculs parallèles et intensifs n’aboutissent pas nécessairement à des hautes performances en temps réel, qui est un domaine de pointe. Les calculs hautes performances nécessitent de solides compétences et connaissances dans les couches basses d’un système informatique: méthodes avancées de compilation, optimisations de codes bas niveau, architecture et micro-architecture des processeurs, notions avancées en systèmes d’exploitation (gestion de la mémoire virtuelle, ordonnancement des threads et processus sur multi-cœurs, gestion des entrées/sorties, etc.), comprendre comment interagit un code binaire avec la microarchitecture du processeur (pipeline, parallélisme d’instructions, prédiction de branchement, exécution dans le désordre, renommage des registres, exécution spéculative, etc.). Ces connaissances et compétences sont nécessaires pour optimiser une application dans le but d’arriver à des performances temps réel en simulation.

2.2  Sujet de stage

La problématique du placement des threads est connue dans le domaine de la compilation optimisante, et dans le domaine des systèmes d’exploitation. Un compilateur n’arrive pas à trouver un placement adéquat pour les threads car il ne connait pas le scénario d’exécution d’une application (la compilation fait une analyse statique du code). De l’autre côté, un système d’exploitation implémente des mécanismes simples de placement de threads qui sont insensibles à la micro-architecture du processeur.
Dans le cadre de ce stage, nous allons exploiter les propriétés micro-architecturales des cœurs du processeur pour élaborer des méthodes dynamiques de placement de threads, placement qui devrait être effectué par le système d’exploitation. Plus précisément, nous souhaitons que la décision du placement de threads s’appuie sur l’interaction dynamique entre le logiciel bas niveau (binaire) et le micro-processeur. Les effects de la hiérarchie mémoire (niveaux de cache de L1 à L3, caches partagés, politiques de remplacement des lignes cache, communication entre les différents caches, préchargement dynamique des données mémoire) sont connus comme étant les plus influents sur les performances d’une application parallèle. Nous allons donc nous baser dessus dans un premier temps. Notre idée est de mettre en place un mécanisme d’observation des compteurs matériels de performances, afin de décider à la volée de changer de placement de threads selon l’effet constaté durant l’exécution.

2.3  Plan du stage de recherche

Les différentes composantes du stage sont les suivantes:

  1. Étude bibliographique.
  2. Études des compteurs matériels de performances.
  3. Expériences bas niveau sur le placement des processus légers (threads) et son influence sur les temps d’exécution.
  4. Élaboration d’une méthode dynamique de placement des processus légers (threads) en se basant sur les compteurs matériels des performances.
  5. Validation expérimentale sur un processeur multi-cœurs et un OS récent.
Stage M2 / Ingénieur - Progressive Compression of large evolutionary volume meshes for geosciences

More information in the document below.