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 )