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 )