Partager cette page :
Discipline(s) : Infomatique et télécommunications

Programmation parallèle et répartie

Semestre Semestre 2
Type Facultatif
Nature UE

Pré-requis

Connaissances de base en algorithmique et programmation.

Objectifs

Le parallélisme est né d’une volonté de performances : accélérer la résolution de problèmes dont la solution ne serait pas atteignable dans un monde purement séquentiel, ou au bout d’un temps inacceptable. De cette volonté émergea des architectures parallèles permettant de calculer plusieurs choses à la fois. Si la puissance de calcul à notre disposition est virtuellement infinie, programmer efficacement et exploiter pleinement ces plates-formes reste un challenge important.

Ce cours vise à développer sa capacité à résoudre des problèmes dans des environnements parallèles. Cela passe d’abord par la conception d’algorithmes parallèles et l’établissement de leur complexité temporelle. Cela passe ensuite par l’utilisation d’outils pour la parallélisation de codes séquentiels comme Open-MP dans un environnement à mémoires partagés ou MPI, dans les architectures distribuées. Cela passe enfin par la programmation d’accélérateurs matériels (GPU) à travers la programmation CUDA.

Compétences acquises : Algorithmique parallèle, parallélisation de codes séquentiels (Open-MP), programmation distribuée (MPI), programmation GPGPU (CUDA)

Contenu

Cours et travaux dirigés :
- Modèle Parallel Random Access Machine (P-RAM)
- Conception d’algorithmes parallèles
- Topologies des plates-formes distribuées
- Communications collectives

Travaux pratiques :
- Open-MP
- MPI
- CUDA

Bibliographie

Parallel Algorithms. Henri Casanova, Arnaud Legrand and Yves Robert, Chapman and Hall/CRC Press 2008.

Contrôles des connaissances

Examen terminal et contrôle continu de travaux pratiques.

Mise à jour le 12 avril 2018