Programmation simultanée et parallèle GIN4100
Enseignant:
Email:
Durée totale du cours: 22.5 H
Option concernée : Ingénierie logicielle
Semestre : 4
Nombre de crédits : 2
| Modules
spécialisés |
Modules de
base |
Sciences et techniques de
l’ingénierie |
Préparation à la carrière professionnelle |
| X |
| Nombre d’heures | Activités hors classe | ||
| 22.5 | 18 | ||
| cours | TD | TP | |
| 12H | 10H30 | ||
| Code | : GIN4100 | Programmation simultanée et parallèle
|
Volume Horaire : 1h 30 cours + Travaux pratiques (par semaine)
Description du cours
Ce cours présente les principaux concepts liés à la programmation parallèle et distribuée basée sur la communication inter-processus. Cette communication peut se faire de deux façons :
- En partageant l’information : représente la première partie du cours
- Par le passage des messages : représente la deuxième partie du cours
La première partie traite des outils de communication par échange d’informations. Les deux outils sont des sémaphores et des moniteurs. La deuxième partie traite des outils de communication en transmettant des messages. En règle générale, le passage de messages peut se faire de plusieurs façons. Nous traitons des méthodes suivantes : communication synchrone (Manche), communication asynchrone (port)
Objectifs
À la fin de ce cours, l’étudiant devrait être en mesure de :
- écrire des programmes parallèles en Java
- assurer les principes d’exclusion mutuelle, que ce soit en partageant des informations ou par des échanges de
Conditions préalables
Il est recommandé d’avoir une culture générale de base dans :
- Programmation orientée objet
- Systèmes d’exploitation
Matrice d’apprentissage
| Chapitre | Titre | Durée | Résultats d’apprentissage |
|
Chapitre 1 |
Introduction à la programmation simultanée et parallèle |
6 |
– Comprendre le parallélisme au niveau du programme ainsi que les différents modes de processus parallèles |
|
Chapitre 2 |
Communication par partage d’informations: Sémaphore |
10 |
– Maîtriser l’utilisation des sémaphores pour construire des programmes parallèles pour protéger les variables partagées |
|
Chapitre 3 |
Communication par partage d’informations : Surveiller |
10 |
– élaborer des programmes parallèles à l’aide de moniteurs pour assurer le principe de l’exclusion mutuelle |
|
Chapitre 4 |
Communication en passant des messages |
9 |
– Développer des programmes parallèles en transmettant des messages en utilisant les notions de port et de canal |
Méthodologies d’apprentissage:
| Cours intégré (h) | 22h |
| Travail pratique (h) | 10h30 |
| Projet (h) | 0 |
| Visites (h) | 0 |
ÉVALUATION :
| Type | Couvrant quel chapitre (s) | Les facteurs de pondération |
| Projet | ||
| Travail pratique | ||
| À moyen terme | Chapitre 1+Chapitre 2 | 30% |
| Test oral | – | – |
| Examen final | Tous les chapitres | 70% |
BIBLIOGRAPHIE ET LOGISTIQUE RECOMMANDÉES :
- Introduction to Parallel Programming, Morgan Kaufmann, 2011, ISBN 9780123742605, https://doi.org/10.1016/B978-0-12-374260-5.00012-9
- BUELL, Duncan. Éloge d’une introduction à la programmation parallèle.
Résultats d’apprentissage :
- Compréhension des concepts de base : Les étudiants devraient comprendre les concepts fondamentaux de la programmation simultanée et parallèle, y compris les threads, les processus, les verrous, les sémaphores, etc.
- Conception d’applications parallèles : Les étudiants devraient être capables de concevoir des applications informatiques qui tirent parti du traitement simultané et parallèle pour améliorer les performances.
- Programmation parallèle : Les étudiants devraient être capables de programmer efficacement en utilisant des langages et des bibliothèques qui permettent le parallélisme, tels que OpenMP, MPI, CUDA, etc.
- Gestion des problèmes de synchronisation : Les étudiants devraient être capables de gérer les problèmes de synchronisation et d’accès concurrents aux ressources partagées.
- Analyse des performances : Les étudiants devraient être capables d’analyser les performances des applications parallèles et de les optimiser si nécessaire.
- Architectures parallèles : Les étudiants devraient comprendre les différentes architectures parallèles et être capables de choisir la meilleure approche pour une application donnée.