Architecture Multi-Processeurs [T9ES422M]

Architecture Multi-Processeurs [T9ES422M]

En pratique

Nature
Elément constitutif
Volume horaire de TP
10
Volume horaire de CM
10
Volume horaire de travail personnel
14
Langue d'enseignement
Français

Description du contenu de l'enseignement

Ce cours commence par l'évolution des architectures CPU modernes vers une architecture parallèle massive. Ceci est illustré par l'évolution des processeurs Intel. Les aspects de base de la programmation threads en langage C sont présentés et suivis d'une introduction aux opérations SIMD en utilisant le jeu d'instructions intel SEE et AVX et d'un aperçu des directives OpenMP pour la programmation multi-cœurs. La deuxième partie de ce cours est centrée sur l'unité de traitement graphique (GPU) : évolution de l'architecture et outils de programmation avec une attention particulière au langage CUDA de NVIDIA, un standard de facto sur la programmation parallèle massive utilisant le GPU. À la fin, un aperçu des outils portables pour la programmation des GPU et des CPU multi-cœurs est présenté avec une discussion finale sur les considérations de performance et les meilleures pratiques.


This course starts with the evolution of moderns CPU architectures toward a massive parallel architecture.
This is illustrated with Intel CPU evolution. Basics aspects of threads programming on C language are presented and followed by a introduction of SIMD operations using SEE and AVX intel instruction set and overview of OpenMP directives for multi-core programming. The second part of this course is centered on Graphic Processor Unit (GPU):  architecture evolution and tools for programming with particular attention to NVIDIA CUDA a de facto standard for massive parallel programming using GPU. At the end, an overview of portable tools for programming GPUs and multi-cores CPU are showed with a final discussion about performance considerations and best practices.

Organisation

Modalités d'organisation et de suivi

  1. Introduction a la machine parallèle         
    1. Architectures des CPUs
    2. Threads
    3. Instructions Intel SSE et AVX
    4.  Programmation Multi-core avec OpenMP
  2. GPU et CUDA
    1. Architectures des GPUs
    2. Langages de programmation généraliste pour GPU
    3. programmation avec CUDA
    4. PyCUDA
  3. OpenCL autres outils portables
    1. Concepts  
    2. PyOpenCL
    3. AMD HIP, OpenACC, OpenMP 4.0 C++ AMP, Python NUMBA
  4. Considérations sur la performance 

  1. Basics on parallel machine         
    1. CPU architectures        
    2. Threads
    3. Intel SSE and AVX instructions set
    4. Multi-core programming with OpenMP
  2. GPU and CUDA
    1. GPU architectures
    2. GP-GPU languages
    3. CUDA programming
    4. PyCUDA
  3. OpenCL and portable tools
    1. Concepts
    2. PyOpenCL
    3. AMD HIP, OpenACC, OpenMP 4.0 C++ AMP, Python NUMBA
  4. Performance considerations

Informations pédagogiques

Compétences à acquérir

  • Comprendre l'architecture des processeurs actuels pour obtenir des la performance avec du calcul parallèle
  • Connaître les différents types de parallélismes
  • Programmer des processus parallèles et massivement parallèles
  • Maîtriser des techniques de programmation permettant de mieux exploiter ces architectures
  • Pratiquer une analyse des processus de calcul en vue de définir la meilleur architecture pour les réaliser.

  • Understand the architecture of current processors to achieve performance using parallel computing
  • To know all the different types of parallelism
  • Programming parallel and massively parallel processes
  • Mastering programming techniques to better exploit these architectures
  • Perform an analysis of the calculation processes in order to define the best architecture to realize them.

Pré-requis recommandés

avoir des notions de programmation en C


C programming basics

Bibliographie, lectures recommandées

  • POSIX Threads Programming : https://computing.llnl.gov/tutorials/pthreads/
  • Introduction to Intel® Advanced Vector Extensions : https://software.intel.com/content/www/us/en/develop/articles/introduction-to-intel-advanced-vector-extensions.html
  • OpenMP Specifications : https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
  • An Easy introduction to CUDA : https://developer.nvidia.com/blog/even-easier-introduction-cuda/ 
Dernière modification : ven, 08/01/2021 - 15:47