
Présentation de la formation.
La formation « Calcul Intensif et Sciences des données » est une formation commune à l'Enseirb-Matméca et à l'Université de Bordeaux. Elle s'adresse aux élèves de la filière informatique de l'Enseirb-Matmeca et du Master Informatique de l'Université de Bordeaux qui souhaitent devenir des experts en calcul et en traitement et analyse des données hautes performances.
Objectifs de la formation : acquérir une double compétence « calcul et données. »
La simulation numérique est devenue un pilier incontournable de la science. Elle permet notamment de simuler des phénomènes impossibles à observer en laboratoire, dans les domaines de la Physique, la Chimie, la Mécanique, la Climatologie, l'Astrophysique, la Biologie, et bien d'autres. La précision et l'efficacité de ces simulations repose sur une exploitation performante de moyens de calcul parallèles, et nécessite un large spectre de compétences en matière de modélisation, d'algorithmique et de programmation. Cette quête de performance est partagée par les applications destinées à extraire de l'information depuis de gros volumes de données, qui doivent faire face à des flux toujours plus imposants provenant de capteurs, de grands équipements, d'objets connectés ou de simulations numériques... La convergence entre calcul intensif et traitement des données massives est désormais un axe de développement prioritaire au niveau international. L'objectif de cette formation est précisément de former les futurs ingénieurs dans ce domaine.
Métiers.
- Ingénieur R&D
- Data Scientist
- Chef de projet
Secteurs d'activité.
- Airbus, Dassault, IBM, Thales, Total
- CEA, EDF, IFP-EN
- Sociétés de service
- Banques
- E-Commerce
Fondations.
La formation s'appuie sur des laboratoires et équipes de recherche qui ont des années d'expérience en matière de calcul intensif et traitement des données. Elle bénéficie d'une dynamique de recherche multidisciplaire unique en France qui réunit les chercheurs en mathématiques, informatique, mécanique et électronique dans ce domaine.

Le point de vue industriel.

Laurence BONNET, Directrice scientifique de la DAM, CEA.
« L'exploitation optimale des calculateurs hautes performances actuels et futurs et des données qu'ils génèrent est un enjeu majeur pour accroître la capacité prédictive de la simulation de systèmes complexes où les processus physiques sont fortement couplés et interviennent à différentes échelles de temps et d’espace -dont certaines sont inaccessibles à l’expérience- et, ainsi augmenter la confiance accordée aux simulations numériques grâce à la maîtrise des incertitudes de simulation. La capacité à travailler ensemble d'experts de haut niveau issus de disciplines variées comme l'informatique, l'analyse numérique, le génie logiciel, la science des données, la statistique ou la physique … est une des clés pour y parvenir. »

Wilfried KIRSCHENMANN, CTO Advanced Computing Technologies at ANEO.
« Pour intervenir sur les problématiques de performances intensives des chaînes de traitement, nous devons avoir une compréhension relativement fine de l'ensemble de ses maillons (matériel, réseau, architecture et implémentation logicielle, algorithmie) et de leurs interactions. La spécialité CISD aborde l'ensemble de ces maillons de façon opérationnelle. »

Jean-Thomas ACQUAVIVA, Senior Researcher, HPC & Big Data at DDN Storage.
« Alors que le monde de la simulation numériques se nourrit de plus en plus de données d'acquisition, symétriquement les approches purement orientées donnée de l'IA intègrent maintenant la simulation numérique dans leur boucle d’apprentissage. Ces convergences se retrouvent aussi bien au sein des infrastructures que de la pile logicielle. L'arrivée de la formation CISD, à la confluence de ces deux thématiques, est une excellente nouvelle pour la recherche et pour l'industrie avec l'assurance de faire émerger les talents qui relèveront les défis de demain. »
Témoignages.

J.-C. Papin, Ingénieur Recherche & Développement.
« J'ai intégré cette formation dans le but de travailler sur différentes architectures informatiques (de la machine multi-cœurs au système distribué, en passant par les accélérateurs massivement parallèles). J'y ai notamment découvert un domaine où l'on jongle entre la vision grande échelle (algorithmes distribués, gestion des échanges) et une vision locale proche du matériel. Cette formation m'a aussi ouvert au monde de la recherche et j'ai pu effectuer une thèse au CEA sur la répartition des calculs, avec un accès en «avant-première» à des accélérateurs de calcul dédiés. Cette filière permet vraiment d'acquérir un solide bagage et ouvre sur de nombreuses opportunités professionnelles, car les besoins actuels de l'industrie (simulation numérique, Deep-Learning, ...) font tous un usage intense de ressources parallèles, et cela dans vraiment tous les domaines ! »

J.M. Couteyen, Ingénieur Recherche & Développement.
« Cette formation m'a permis de bénéficier d'un socle solide en calcul haute performance. J'ai pu faire une thèse CIFRE dans un grand groupe (ex-Airbus Defence and Space, désormais ArianeGroup) qui a porté sur la parallélisation d'un code de mécanique des fluides en utilisant des techniques modernes. Ce code est notamment utilisé pour le projet Ariane 6. J'ai ensuite rejoint le centre de recherche du groupe Airbus. Les simulations d'envergures sont cruciales pour l'industrie et la société. Elles permettent de réduire drastiquement le coût des essais et donc le coût de dévellopement des technologies de demain, où un des enjeux majeur est désormais leur impact environnemental. »

