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 Big Data et Hadoop. 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 du "Green TOP500" (Green500) http://www.green500.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. Environnements de développement parallèles et distribués :
    OpenMP - l'essentiel 2 slides par page 3 slides par page 6 slides par page
    MPI-1 - l'essentiel 2 slides par page 3 slides par page 6 slides par page
    MPI-1 - comms. asynchrones et recouvrement  2 slides par page 3 slides par page 6 slides par page
    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 - prog. MPI+CUDA 2 slides par page 3 slides par page 6 slides par page

    Environnements de développement initialement conçus pour les machines parallèles et distribuées
    MPI-1Manuel de référenceerrata
    Documentation hyper-texte MPI-Pro : index.html
    MPI-2Manuel de référence
    OpenMP-3.1 Manuel de référence
    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. Algorithmique distribuée : 
    Algorithmique distribuée
    2 slides par page3 slides par page6 slides par page
    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 : MPI-1 - communications bloquantes et déploiement Enoncé 2
    BE-3 : MPI-1 & OpenMP - recouvrement calculs/communicationsEnoncé 3
    BE-4.1 : CUDA - programmation de base
    BE-4.2 : CUDA - optimisations en shared memory
    BE-4.3 : CUDA - utilisation des cuBLAS
    Enoncé 4.1
    Enoncé 4.2
    Enoncé 4.3
       
    Règles d'évaluation en compétences à partir des comptes rendus de BE : ici
    Cours à Metz - S1Cours à Gif - S1Cours à Metz - S2
    05/10/2017 - A308 + A305
    06/10/2017 - A005
    19/10/2017 - A304
    26/10/2017 - A304
    16/11/2017 - A304
    23/11/2017 - A304
    30/11/2017 - A304
    14/12/2017 - A304
    Date à préciser - IO

    13/10/2017 - D1.13G
    20/10/2017 - D1.13E
    27/10/2017 - D1.13E
    03/11/2011 - D1.13G
    10/11/2017 - D1.13G
    17/11/2017 - D1.13G
    24/11/2017 - D1.13E
    01/12/2017 - D1.13G
    08/12/2017 - Visite TGCC (à confirmer)
    15/12/2016 - IO
    12/01/2018 - A304
    19/01/2018 - A304
    26/01/2018 - A304
    02/02/2018 - A304
    09/02/2018 - A304
    16/02/2018 - A304
    23/02/2018 - A304
    02/03/2018 - A304
    09/03/2018 - A304 - créneau de secours
    Date à préciser - IO