Méthodes de calcul pour les Communications Numériques

CompMeth
Abstract

On traite une sélection d'expériences en séances de travaux pratiques sur les techniques de programmation et implémentation pour le calcul haute performance dans les systèmes de communications. Les étudiants apprendront des concepts architecturales et méthodes d'optimisation d'un logiciel dans le but d'implémenter un algorithme de façon efficace.

Débouchés pédagogiques : Les étudiants obtiendront des connaissances de certaines méthodes génériques de programmation numérique et une connaissance plus approfondie sur un sujet traité dans le contexte d'un mini-projet. Ils apprendront aussi à travailler en équipe et à synthétiser leur compréhension à travers une présentation à la fin du cours devant tous les étudiants.

Modalités pédagogiques : Cours magistraux et séances de travaux pratiques.

Règles du cours : La participation aux séances de travaux pratiques et aux réunions de mini-projets est obligatoire.

 

Bibliography

Documents (planches, documents publics sur internet) fournis aux étudiants. 

Requirements

« Programmation Informatique » (ComProg) et « Architecture des ordinateurs » (CompArch)

Description

1. Lors du premier exercice, les étudiants verront la programmation ou conception d'une implémentation avec l'arithmétique en virgule fixe. En particulier, on traite la gestion de la dégradation du fonctionnement d'un algorithme due à la résolution finie dans la représentation des variables et l'arithmétique avec saturation. Les étudiants analyseront la transformée de Fourier rapide avec deux configurations arithmétiques à travers un banc de test en langage C. Une configuration est représentative d'un processeur de signal numérique (DSP) et l'autre des portes logiques d'un circuit intégré pré-diffusé programmable (FPGA).

2. Le deuxième exercice couvre des techniques d'optimisation utilisant les extensions de parallélisation numérique "single-instruction multiple-data" (SIMD) de l'architecture x86-64 ou ARM. Les étudiants implémenteront une multiplication vectorielle par composant pour des vecteurs longs et expérimenteront avec les techniques d'optimisation afin d'atteindre la performance maximale pour l'architecture choisie.

L'exercice montre les méthodes pour analyser la performance temporelle d'une implémentation logicielle. De plus, les étudiants apprendront les façons d'inspecter les choix d'un compilateur afin de peaufiner sa stratégie d'optimisation et finalement d'améliorer la performance du résultat final.

3. Les mini-projets permettront aux étudiants de former des groupes afin d'étudier un problème plus complexe à travers un effort d'équipe. Des réunions régulières seront organisées avec l'instructeur et des assistants afin de guider les étudiants et d'analyser le progrès de l'équipe. Les sujets varient d'année en année mais peuvent inclure :

  • Acquisition et traitement temps-réel
  • Implémentations avec GPU
  • Calcul parallèle sur un réseau d'interconnexions très haut-débit et serveurs configurer avec des containeurs.
  • Analyse de performance temps-réel
  • Accélération SIMD sur processeur ARM embarqué

Objectifs d'apprentissage : 

  • Apprendre et comprendre certaines méthodes de programmation numérique et comprendre de façon plus détaillée un sujet considéré dans leur mini-projet.
  • Travailler en équipe sur le mini-projet et synthétiser sa compréhension par une présentation à leurs pairs à la fin du cours.Nb heures: 42 heures, 36 heures dédiées aux travaux pratiques.

Nb d'heure : 42 heures

Evaluation : 

  • Résultats et présentation du mini-projet (50% de la note finale),

  • Rapport et performance lors des séances de travaux pratiques (50% de la note finale).