A. Cassagne, Doctorant en informatique.
« Passionné par le dévelopement informatique, j'ai intégré cette filière par curiosité pour le monde du parallélisme. Au final, je suis pleinement satisfait par cette passionnante formation où j'ai énormément appris. Alors que je me dirigeais plutôt vers du génie logiciel avec des langages de haut niveau, j'ai complètement revu mes projets professionnels pour me tourner vers des problématiques de recherche liées à l'optimisation de code. »
Programme des études
Tronc commun
- Ce cours présente les différents langages de parallélisme utilisés aujourd’hui pour paralléliser les applications de simulation. Le cours sera découpé en trois parties. Les deux premières parties présenteront le modèle Massage Passing Interface et OpenMP. La troisième partie étudiera la programmation hybride MPI+X
- De nombreux supercalculateurs se reposent aujourd'hui sur des accélérateurs de calcul, tels que des cartes graphiques (GPU). L'objectif de ce cours sera d'une part de présenter l'architecture de ces accélérateurs, et d'autre part d'apprendre à les programmer efficacement à l'aide de langages specifiques (CUDA, OpenCL), d'annotations de code (OpenMP, OpenACC), de bibliothèques optimisées (CUBLAS, Thrust, …). Des TPs seront consacrés à l'écriture, au debug, et à l'optimisation de code accéléré sur GPU à l'aide de ces différents paradigmes.
- Le domain du HPC repose essentiellement sur l'utilisation de large supercalculateurs qui reposent sur des environnements qui leur sont spécifiques pour permettre un artage des ressources. Le cours présentera dans un premiers temps le cluster utilisé par la formation ainsi que les outils de gestions de modules et de soumissions de jobs qui seront à disposition pour la formation. Dans un deuxième temps, le cours présentera les outils d'analyse de performance utilisés par les codes de HPC sur ces plate-forme afin d'en optimiser l'utilisation. Les outils présentés seront utilisés en compléments des autres cours de la formation.
- La démocratisation des machines parallèles a rendu critique la bonne gestion des moyens de calculs. Processeurs, mémoire, bande passante, énergie... Le but de ce cours est de discuter les moyens algorithmiques d'attribution des ressources pour les différentes applications s'exécutant sur ces plateformes. Parmi les sujets discutés, nous présenterons la manière d'analyser et résoudre algorithmiquement ce type de problèmes. Nous parlerons d'ordonnancement de ressources avec et sans contraintes. Nous parlerons d'hétérogénéité et de hiérarchie mémoire et d'équilibrage de charges.
- Dans ce cours nous aborderons différentes techniques d’apprentissage statistique. Plus précisément nous nous intéresserons à l'apprentissage non supervisé avec les méthodes d’analyse en composantes principales et de partitionnement et à l'apprentissage supervisé avec les méthodes de régression et de classification. Ces méthodes seront mises en oeuvre lors de 2 séances de TP avec le langage de programmation R. Ensuite, des mini projets vous seront proposés.
- L'objectif du cours est de parcourir les méthodes de résolution de problèmes d'algèbre linéaire dense dans un contexte de calcul haute performance. On s'intérressera particulièrement à la (re)formulation de ces algorithmes dans un contexte parallèle permettant une mise en relation avec les cours d'ordonnancement et d'équilibrage de charges, mais également dans le contexte de modèles de programmation avancés. Systèmes linéaires (Factorisations triangulaires (Cholesky, LU, …), Résolution de systèmes triangulaires, Utilisation de bases orthogonales (QR)), Décomposition en valeurs singulières/propres, Introduction aux tenseurs
- La visualisation scientifique située à l’interface entre l’informatique scientifique et les mathématiques appliquées est désormais un outil de communication, de compréhension et d’analyse de résultats rendu incontournable pour l’analyse de grands volume de données. L’objectif de ce cours est de présenter les enjeux, les principes et des solutions logicielles de visualisation scientifique. Les points suivants seront abordés : format des données, pipeline de visualisation, algorithme d’extraction d’information, technique d’exploitation in-situ … Les TD et TP s’intéresseront à l’utilisation de bibliothèques et aux développements d’outils permettant de créer ses propres logiciels d’analyse et de visualisation 3D. Les technologies utilisées seront notamment Python, C++, VTK, VisIt, Paraview.
-
- Introduction à la problématique BigData : Notion d’ordre de grandeur, Enjeux scientifiques/sociétaux/économiques, Problèmes
- Notion de base sur le fonctionnement d’un système distribué à grande échelle : Introduction à l’éco-système hadoop, Notion élémentaire administration hadoop
- Introduction sur les systèmes de fichiers distribués : HDFS : principe fonctionnement, Utilisation du client HDFS, Introduction au framework JAVA de programmation pour la manipulation de HDFS
- Introduction au paradigme de programmation Map/Reduce : Principes élementaires, Mise en place avec Hadoop/HDFS, Introduction au framework Java de programmation MapReduce Hadoop2.
- Introduction au “design pattern” Map/Reduce : Filtration, Summarization, Organization, Jointure
- Introduction au BigTable (nosql) : Démistification des BigTable, Introduction au Big Table de Hadoop HBASE, Présentation du framework de programmation Java pour HBASE.
- Outils pour l'apprentissage (EI9IS324)
- Traitement informatique de la musique (EI9IS330)
- Programmation 3D (EI9IT386)
- EC9CE302 Projet Professionnel : niveau 3
- EC9CE320 Soutenance de projet professionnel
- EC9CE321 Challenge entreprise
- EC9LC301 LV1 Anglais S9
UE à choix (2 parmi 3)
- L’objet de ce cours est de proposer aux élèves la mise en oeuvre complète d’un algorithme parallèle par décomposition de domaine d'un problème 2D et de comparer cette technique au parallélisme d'opérateur abordé en option de 2eme année. Après un rappel des principales fonctions de l’interface de communication « MPI » l'optimisation en programmation parallèle est envisagée (usage de sous-programme de communication non bloquant, recouvrement de la communication par du calcul). Les méthodes de décomposition de domaine (Schwarz additive et multiplicative) sont présentées et leur application numérique est faite sur une équation 2D pour des maillages structurés. La difficulté, dans le cas des schémas de résolutions appliqués sur des maillages non structurés, est de concilier l’équilibre de charge et la structure des communications (simple et le moins volumineux possible). La solution s’appuyant sur le partitionnement de graphe (METIS, SCOTCH) sera abordé. L'utilisation de ces partitionnements dans un code éléments finis (fourni) pour des maillages non structurés sera expliquée et utilisée pour une étude de Speed-up du code. Si le temps nous le permet une initiation à PETSC (librairie en open source pour le calcul scientifique basée sur MPI pour le parallélisme) sera proposée.
- L’ère de l’ExaScale creusera encore plus l’écart entre la vitesse de génération des données de simulations et la vitesse d’écriture et de lecture pour analyser ces données en post-traitement. Le temps jusqu’à la découverte scientifique sera donc grandement impacté et de nouvelles techniques de traitement des données doivent être mises en place. Les méthodes in situ réduisent le besoin d’écrire des données en les analysants directement là où elles sont produites. Il existe plusieurs techniques, en exécutant les analyses sur les mêmes nœuds de calcul que la simulation (in situ), en utilisant des nœuds dédiés (in transit) ou en combinant les deux approches (hybride). La plupart des méthodes in situ ciblent les simulations qui ne sont pas capables de tirer profit à 100% du nombre croissant de cœurs par processeur. Le module sera découpé en deux sous-parties. La première sera axée sur la visualisation de données in-situ dans le cadre d'une application scientifique. La deuxième exploitera la visualisation de données in-situ pour le développement de méthodes d'algorithmique numérique pour le HPC. L’objectif principal de cette formation est d’étudier les différents modèles de systèmes in situ et d’appliquer certains de ces modèles à un code de dynamique moléculaire conçu pour les supercalculateurs exaflopiques, ainsi qu'au développement de bibliothèques d'algèbre linéaire. Les TDs/TPs consisteront en une mise en œuvre effective d’un système in situ à base de tâches de calcul et de threads dans le code de dynamique moléculaire, pour la patrtie dynamique moléculaire. Et sur la deuxième partie, les objectifs seront de comprendre les différents niveau de parallélisation dans une méthode de résolution de systèmes linéaires complexe sur les grandes architectures hétérogènes.
- L'analyse et le traitement du langage naturel (NLP) est l'un des grands challenges actuel en Intelligence Artificielle. Les avancées dans ce domaine sont utilisées au quotidien dans les moteurs de recherches, les chatbots ou encore les boites mails (détection de spam, ciblage publicitaire, ...). Le but de ce cours est de présenter et de mettre en oeuvre quelques techniques d'extraction d'information issues de données textuelles. Nous verrons dans un premier temps comment des algorithmes éprouvés tels que le modèle Bag-of-Word et le TF-IDF permettent d'extraire des données pertinentes de documents. Nous aborderons ensuite les méthodes d'embedding vectoriels, en étudiant le modèle Word2Vec, qui permet d'extraire des données contextuelles. Enfin nous verrons comment exploiter ces informations pour identifier des textes sémantiquement proches ou encore les catégoriser au moyen d'algorithmes de clustering. Les cours seront accompagnés de TDs/TPs permettant la mise en oeuvre effective des algorithmes présentés ci-dessus. Un projet, adossé à des données réelles, permettra aux élèves de mettre en application les algorithmes vu en cours, tout en mettant en oeuvre leurs compétences en calcul distribué pour traiter la volumétrie du jeu de données en un temps raisonnable.
Davantage d'informations sur le Syllabus : cliquez ici.
Contacts
Secrétariat pédagogique : Sandrine Truffier, 05 56 84 23 34.
Responsables : Mathieu Faverge, Raymond Namyst.