Plan de cours

Plan de cours

Cours:
INF8601 - Systèmes informatiques parallèles
Département:
Génie informatique et génie logiciel
Trimestre:
Automne 2018
Crédits:
3 Crédits (3 / 1,5 / 4,5)
Web:
http://moodle.polymtl.ca/course/view.php?name=INF8601
Coordonnateur:
Michel Dagenais <michel.dagenais@polymtl.ca>
Local:
M-3426
Téléphone:
514-340-4711 poste 4029
Chargés de cours:
Jonathan Rajotte-Julien et Jérémie Galarneau
Chargé de laboratoire:
Paul Naert (paul.naert@polymtl.ca)

Description de l’annuaire

Taxonomie et organisation des systèmes informatiques parallèles. Architectures avancées de multiprocesseurs. Hiérarchie de mémoires, protocoles de cohérence des antémémoires. Parallélisme par fils d'exécution multiples. Conception d'applications parallèles en mémoire partagée. Coprocesseurs pour le calcul parallèle. Grappes de calcul et échange de messages entre les noeuds. Techniques d'équilibrage de charge. Infonuagique. Conception d'applications parallèles en mémoire répartie.

Prérequis:
INF2610

Objectifs

Ce cours vise à:

  • Comprendre les aspects qui influencent la performance des programmes parallèles;
  • Utiliser les techniques actuelles pour mettre en oeuvre des applications parallèles de haute-performance sur des processeurs multicœurs, des accélérateurs graphiques et sur une grappe d'ordinateurs.

Au terme de ce cours, l'étudiant sera apte à:

  • Appliquer les techniques de la programmation parallèle tout en sachant analyser leur impact;
  • Évaluer la performance d'une application parallèle et comparer son exécution avec celle de l'application séquentielle optimale correspondante.

Les séances de laboratoire permettent à l'étudiant de:

  • Comprendre les différences entre la programmation sur monoprocesseur, sur processeur multicœur et sur multiprocesseur;
  • Maîtriser la coordination de fils multiples d’exécution pour réaliser un traitement parallèle commun;
  • Évaluer les impacts de la répartition des données et des communications de messages sur le traitement parallèle, tant en mémoire partagée qu’en mémoire répartie.

Méthodes d’enseignement et déroulement du cours

Le cours présente un mélange équilibré de concepts théoriques et pratiques importants ainsi, que de descriptions de langages et librairies de programmation qui permettent de les mettre en oeuvre. L'étudiant est en premier lieu appelé à faire des lectures préparatoires avant chaque section de matière. Les points majeurs de chaque section sont revus rapidement en classe et les aspects plus critiques sont détaillés à l'aide d'exemples, d'exercices et d'études de cas. Les étudiants doivent ensuite mettre en oeuvre les concepts et technologies ainsi appris lors des travaux pratiques.

Évaluation

  • Contrôle périodique; aucune documentation permise sauf un aide-mémoire, préparé par l’étudiant, qui consiste en une feuille de format lettre manuscrite recto verso; pondération 30%; date à déterminer.
  • Examen final; aucune documentation permise sauf un aide-mémoire, préparé par l’étudiant, qui consiste en une feuille de format lettre manuscrite recto verso; pondération 40%; pendant la période d'examens finaux.
  • Travaux pratiques; pondération 30%; 3 projets comptant pour 10% de la note globale chacun. Le barême de correction détaillera la répartition de la note entre la démonstration de la bonne marche du logiciel devant le chargé de laboratoire, et le rapport. Les travaux pratiques peuvent être réalisés en équipe de 1 ou 2. Un retard de ]0,24h] est pénalisé de 10%, de ]24h,48h] de 20%. Un retard de plus de 48h mérite la note 0. L'étudiant doit tenir compte de la possibilité d'événements fortuits (tempête de neige, haut taux d'occupation des ordinateurs, pannes, féroce canin ingurgitant une clé USB contenant le devoir..) qui pourraient retarder son travail. Il doit donc prévoir terminer son rapport quelque temps avant l'échéance. Les rapports sont soumis sous forme électronique. Les dates de mise en ligne de l'énoncé et de remise des travaux pratiques sont synchronisées avec les cours et sont les mêmes pour toutes les sections du cours.
  • Une moyenne pondérée de moins de 40% pour le contrôle périodique et l'examen final entraînera automatiquement un échec.

Documentation

Manuel de référence principal :

J.L. Hennessy, D.A. Patterson, "Computer architecture: a quantitative approach", Fifth edition, Morgan Kaufmann, ISBN 978-0-12-383872-8, 2012.

Autres manuels de référence:

B. Chapman, G. Jost, G. and R. Pas, "Using OpenMP: portable shared memory parallel programming", Scientific and Engineering Computation, MIT Press, ISBN 9780262533027, http://books.google.com/books?id=MeFLQSKmaJYC, 2008.

W. Gropp, E.L. Lusk and A. Skjellum, "Using MPI: Portable Parallel Programming with the Message Passing Interface", MIT Press, 1999.

Y.C. Lin and L. Snyder, "Principles of parallel programming", Principles of Parallel Programming, Pearson/Addison Wesley, ISBN 9780321487902, http://books.google.com/books?id=iYghAQAAIAAJ, 2009.

Programme du cours

  1. Introduction. Plan de cours, historique des systèmes parallèles, taxonomie générale et organisation des machines parallèles. Métriques: disponibilité, performance parallèle, accélération, efficacité. (3 heures)
  2. Introduction à la programmation structurée en mémoire partagée. Fils multiples d'exécution: mécanismes de synchronisation, implémentations, ordonnancement. Programmation en mémoire partagée avec les POSIX threads et les Threads Building Blocks. (6 heures)
  3. Hiérarchie de mémoire, mémoire partagée, conflit d’accès, machine symétrique à mémoire partagée. Protocole de cohérence des antémémoires. (3 heures)
  4. Parallélisme en mémoire partagée: OpenMP. (3 heures)
  5. Résumé de mi-session et contrôle périodique. (3 heures)
  6. Parallélisme de données: unités vectorielles, GPU, OpenCL. (6 heures)
  7. Librairie de passage de messages MPI. (3 heures)
  8. Outils d'analyse de systèmes parallèles. (3 heures)
  9. Mise à l'échelle pour les grands centres de données et informatique nuagique: interfaces de connexion, communications et répartition des données, équilibrage de charge, virtualisation, aspects opérationnels de grands centres de données. (6 heures)
  10. Revue de quelques architectures récentes et applications. Revision. (3 heures)

Laboratoires

  1. Coordination de fils multiples d’exécution sur processeur multicoeur. Parallélisme par fils multiples d’exécution avec POSIX Pthreads et TBB (Thread Building Block). (6 heures)
  2. Parallélisme et performance, en mémoire partagée et sur GPU, avec OpenMP et OpenCL. (6 heures)
  3. Communications inter nodales et librairie de passage de messages MPI. (6 heures)

Qualités

Dans le cadre de ce cours, les étudiants développeront les qualités précisées dans le tableau ci-dessous. (www.polymtl.ca/etudes/bc/qualites)

1- Connaissance en génie 2- Analyse de problèmes 3- Investigation 4- Conception 5- Utilisation d’outils d’ing. 6- Travail en équipe 7- Communication 8- Professionnalisme 9- Impacts Environm. 10- Déontologie 11- Économie et gestion de projets 12- Apprentissage continu
x x x x
Modifié le: mardi 6 août 2019, 15:03