Module Parallelisation et Programmation Distribuée

Module technologique 5ème année (M2)

i

OBJECTIFS

Maîtriser les technologies et méthodes d’analyse à mettre en œuvre pour écrire des logiciels fonctionnant en environnement distribué ou parallélisé.

Plus d'informations

Les principales technologies utilisées dans les projets de calculs ou de traitements de données distribués sont présentées et donnent lieu à de nombreux travaux pratiques. Les contraintes de développement sont également détaillées, permettant à l’élève d’acquérir de nouvelles méthodes d’analyse et de développement, requises dans le cadre de la programmation distribuée ou parallélisée.

COMPETENCES VISEES

Analyser, concevoir et déployer un programme parallélisé et en mesurer les performances.

 

Plus d'informations
  • Identifier une architecture adaptée à la problématique posée pour produire un code parallélisé performant (architecture à mémoire partagé, à mémoire distribuée ou mixte) ;
  • Structurer et développer un logiciel distribué ou parallélisé ;
  • Utiliser des outils de mesure de performances et d’optimisation de programmes ;
  • Utiliser des outils de pré ou post-traitement.

METIERS / DEBOUCHES

Métiers d’analyse et de conception de logiciels distribués, intéressant toute entreprise s’appuyant sur la modélisation et la simulation numérique ou sur le Big data.

 

Plus d'informations

Les domaines de l’automobile, de l’aéronautique ou encore de l’énergie, pour ne citer qu’eux, sont consommateurs de simulations numériques requérant des calculs qui ne peuvent se faire, en des temps raisonnables, qu’à l’aide de programmes parallélisés. Ainsi, la formation proposée permet à l’élève ingénieur d’avoir le profil souhaité par des services de recherche et de développement (R&D) ou par des sociétés prestataires travaillant pour de telles entreprises.

Parallélisation et programmation distribuée 

La programmation distribuée et la parallélisation renferment un ensemble de technologies et de méthodes d’écriture  de logiciels, permettant de rendre l’exécution de ces derniers plus rapide.

En effet, le besoin de calculs est continuellement croissant ; qu’ils permettent par exemple de modéliser l’évolution du climat ou des phénomènes de crues, ou encore de permettre le développement d’intelligences artificielles, fortes consommatrices de traitements numériques et de calculs.

Parallèlement à ce besoin grandissant, la fréquence des horloges qui viennent rythmer le travail du microprocesseur, et donc  impacter la vitesse de traitement, a atteint des limites difficilement franchissables, en lien par exemple avec la température générée. Pour permettre cependant une augmentation des puissances de calcul, les microprocesseurs contiennent depuis quelques années plusieurs cœurs, chacun pouvant réaliser un traitement élémentaire, parallèlement aux autres et ce, dans le même cycle d’horloge.

C’est ainsi que les traitements informatisés, longtemps centralisés sur une seule unité de calcul, sont maintenant parallélisés sur plusieurs nœuds ; qu’ils soient des cœurs d’un même processeur ou des ordinateurs communiquant par l’intermédiaire d’un réseau.

Programme

 

Introduction au calcul parallèle et scientifique

Les connaissances théoriques requises pour développer sur une architecture distribuée ou parallélisée sont enseignées dans ce cours. D’une part, l’élève y découvre les différentes technologies disponibles et leurs spécificités (classification de Flynn, offres du Cloud…). D’autre part, il est sensibilisé aux différents schémas numériques qu’il peut être amené à utiliser ; sans en devenir un spécialiste, il en aura les connaissances suffisantes pour en réaliser la programmation.

Durée : 15 h

Efficacité et performance de la parallélisation

Ce cours permet d’acquérir les connaissances et compétences permettant de structurer et d’optimiser un programme sous environnement parallèle ou distribué. Les différentes approches que sont la parallélisation des données et la parallélisation des tâches y sont enseignées, comme le sont également les notions de verrou, d’équilibre de charge, d’accélération ou encore d’efficacité.

Durée : 15 h

Architectures à mémoire distribuée – MPI

Comme présenté ci-avant, différentes architectures se prêtent à la programmation distribuée ou parallélisée. Deux grandes familles sont étudiées et mises en œuvre dans ce module, lors de travaux pratiques. Ce cours concerne spécifiquement les architectures à mémoire distribuée. Elles s’appuient sur des messages permettant à différentes parties d’un programme parallélisé ou distribué de coopérer ; la norme sous-jacente est nommée Message passing interface  (MPI).

Durée : 15 h

Architectures à mémoire partagée – openMP

Ce cours complète « Architecture à mémoire distribuée » en présentant les architectures à mémoire partagée ; l’autre grande famille d’architectures enseignée dans ce module. Pour illustrer leur fonctionnement et en faire une mise en œuvre, l’interface de programmation open Multi Processing (openMP) est utilisée. L’élève ingénieur est amené, lors de travaux pratiques, à développer un programme parallélisé de calcul scientifique ; différents thèmes sont proposés chaque année.

Durée : 15 h

Task Parallel Library – Microsoft .Net

Ce cours présente la bibliothèque Task Parallel Library qui est une solution Microsoft  proposée en environnement .Net et utilisant le langage C#. Elle permet aussi bien d’écrire des codes s’appuyant sur la parallélisation des données que sur la parallélisation des tâches tout en dégageant le programmeur de la gestion de la couche de communication. Ce cours complète idéalement la formation en proposant un apprentissage de technologies en environnement Microsoft qui viennent compléter celles vues en environnement Linux.

Durée : 15 h

Enseignant-chercheur à l’école 3iL Ingénieurs et  au laboratoire de recherche XLIM (unité mixte Université de Limoges – CNRS), je suis confronté, de par mes activités, à effectuer de nombreuses simulations pour optimiser différentes structures. Les architectures parallèles sont pleinement utilisées par les nombreuses bibliothèques de calcul scientifique et il est important, pour raccourcir la durée des analyses, d’optimiser son code et de profiter des architectures efficaces mises à disposition, y compris sur un modeste ordinateur personnel.

Il me paraît important que l’ingénieur en informatique soit en capacité d’exploiter toutes les ressources matérielles offertes par les ordinateurs actuels et futurs. La parallélisation de codes est certes une nécessité dans le cadre de calculs scientifiques, mais plus largement, elle le devient davantage chaque jour avec le développement de l’intelligence artificielle et de l’analyse de données.

Christophe DUROUSSEAU

Enseignant-chercheur, Responsable du Module Programmation distribuée et parallélisation, 3iL Ingénieurs

Comment s'inscrire ?

Découvrir notre plaquette

 

N

Les formations

N

La mobilité internationale

N

Relations entreprises, recherche et innovation

N

La vie sur le campus

CONTACT

DOWNLOAD

S'INSCRIRE