Accueil - Connexion

Architectures pour le calcul

139-2 Architectures pour le calcul Génie physique et systèmes embarqués (formation initiale sous statut apprenti) S9
Cours : 5 h TD : 0 h TP : 30 h Projet : 0 h Total : 35 h
Responsable : Dimitri Boudier
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 architecture cible :
- 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 :
- 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 architecture cible :
- Présentation de l'algorithme d'étude (convolution discrète, filtre FIR dans une application RADAR)
- Développement pour instrumentation, mesure, test et validation d'un applicatif de test
- Étalonnage 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 :
- Template programming C++ (preprocessing)
- Parallélisation par le standard OpenMP (paralélisation de boucle)
- Application sur algorithme de fouille
- Parallélisation par Pipeline sur bibliothèque Intel TBB
- Application sur algorithme de fouille
Compétences acquises
COMPÉTENCES GÉNÉRIQUES
Considération de la dimension organisationnelle, personnelle et culturelle
* Capacité à enteprendre et à innover

Adaptation aux exigences propres de l'entreprise et de la société
* Aptitude à prendre en compte les enjeux et les besoins de la société
* Aptitude à prendre en compte les enjeux de l'entreprise: dimension économique, respect de la qualité, compétitivité et productivité, intelligence économique

Acquisition des connaissances scientifiques et techniques et la maitrise de leur mise en œuvre
* Aptitude à mobiliser les ressources d'un champ scientifique et technique spécifique
* La maîtrise des méthodes et des outils d'ingénieurs: identification, modélisation, résolution de problèmes, utilisation des approches numériques et outils informatiques, pratique du travail collaboratif et à distance
* Capacité à concevoir, concrétiser, tester et valider des solutions, des méthodes, des produits, des systèmes innovants
* Capacité à effectuer des activités de recherche, fondamentale ou appliquée, à mettre en place des dispositifs expérientaux
* Capacité à trouver l'information pertinente, à l'évaluer et à l'exploiter

COMPÉTENCES SPÉCIFIQUES
- 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
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 )