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. [Consignes BYOD](https://github.com/JuvignyEnsta/IN203_SUPPORT_COURS/blob/master/IN203.BYOD.md)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