[M1 QDCS] Algorithmes distribués robustes |
---|
Responsable: Janna Burman |
Les algorithmes distribués sont à la base de systèmes et applications réparties, comme par exemple : l’Internet, l’Internet des objets, le Cloud, Bitcoin, etc. En plus des difficultés liées à la répartition géographique et l’évolution dynamique de leurs composants, ces systèmes réels sont soumis à des défaillances : arrêts de fonctionnement, corruptions de mémoire, comportements de participants malveillants, etc. Pour garantir le fonctionnement correct de tels systèmes, un enjeu majeur est de savoir gérer la dynamique et les défaillances, qui se multiplient du fait du passage à la grande échelle. Ce module présente une technique majeure pour tolérer un nombre borné de variété de défaillances (définitifs), en les masquant complètement. Les objectifs de ce modules sont de:
|
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Algorithmes distribués auto-stabilisants |
Responsable: Janna Burman |
L’auto-stabilisation est une technique versatile pour surmonter toute défaillance transitoire dans un système. Le focus de ce module est sur les systèmes répartis tels que l’Internet, les réseaux d’agents mobiles ou de capteurs, et leurs applications telles que l’Internet des objets, le Cloud, Bitcoin, etc. Les défaillances et l'évolution dynamique sont la norme dans des tels systèmes et deviennent plus en plus probables du fait du passage à la grande échelle. Cela concerne par exemple les changements de la topologie de communication, les corruptions de la mémoire volatile de leurs composants, etc. De telles défaillances peuvent mettre le système dans un état arbitraire, à tout moment de l’exécution. Mais, dès que les défaillances et l'évolution dynamique cessent, un algorithme auto-stabilisant ramène le système dans un fonctionnement correct, sans réinitialisation et sans intervention extérieure. Dans ce module, après avoir introduit les bases de l'algorithmique répartie, nous étudions comment la technique d’auto-stabilisation est utilisée pour rendre robustes les systèmes répartis actuels. |
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Algorithmes de la nature |
Responsable: Janna Burman |
La nature a développé des algorithmes répartis (sans contrôle centralisé), efficaces et peu gourmands en ressources et en énergie. Les réseaux traditionnels s'en sont parfois inspirés. Ce module est consacré à l'étude d'algorithmes liés, d'une façon ou d'une autre, à des phénomènes naturels. Ils reposent sur des modèles répartis se basant sur des processeurs très limités en ressources et en capacités de calcul et de communication. Par exemple, dans le modèle des protocoles de populations, des agents fixes ou mobiles, anonymes et indistinguables, avec des mémoires limitées, interagissent par paires de manière imprévisible et asynchrone. Un autre exemple est celui des systèmes répartis micro-biologiques, comme les cultures de bactéries et de virus. Il s'agit d'autres systèmes très limités, dans lesquels sont développés des algorithmes pour effectuer des calculs (circuits micro-biologiques) ou réguler des médicaments auto-administrés. Un des objectifs du module sera de comprendre comment des problèmes purement informatiques (calcul, synchronisation, coordination, communication) peuvent être résolus dans ce type de modèles avec des ressources limitées. |
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Algorithmique parallèle |
Responsable: Oguz Kaya |
L'objectif de ce cours est de fournir une base théorique adéquate pour la conception et l'analyse des algorithmes parallèles dans de différents modèles de calcul parallèle. Le cours commence par l'introduction d'une machine parallèle idéale (PRAM), puis se concentre sur la conception de divers algorithmes optimaux et l'analyse de leur complexité dans ce contexte. Ensuite, des architectures parallèles à mémoire distribuée utilisant de différents réseaux de communication sont introduites. Enfin, la parallélisation de nombreux algorithmes fondamentaux bien connus est traitée. |
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Calcul distribué par agents mobiles |
Responsable: Evangelos Bampas |
La notion d’agents mobiles a été proposée dans les années '90 pour faciliter plusieurs tâches fondamentales dans un réseau, telles que la tolérance aux pannes, la gestion du réseau et l’acquisition de données. Les agents mobiles servent de modèle naturel pour des systèmes logiciels à mobilité intrinsèque (code mobile, propagation de logiciel malveillant, robots d’indexation) et, à ce titre, ils ont trouvé des applications comme paradigme de conception de logiciel. Une deuxième perspective est fournie par la possibilité de modéliser des robots qui se déplacent dans un domaine continu, avec des applications typiques dans les domaines de l’intelligence artificielle, de la robotique, ou du contrôle. La communauté des algorithmes distribués a montré un fort intérêt tant pour les agents logiciels que pour les robots, avec le développement d'une riche littérature et d'un domaine de recherche actif. Après présentation des deux grandes catégories de modèles de robots (Look-Compute-Move) et d'agents logiciels, nous aborderons les problèmes algorithmiques fondamentaux du domaine, tels que la formation de motifs par des groupes de robots, le rassemblement, le rendez-vous, l'exploration, et la détection de nœuds dangereux dans un réseau. Le thème unifiant du cours est la conception des algorithmes qui permettront aux agents de collaborer entre eux et de résoudre ces problèmes, malgré leurs capacités de communication limitées, leur connaissance limitée du domaine dans lequel ils évoluent, et, dans certains cas, l'asynchronisme du système ou la présence de fautes. |
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Programmation objet C++ |
Responsable: Patrick Amar |
L'objectif du cours est d'approfondir les connaissances en conception et programmation dans un langage orienté objet en étudiant les structures de données abstraites et le langage C++. Le cours portera entre autres sur les points suivants:
La partie pratique, sous forme de projet encadré, permet aux étudiants de concevoir un logiciel où sont mises à contribution les connaissances acquises dans les autres modules : théorie des graphes, intelligence artificielle et infographie principalement. |
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Programmation C++ avancée |
Responsable: Joël Falcou |
Ce module vise a fournir une maîtrise avancée du langage C++ et des techniques de développement logiciel associées. L'accent sera mis sur la version moderne du langage (C++14/17) et ses implications sur les techniques de génie logiciel usuelles: méta-programmation, programmation fonctionnelle, modèle objet avancé. |
Prérequis:
|
Langue : Anglais |
[M1 IoT] Programmation MPI |
Responsable: Marc Baboulin |
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Calcul haute performance |
Responsable: Oguz Kaya |
Ce cours a pour but d’acquérir des compétences pour développer des programmes parallèles rapides capables d’exploiter les architectures parallèles pour résoudre des problèmes réels à grande échelle. Nous nous intéressons d’abord à la programmation parallèle sur une machine multi-cœurs en utilisant la bibliothèque OpenMP et discutons de la parallélisation des boucles, de l'ordonnancement et des techniques de parallélisation basée sur les tâches, ainsi que des opérations atomiques, des conditions de concurrence et du partage erroné. Nous étudions ensuite la parallélisation au sein d’un seul cœur en utilisant des techniques de vectorisation et un parallélisme au niveau des instructions. Enfin, nous discutons des problèmes de performances liés à la hiérarchie de la mémoire et des moyens de l'améliorer. |
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Programmation GPU |
Responsable: Oguz Kaya |
La puissance de calcul des unités de traitement graphique (GPU) a révolutionné l'intelligence artificielle, la science des données et l'informatique scientifique en permettant de résoudre des problèmes à une échelle sans précédent. Ce cours vise à donner une compréhension approfondie des outils de programmation parallèle et des principes permettant une utilisation efficace des GPUs. Nous commençons par les bases de la programmation GPU, notamment l’architecture des GPUs et le modèle SPMT (Single Program Multiple Threads) et développons des programmes parallèles utilisant les concepts de warps/blocks/grids. Nous abordons ensuite des sujets d’optimisation avancés, notamment la mémoire partagée, la fusion, l’occupation, le profilage des performances, etc. |
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Ordonnancement et systèmes d'exécution |
Responsable: Laércio Lima Pilla |
Ce module s'intéresse à la gestion efficace des ressources des systèmes parallèles (calcul, mémoire, réseau, etc.) utilisées pour le calcul scientifique et le traitement de données massives à travers des systèmes d'exécution et d'autres composants logiciels. Les thèmes suivants seront étudiés pendant le cours : les notions de base d'ordonnancement, la gestion de ressources de calcul partagées, l'équilibrage de charge dynamique et le "work-stealing", l'ordonnancement dans les systèmes de calcul hétérogènes, l'ordonnancement des graphes de tâches et les workflows scientifiques, la gestion de ressources dans les systèmes de Big Data. |
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Initiation à l’algorithmique et à la programmation quantique |
Responsable: Benoît Valiron |
L'objectif de ce cours est de comprendre le fonctionnement des algorithmes quantiques, d'analyser leurs forces et leurs limites. Dans un premier temps, nous introduirons les concepts derrière le calcul quantique et nous étudierons le modèle de calcul standard: les familles de circuits et le modèle du co-processeur quantique. Nous discuterons de la structure des algorithmes quantiques et du modèle de programmation qui en découle. Nous étudierons ensuite quelques algorithmes classiques : Grover, Shor, etc. Dans un dernier temps, nous ouvrirons la discussion sur les applications présenties à moyen terme pour le calcul quantique, en particulier dans le cadre du machine learning. |
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Calcul quantique avancé et codes correcteurs |
Responsable: Renaud Vilmart |
Modèles de calculs quantiques avancés, tels que le langage graphique dit ZX calcul: formalisme; universalité; complétude; vérification; optimisation; codes surfaciques. Codes correcteurs d’erreurs quantiques:
|
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Simulation de processeurs quantiques |
Responsable: Marc Baboulin |
Dans ce cours nous introduisons les outils d'algèbre linéaire nécessaires à la compréhension de l'état de l'art de la simulation de processeurs quantiques via un système HPC classique. Nous rappelons d'abord les enjeux du calcul quantique par rapport au calcul haute performance ainsi que les principaux concepts du modèle de calcul basé sur des circuits quantiques. Nous étudierons ensuite deux méthodes de simulation complémentaires, toutes deux basées sur la manipulation de tenseurs. Nous étendrons ces techniques à la simulation approchée de calcul quantique avec quantification de l'erreur commise. Enfin nous présenterons une approche à base d'algèbre linéaire de la représentation du groupe de Clifford ainsi que son application à la simulation. |
Prérequis:
|
Langue : Anglais |
[M1 MPRI] Fondements de l'information quantique |
Responsable: Pablo Arrighi |
Contenu : dans ce cours, nous nous attacherons à comprendre la nature quantique de l'information, au travers des multiples théorèmes qui la caractérisent. Nous les illustreront avec des applications en cryptographie & communications quantiques, correction d'erreur quantique et simulation quantique. Les points suivants seront abordés:
|
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Frontières du calcul parallèle, distribué et quantique |
Responsable: Janna Burman |
Ce module se propose de décrire les avancées les plus récentes en matière de calculs distribué, parallèle et quantique. Son contenu précis est donc à même d'évoluer au cours du temps. Le module est particulièrement recommandé aux étudiants qui veulent se tenir au courant des évolutions algorithmiques actuelles et envisagent de poursuivre leurs études avec un doctorat. |
Prérequis:
|
Langue : Anglais |
[M2 QDCS] Optimisation stochastique |
Responsable: Abdel Lisser |
Présenter les problèmes d’optimisation où les décisions sont prises en présence d’incertitude. Il s’agit de problèmes où l’ensemble ou un sous-ensemble des paramètres est représenté par des variables aléatoires qui suivent des lois de probabilités connues à l’avance. Le cours est basé sur les fondements théoriques de l’optimisation stochastique, les différentes modélisations de l’aléa et du risque et les méthodes de résolution associées. L’interaction sera optimisation stochastique et jeux stochastiques sera aussi abordée. Des exemples d’applications issues de problèmes industriels seront donnés pour illustrer les différentes parties du cours. Ce module couvrira les thèmes suivants :
|
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Modélisation et optimisation des systèmes discrets |
Responsable: Abdel Lisser |
Une grande variété de problèmes d’optimisation sont de nature discrète et peuvent être formulés et résolus à l'aide de méthodes d’optimisation combinatoire, tels que la planification du personnel de bord, la planification de la production d'électricité, les télécommunications, les problèmes de coupes, pour ne citer que quelques exemples. Les problèmes d'optimisation combinatoire sont ceux dans lesquels des techniques mathématiques sont appliquées pour trouver des solutions optimales au sein d'un ensemble fini de solutions possibles. L'ensemble de solutions possibles est généralement défini par un ensemble de contraintes, et cet ensemble est trop volumineux pour une recherche exhaustive. Les problèmes du sac-à-dos et du voyageur du commerce sont des exemples bien connus de l’optimisation combinatoire. A la fin de ce module, l’étudiant doit être capable de :
|
Prérequis:
|
Langue : Anglais |
[M1 QDCS] Jeux, apprentissage et optimisation des systèmes complexes |
Responsable: Abdel Lisser |
Au cours des 10 dernières années, un grand nombre de liens importants entre l’optimisation, la théorie des jeux et la théorie de l’apprentissage ont été découverts. Ce cours explorera ces liens, discutera de quelques sujets fondamentaux dans chaque domaine et de la façon dont les idées de chaque domaine peuvent éclairer les autres. Ce module couvrira les thèmes suivants :
|
Prérequis:
|
Langue : Anglais |