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

en détail

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.

l’objectif du module

Maîtriser les technologies et méthodes d’analyse à mettre en œuvre pour écrire des logiciels fonctionnant en environnement distribué ou parallélisé.
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.

année dispensée

Ce module est proposé en 5e année (M2) du programme ingénieur (ou en 4e année du programme ingénieur par apprentissage). Il permet de colorer le cursus de l’ingénieur généraliste en informatique et technologies du numérique en lui permettant de se projeter dans une carrière plus spécialisée.

Compétences

Visite de 3iL en réalité virtuelle

Projection professionnelle

Ce module permet à l’étudiant d’accéder à des 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. 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.

Programme

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

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

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

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

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