v2.11.0 (5687)

Cours scientifiques - IN203 : Programmation parallèle

Domaine > Sciences et technologies de l'information et de la communication.

Descriptif

Auparavant spécifique à des programmes s'exécutant sur super-calculateurs ou effectuant des calculs en réseau, le parallélisme s'est généralisé aux stations de travail, aux ordinateurs personnels et même aux smartphones grâce à la généralisation des processeurs multicoeurs et des registres vectoriels ainsi qu'à l'évolution des cartes graphiques qui, pour les besoins de l'industrie du jeu vidéo, sont devenus des accélérateurs de calcul massivement parallèle. Cet accès aisé au parallélisme est une aubaine pour gagner en rapidité de traitement, en particulier pour certaines applications lourdes en temps de calcul. 

Mais la parallélisation est une tâche délicate, qui demande une bonne connaissance de l'architecture du calculateur cible, qui nécessite souvent de repenser l'application, parfois jusque dans ses fondements algorithmiques et qui peut buter sur des difficultés d'ordre fondamental. Le cours constituera une introduction aux différents types de parallélisme, aux différentes archictectures qui les implantent et aux concepts et cadres logiciels nécessaires à leur mise en oeuvre.
 

Objectifs pédagogiques

Au terme de ce cours, l'étudiant doit être capable de :
- Expliquer les limitations et les concepts fondamentaux du calcul parallèle, à la fois par échange de message et en mémoire partagée
- Développer ou adapter des algorithmes sur un calculateur parallèle
- Expliquer les performances d'un programme parallèle à partir des caractéristiques matérielles et architecturales sous-jacentes
- Choisir les bons outils de mesure pour calculer objectivement les performances d'un programme parallèle
- Tirer parti d'un GPGPU connaissant son architecture

21 heures en présentiel (7 blocs ou créneaux)
réparties en:
  • Contrôle : 1
  • Cours magistral : 5
  • Travaux dirigés en salle info : 15

effectifs minimal / maximal:

1/111

Diplôme(s) concerné(s)

Parcours de rattachement

Pour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées

ES102, IN201, IN204

 

Format des notes

Numérique sur 20

Littérale/grade européen

Pour les étudiants du diplôme Master 1 Parisien de Recherche Opérationnelle

Pour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées

Vos modalités d'acquisition :

Examen sur papier, examen sur ordinateur, projet

Le rattrapage est autorisé (Max entre les deux notes écrêté à une note seuil)
  • le rattrapage est obligatoire si :
    Note initiale < 6
  • le rattrapage peut être demandé par l'étudiant si :
    6 ≤ note initiale < 10
L'UE est acquise si Note finale >= 10
  • Crédits ECTS acquis : 2 ECTS
  • Scientifique acquis : 2

Le coefficient de l'UE est : 1

La note obtenue rentre dans le calcul de votre GPA.

L'UE est évaluée par les étudiants.

Programme détaillé

(CC = Contrôle de connaissances - CM = Cours Magistral - TD = Travaux Dirigés sur ordinateur)

1CM : Introduction à la programmation parallèle - Motivation - Architectures des calculateurs parallèles - Mesure des performances
1TD : Initiation à MPI
2CM : Programmation parallèle en mémoire distribuée
2TD : Parallélisation en mémoire distribuée avec MPI
3CM : Parallélisation en mémoire partagée. Introduction à OpenMP et aux threads C++ 11
3TD : Parallélisation sur architecture à mémoire partagée avec OpenMP et les threads C++ 11
4CM : Programmation des GPGPUs avec CUDA
4TD : Parallélisation d'un code séquentiel en MPI et OpenMP
5CM : Autres outils de programmation parallèle (OpenCL, TBB, C++ 17, etc.). Présentation du projet parallèle
5TD : projet parallèle.
6CC : Contrôle de connaissances : examen papier
6TD : Projet parallèle.
7TD : Contrôle des connaissances : examen machine

Mots clés

Eléments d'architecture parallèle : topologie réseau, mémoire (cache, NUMA, partagée, distribuée), SIMD/MIMD ; Programmation parallèle : SPMD/MPMD, échange de message (MPI), multithreading (OpenMP/threads), GPGPU (Cuda/OpenCL)
Veuillez patienter