Calcul à Hautes Performances et Support au Big Data
Mineure de 3ème année à CentraleSupélec

Stéphane Vialle

    

Le calcul à haute performance (HPC – High Performance Computing) permet d'obtenir aujourd'hui des résultats qui ne seront atteignables sur de simples PCs que dans plus de dix ans. Les enjeux du HPC sont stratégiques : simulation et compréhension du climat, optimisation de la production d'énergie, analyse financière temps réel, analyse de sousol pour la recherche pétrolière... et plus récemment en support aux applications de Big Data et de Machine Learning. Les pays les plus industrialisés de la planète font une course sans fin pour disposer des plus gros moyens de calculs, allant jusqu’à des systèmes de plusieurs centaines de milliers de coeurs (voire de plusieurs millions). Mais des systèmes de calcul à haute performance plus modestes sont maintenant couramment utilisés dans de très nombreuses entreprises et laboratoires, et deviennent accessibles dans des « clouds » ou dans des systèmes embarqués. Malheureusement le savoir-faire pour les exploiter fait toujours défaut.

High Performance Computing (HPC) is the way to achieve today some results that will be achieved on classic PCs only in ten years or further. HPC has strategic objectives: climate simulation and forecasting, optimization of power plants, real time financial analysis, underground analysis for oil industry... and more recently support for Big Data and Hadoop applications. Most industrialized countries are always racing to build and to have access to the most powerful computers, up to hundred thousand cores (and soon million cores). However, smaller HPC systems are currently required and installed in many companies and laboratories, and can now be accessed in “clouds” or in embeded systems. But expertise to efficiently program and use these HPC systems is still frequently missing.


Ce cours à comme premier objectif d’appréhender par la pratique la programmation des architectures parallèles modernes les plus utilisées (processeurs CPU multi‐coeurs, processeurs graphiques (GPU), et clusters de CPU et de GPU) avec des outils de programmation standards et utilisés autant dans l’industrie que dans la recherche scientifique (ex : OpenMP, MPI, CUDA et Hadoop). Sur ce socle de connaissances pratiques le deuxième objectif du cours est de fournir un ensemble de connaissances scientifiques et économiques sur le calcul à hautes performances, telles que les bases de l’algorithmique parallèle, les grilles de calcul à très large échelle, les acteurs et les enjeux du domaine, et enfin les conséquences et les défis énergétiques associés à l’utilisation de super‐ordinateurs.  
  1. Vue d'ensemble du calcul à haute performances :
Overview of HPC 2 slides par page 3 slides par page 6 slides par page
Evolution, marché et gestion des machines 2 slides par page 3 slides par page 6 slides par page
Site web du "Top 500" des superordinateurs http://www.top500.org/
Site web "SPEC" : Standard Performance Evaluation Corporation http://www.spec.org/
    1. Optimisation sérielles et vectorisation 
    Optimisations sérielles et vectorisation 2 slides par page 3 slides par page 6 slides par page
    Documentation IntelA Guide to Vectorization with Intel® C++ Compilers
    1. Algorithmique et programmation multithreads (OpenMP) :
    OpenMP - l'essentiel 2 slides par page 3 slides par page 6 slides par page
    OpenMP API
    OpenMP 4.5
    OpenMP 5


    BLAS dgemm
    2 slides par page 3 slides par page 6 slides par page

    1. Algorithmique et programmation distribuée (MPI) :
    MPI-1 - l'essentiel 2 slides par page 3 slides par page 6 slides par page
    MPI-1 Manuel de référence errata

    Documentation hyper-texte MPI-Pro : index.html


    1. Algorithmique et programmation GPGPU (CUDA) :
    CUDA - architecture et principes de base 2 slides par page 3 slides par page 6 slides par page
    CUDA - prog. optimisée 2 slides par page 3 slides par page 6 slides par page
    CUDA : bibliothèque CUBLAS 2 slides par page 3 slides par page 6 slides par page

    CUDA-5.5 Manuel de programmation en CUDA 5.5 Manuel de référence de CUDA 5.5
    Guide des bonnes démarches de développement en CUDA 5. Bibliothèque CUBLAS 5.5
    1. Modélisation, mesure et analyse de performances :
    Performances2 slides par page3 slides par page6 slides par page
    BE-1 : Optimisations sérielles, BLAS et parallélisation OpenMP Enoncé 1
    BE-2.1 : MPI-1 - communications bloquantes et déploiement
    BE-2.2 : MPI-1 & OpenMP - recouvrement calculs/communications
    Enoncé 2.1
    Enoncé 2.2
    BE-3.1 : CUDA - programmation de base
    BE-3.2 : CUDA - optimisations en shared memory
    BE-3.3 : CUDA - utilisation des cuBLAS
    Enoncé 3.1
    Enoncé 3.2
    Enoncé 3.3
       
    Règles d'évaluation en compétences à partir des comptes rendus de BE : ici
    Cours à Gif - S1
    03/10/2018 - D1.13g
    10/10/2018 - D1.13g
    17/10/2018 - D1.13g
    31/10/2018 - D1.13g
    07/11/2018 - D1.13g
    14/11/2018 - D1.13g
    21/11/2018 - D1.13g
    28/11/2018 - D1.13g
    05/12/2019 - Secours
    09/12/2019 - IO