Calcul parallèle et distribué, et Grilles de calculs
Cours de 3ième année IIC à Supélec

Stéphane Vialle

    

Ce cours est une introduction aux architectures, middleware et environnements de calcul parallèle et distribué (supercalculateurs, clusters et grilles), et un apprentissage théorique et appliqué de leur algorithmique et programmation.

This course introduces the architectures and development environments for parallel and distributed computing (supercomputers, clusters and grids). It includes theoretical and practical learning of parallel and distributed algorithm design and programming.
 
  1. Notions d’architectures parallèles et distribuées :
Notes de cours : 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/
Documentation sur le processeur "IBM cell" http://www.blachford.info/computer/Cell/Cell0_v2.html
Documentation sur les machines "IBM BlueGene" IBM-BlueGene-url
A note on the Zipf distiribution of Top500 supercomputers http://www.ece.ubc.ca/~matei/PAPERS/zipf-argument.pdf

  1. Bases d'algorithmique parallèle et distribuée :
Notes de cours : 2 slides par page 3 slides par page 6 slides par page

  1. Langages de programmation parallèles et distribués :
Notes de cours :
OpenMP
2 slides par page 3 slides par page 6 slides par page
Notes de cours : MPI-1 - comm bloquantes 2 slides par page 3 slides par page 6 slides par page
Notes de cours : MPI-1 - comm non-bloquantes 2 slides par page 3 slides par page 6 slides par page
Notes de cours : MPI-2 - spécificités 2 slides par page 3 slides par page 6 slides par page
Notes de cours :
CUDA - introduction
2 slides par page3 slides par page6 slides par page
Notes de cours :
CUDA - cluster de GPUs
2 slides par page3 slides par page6 slides par page

Environnements de développement initialement conçus pour les machines parallèles et distribuées
MPI-1 : Manuel de référence Errata
Documentation hyper-texte MPI-Pro : index.html
MPI-2 : Manuel de référence
OpenMP-1 : Manuel de référence pour C /C++ (1998)
OpenMP-2 : Manuel de référence 2.0 pour C/C++ (2002) Manuel de référence 2.5 pour C/C++ et Fortran (unifié) (2005)
OpenMP-3 : Manuel de référence 3.0 pour C/C++ et Fortran (2008)
CUDA-1.1: Manuel de programmation en CUDA 1.1  Compilateur CUDA "nvcc"
Bibliothèque CUBLAS Bibliothèque CUFFT 
Machine virtuelle PTX
CUDA-2.0: Manuel de programmation en CUDA 2.0 Manuel de référence de CUDA 2.0
Bibliothèque CUBLAS Bibliothèque CUFFT 

Environnements de développement initialement conçus pour le Grid-computing
GridRPC : Article de référence Exercice type (avec corrigé)
JavaSpaces : Site Web "JavaSpaces Guide"  : http://www.dancres.org/cottage/javaspaces.html
ProActive : Manuel de référence Site Web : http://www-sop.inria.fr/oasis/proactive/
  1. Modélisation, mesure et analyse de performances :
Notes de cours : 2 slides par page 3 slides par page 6 slides par page

  1. Algorithmique parallèle et distribuée avancée : 
Tris parallèles,
notes de cours :
2 slides par page 3 slides par page 6 slides par page
Répartition dynamique par work-pool et détection de terminaison notes de cours
Expérimentations d'E/S parallèles (travaux anciens) notes de cours
(2 slides par page)
notes de cours
(3 slides par page)
    1. Grid computing :
Le cours de middleware de Virginie Galtier introduit une partie des concepts présents dans les middleware de grille, et une introduction au grid computing est disponible dans le cours de Système d'Information de Stéphane Vialle en 2A.

Par conséquent, et par manque de temps, les grilles ne sont plus abordées dans ce cours de 3A. Nous privilégions une introduction au calcul scientifique sur GPU (ou "GPGPU") à partir de CUDA et CUDA+MPI. Nous redonnons toutefois ci-dessous divers documents relatifs au grilles.

Notes de cours étendues, d'une introduction au Grid
computing du cours de Système d'Information de
Stéphane Vialle en 2A.
2 slides par page 3 slides par page 6 slides par page
Anciennes notes de cours de Virginie Galtier :
Introduction aux grilles.
2 slides par page 3 slides par page 6 slides par page
Anciennes notes de cours de Virginie Galtier :
Middleware de grille.
2 slides par page 3 slides par page 6 slides par page


Exemples de middlewares :
Globus : Site Web : http://www.globus.org/
EGEE : Site Web : http://www.eu-egee.org/
Unicore : Site Web : http://www.unicore.eu/,  http://www.unicore.org/ Article d'introduction (en français)
ProActive : Site Web : http://www-sop.inria.fr/oasis/proactive/
Jini/JavaSpaces : Site Web de SUN sur Jini : http://www.sun.com/software/jini/specs/jini1.2html/jini-title.html
Site Web "JavaSpaces Guide"  : http://www.dancres.org/cottage/javaspaces.html
BoincSite Web : http://boinc.berkeley.edu/

Exemples de grands projets :
Grid'5000 Site Web : https://www.grid5000.fr/mediawiki/index.php/Grid5000:Home
EGEE Site Web : http://www.eu-egee.org/
DEISA Site Web : http://www.deisa.org/
TeraGrid Site Web : http://www.teragrid.org/
Naregi Site Web : http://www.naregi.org/index_e.html
     
     
2006-07Guillaume MecheneauPlatform ComputingAdoption et adaptation du grid à la réalité de l'entreprise.
2007-08Eric Mittelette, Eric VernieMicroSoftDécouvrir le développement parallèle sur Windows : De Win32 à PFx, de la station de travail au Cluster CCS de calcul.
2008-09Guy ChesnotSGISystèmes de fichiers parallèles.
2009-10Luigi BrochardIBMPower consumption and optimization
BE-1 : Optimisation sérielle Enoncé HTML énoncé
BE-2 : OpenMP Enoncé HTML
énoncé
BE-3 : MPI-1 - communications bloquantes Enoncé HTML
énoncé
BE-4 : MPI-1 - communications non-bloquantes Enoncé HTML
énoncé
BE-5 : CUDA - programmation GPGPU Enoncé HTMLénoncé
   
   
Partage de mémoire
Implantation de barrières et écluses de synchronisation énoncé
Producteurs-consommateurs et lecteurs-rédacteurs en multiprocessus énoncé
Parallélisation de boucles en OpenMP énoncé
Envoi de messages Renumérotation d'un anneau de processeurs énoncé
Tri parallèle : Merge-Sort sur arbre de processeurs énoncé
Somme de distance dans un tore de processeurs énoncé
Relaxation de Jacobi à voisinage étendu sur barre de processeurs énoncé
Programmation par messages bloquants et non-bloquants énoncé
Réseau d'interconnexion Dimensionnement du réseau d'un cluster énoncé
Problèmes complets FFT sur cluster de PC bi-processeurs énoncé
Calculs et communications sur un cluster énoncé
Algorithme génétique sur un anneau de processeurs énoncé