Accueil - Connexion

Architectures pour le calcul

42 Architectures pour le calcul Génie physique et systèmes embarqués (formation initiale sous statut étudiant) S9
Cours : 3 h TD : 0 h TP : 27 h Projet : 0 h Total : 30 h
Responsable : Hugo Descoubes
Pré-requis
- Bonnes assises en développement de logiciel embarqué sur MCU (Micro Controller Unit)
- Bonnes assises en langage C (langage procéduraux, etc)
- Bonnes assises en outils de développement logiciel (environnement de programmation, shell UNIX, Makefile, chaîne de compilation, etc)
- Bonnes assises en systèmes numériques (systèmes combinatoires et séquentiels, algèbre booléenne, numération, etc)
- Bases en Traitement Numérique du Signal
Objectifs de l'enseignement
- Comprendre les contraintes amenées par l'optimisation algorithmique (nécessité de paralléliser les traitements)
- Comprendre et connaître les architectures processeurs matérielles dédiées au calcul (DSP, Proc. Matriciel, GPU, etc)
- Comprendre l'importance de la mesure et de l'étalonnage avant optimisation (coût et contraintes d'une optimisation)
- Développer des bibliothèques optimisées d'algorithmes de calcul (signal, radar, etc) ou de traitement spécifique (par DMA, etc)
- Optimiser pour une architecture donnée un algorithme (programmation vectorielle et parallèle)
- Concevoir de déployer un applicatif de test/validation et de mesure
Programme détaillé
Programmation dépendant de l'archicture cible (hugo descoubes) :
- Introduction et présentation des processeurs pour le calcul (DSP, GPU, processeurs matriciels Kalray, FPGA, etc)
- Présentation des problématiques d'accélération algorithmique (complexité, dépendances, parallélisation, etc)
- Illustration sur architecture DSP C6x de chez Texas Instruments (VLIW Core's, SRAM/Cache L1/L2/L3 memories, DMA's, etc)
- Assembleur VLIW C6x et introduction à l'optimisation (vectorisation, pipelining software, déroulage de boucle, etc)
- Architectures CPU pour l'accélération matérielle (VLIW, EPIC et superscalaire)

Programmation parallèle (Emmanuel Cagniot) :
- Modèles d'exécution des machines (SIMD, MIMD, etc)
- Modèles mémoire des machines (UMA, NUMA, etc)
- Introduction aux technologies fondeurs et standards (CUDA, OpenMP, Intel TBB, etc)
- Template programming C++ (preprocessing)
- Parallélisation par le standard OpenMP
- Parallélisation par Pipeline sur bibliothèque Intel TBB
Applications (TD ou TP)
Programmation dépendant de l'archicture cible (hugo descoubes, intervenant Isable Lartigau) :
- Présentation de l'algorithme d'étude (convolution discrète, filtre FIR dans une application RADAR)
- Développement pour instumentation, mesure, test et validation d'un applicatif de test
- Etalonnage en C canonique et benchmarking
- Optimisation bas niveau en ASM (assembleur C6x, vectorisation, pipeling software, loop unrolling, etc)
- Optimisation bas niveau en C intrinsèque par vectorisation (intrinsics, alignement mémoire, options d'optimisation, etc)
- Accélération des copies mémoire (DMA, mémoire L1/L2 configurable SRAM/Cache, etc) et placement mémoire (linker script)
- Génération et documentation d'une bibliothèque de calcul (doxygen)

Programmation parallèle (Emmanuel Cagniot, intervenant hugo descoubes) :
- Template programming C++ (preprocessing)
- Parallélisation par le standard OpenMP (paralélisation de boucle)
- Application sur algorithme de fouille
- Parallélisation par Pipeline sur bibl
Compétences acquises
COMPETENCES SPECIFIQUES
- Etre capable de développer un applicatif de test, validation et mesure
- Etre de choisir la solution d'optimisation la mieux appropriée à un besoin (bibliothèque, vectorisaton, parallélisation, etc)
- Etre capable d'opérer sur tous les étages d'une architecture hard/soft pour accélérer un traitement (lib's, CPU, Lx mémoires, DMA, etc)
- Etre capable de livrer une bibliothèque documentée ouverte voire fermée

COMPETENCES GENERIQUES
Bloc de compétences : Considération de la dimension organisationnelle, personnelle et culturelle
-> Niveau 2 : Se connaître, savoir se situer, s'autoévaluer, gérer ses compétences et opérer ses choix professionnels

Bloc de compétences : Adaptation aux exigences propres de l'entreprise et de la société
-> Niveau 2 : Aptitude à prendre en compte les enjeux et les besoins de la société

Bloc de compétences : Acquisition de connaissances et méthodes scientifiques et techniques et maîtrise de leur mise en oeuvre
-> Niveau 3 : Capacité à mobiliser des connaissances scientifiques et des techniques expérimentales ou de simulation
-> Niveau 2 : Capacité à concevoir des systèmes innovants, à les concrétiser et à les tester
-> Niveau 3 : Capacité à trouver, évaluer une information pertinente puis à l'exploiter, capacité s'auto-évaluer, enrichir ses connaissances et compétences

Bloc de compétences : Acquisition, développement et mise en œuvre de connaissances et méthodes théoriques et expérimentales spécifiques à un domaine professionnel
-> Niveau 3 : Capacité à concevoir des systèmes électroniques communicants et autonomes implémentant une algorithmique et une architecture avancée
Bibliographie
- DSP System Design, Kehtearvaz et Keramat
- Digital Signal Processing, Dahnoum
- Applications audio numériques des DSP, Benoît Bouche
- A simple approach to digital signal processing, Merven et Ewers
- Les documentations techniques des processeurs en étude !

© 2024 - ENSICAEN ( Mentions Légales - Crédits )