Avec l'émergence de processeur multi-coeur (et maintenant manycore avec plusieurs dizaines d'unités d'exécution), l'expression du parallélisme est obligatoire pour permettre des hautes performances dans différents types d'applications (calcul scientifique, mégadonnées...). Dans ce contexte, ce cours détaille de multiples paradigmes de programmation parallèle pour permettre l'exploitation d'un grand nombre de coeurs sur différentes architectures cibles (CPU et GPU). Il comprend le modèle de mémoire distribuée (MPI), le modèle de mémoire partagée (OpenMP) et le modèle hétérogène (CUDA). Toutes ces approches permettraient de tirer parti des performances de différents ordinateurs (allant des petits serveurs jusqu'à de très larges superordinateurs du Top500).

 

Niveau requis : INF431 ou équivalent
Modalités d'évaluation : Projet
Langue du cours : Anglais




With the advent of multicore processors (and now many-core processors with several dozens of execution units), expressing parallelism is mandatory to enable high performance on different kinds of applications (scientific computing, big-data...). In this context, this course details multiple parallel programming paradigms to help exploiting such a large number of cores on different target architectures (regular CPUs and GPUs).It includes distributed-memory model (MPI), shared-memory model (OpenMP) and heterogeneous model (CUDA). All these approaches would allow leveraging the performance of differents computers (from small servers to large supercomputers listed in Top500).

Required level: INF431 or equivalent
Evaluation modalities: Project
Langue du cours : English
ECTS credits: 4