Title: Cours 3 Conception dalgorithmes
1Cours 3Conception dalgorithmes
- Pierre Delisle
- Université du Québec à Chicoutimi
- Département dinformatique et de mathématique
2Plan de la présentation
- Modèle Tâche/Canal (task/channel)
- Méthodologie de conception
- Application de la méthodologie au problème
daddition de n nombres
3Modèle Tâche/Canal (Task/Channel)
- Développé par Foster en 1995
- Exécution parallèle ensemble de tâches qui
interagissent les unes avec les autres par des
messages envoyés à travers des canaux - Figure p. 64
- Tâche programme mémoire ports dE/S
- Canal file connectant le port de sortie dune
tâche avec le port dentrée dune autre tâche - Réception de message -gt Synchrone (bloquant)
- Envoi de message -gt Asynchrone (non bloquant)
4Méthodologie de conception (Foster)
- 4 étapes dans la conception dun algorithme
parallèle - Partitionnement
- Communication
- Agglomération
- Assignation
Partitionnement
Communication
Problème
Agglomération
Assignation
5Partitionnement
- Division des opérations et des données en
morceaux - Peut être centré sur les données ou sur les
instructions - Décomposition de domaine (p. 66)
- Division des données
- Association des instructions aux données
- Décomposition fonctionnelle (p. 67)
- Division des instructions
- Association des données aux instructions
- But Identifier un max. de tâches primitives
64 critères pour évaluer la qualité dun
partitionnement
- Le nombre de tâches primitives est
considérablement plus grand que le nombre de
processeurs de lordinateur utilisé - Les instructions et données redondantes sont
minimisées (extensibilité -gt taille de problème) - Les tâches primitives sont de taille semblable
(efficacité de lordonnancement des tâches) - Le nombre de tâches primitives augmente en
fonction de la taille du problème (extensibilité
-gt nombre de processeurs)
7Communication
- 2 formes de communication entre les tâches
- Locale
- Une tâche nécessite des données provenant dun
petit nombre dautres tâches - Création de canaux partant des tâches fournissant
les données, vers la tâche qui a besoin de ces
données - Globale
- Une tâche nécessite des données provenant dun
grand nombre dautres tâches - Gestion des canaux plus complexe et généralement
traitée plus tard dans le processus de conception
8Communication
- Les communications entre tâches dun algorithme
parallèle sont une source de coûts et doivent
être minimisées autant que possible - 4 critères permettent dévaluer la structure des
communications dun algorithme parallèle - Les opérations de communication sont équilibrées
entre les tâches - Chaque tâche communique avec un petit nombre de
tâches voisines - Les tâches peuvent effectuer leurs communications
de façon concurrente - Les tâches peuvent effectuer leurs calculs de
façon concurrente
9Agglomération
- À partir de cette étape, une architecture cible
doit être identifiée - Regroupement de tâches primitives en tâches de
plus grande taille - Amélioration de la performance
- Simplification de la programmation
- Lagglomération de tâches primitives
communicantes (p. 69) - Réduit la charge de communication
- Augmente la localité de lalgorithme parallèle
- Autre méthode Agglomération des tâches qui
effectuent des envois et réceptions semblables
107 critères pour évaluer la qualité de
lagglomération
- Augmentation de la localité
- La réplication de calcul prend moins de temps que
les communications quelle remplacent - La quantité de données répliquée est assez petite
pour permettre lextensibilité - Les tâches agglomérées ont des coûts de calcul et
de communication similaires - Le nombre de tâches augmente en fonction de la
taille de problème - Le nombre de tâches est aussi petit que possible,
tout en étant plus grand que le nombre de
processeurs - Lagglomération choisie pour la parallélisation
dun code séquentiel implique des coûts
raisonnables de modification de code
11Assignation (mapping)
- Attribution des tâches aux processeurs
- Buts
- Maximiser lutilisation des processeurs ( moyen
du temps où les processeurs sont actifs durant
lexécution) - Minimiser les communications entre processeurs
- Ces 2 buts sont souvent contradictoires, un
compromis est alors nécessaire - Des algorithmes peuvent aider le programmeur
(résumé figure p. 72) - Algos déquilibre de charge (Load Balancing)
déterminent une agglomération/assignation
adéquate - Algos dordonnancement de tâches (Task
Scheduling) allouent les tâches aux processeurs
durant lexécution
12Arbre de décision pour lassignation
Nombre de tâches statique
Nombre de tâches dynamique
Schéma de communication structuré
Schéma de communication non structuré
Communications fréquentes entre les tâches
Plusieurs tâches courtes et pas de communications
Temps de calcul constant par tâche
Temps de calcul varie selon la région
Agglomérer les tâches pour minimiser les
communications. Créer une tâche par processeur
Utiliser un algorithme déquilibre de charges
dynamique
Utiliser un algorithme dordonnancement de tâches
durant lexécution
Assignation cyclique pour équilibrer la charge de
calcul
Assignation cyclique pour équilibrer la charge de
calcul
Utiliser un algorithme déquilibre de charges
statique
134 règles pour évaluer la qualité de lassignation
- Considération dune seule tâche par proc et de
plusieurs tâches par proc - Considération des allocations statiques et
dynamiques des tâches aux procs - Si une allocation dynamique a été choisie,
vérification quelle nest pas un goulot
détranglement au niveau du système - Si une allocation statique a été choisie,
vérification que le ratio tâche/proc est dau
moins 101 (???)
14Exemple problème daddition de n nombres
(réduction)
- Soit un ensemble de nombres a0, a1, a2, , an-1
- Trouver la somme a0 a1 a2 an-1
- En séquentiel n-1 opérations -gt T(n)
- Partitionnement
- n valeurs -gt n tâches avec une valeur chacune
- But trouver la somme des n valeurs
15Exemple problème daddition de n nombres
(réduction)
- Communication
- Des canaux doivent être créés entre les tâches
pour transférer les données à additionner - Une tâche doit, à la fin, contenir le grand total
(tâche racine) - Premier essai toutes les tâches envoient leur
valeur à la tâche racine qui effectue laddition - Temps dexécution (n - 1) (? ?)
- Plus lent que lalgorithme séquentiel !
- Conclusion un meilleur équilibre doit être
trouvé entre les calculs et les communications
16Exemple problème daddition de n nombres
(réduction)
- Deuxième essai 2 semi-racines, chacune
responsable de n/2 éléments - 2 communications en parallèle
- 2 calculs daddition en parallèle
- Temps dexécution (n/2) (? ?)
- Réduction de moitié !
- Troisième essai 4 semi-racines, chacune
responsable de n/4 éléments - Temps dexécution (n/4 1) (? ?)
- Presque 4 fois plus rapide !
17Exemple problème daddition de n nombres
(réduction)
- En utilisant un schéma de communication en arbre
binomial (Rappel) - Addition de 2 valeurs 1 passage de message
- Addition de 4 valeurs 2 passages de message
- Addition de 8 valeurs 3 passages de message
- Addition de n valeurs log n passages de message
- Exemple de 16 tâches (p. 80)
- Si n nest pas une puissance de 2 (p. 81)
- n 2k r où r lt 2k
- 1ere étape r tâches envoient une valeur à r
autres tâches - Ensuite, ces r tâches deviennent inactives, il
reste 2k tâches et lalgorithme se déroule
normalement - Nombre de communications général log n
18Exemple problème daddition de n nombres
(réduction)
- Agglomération et assignation (p. 81)
- Assignation du graphe de n tâches sur un ensemble
de p processeurs, p lt n - Utilisation de larbre de décision
- Nombre de tâches -gt statique
- Schéma de communication -gt structuré
- Temps de communication par tâche -gt constant
- Résultat
- Minimisation des communications
- Assignation de n/p tâches à chacun des p
processeurs - Plus besoin de conserver la vision de tâches
primitives sur un même processeur, alors - n/p tâches primitives avec une seule valeur -gt 1
tâche contenant n/p valeurs
19Exemple problème daddition de n nombres
(réduction)
- Analyse
- ? temps requis pour effectuer une addition
- ? temps requis pour communiquer une valeur
dune tâche à une autre - Temps de calcul de chaque tâche ( n/p 1)?
- Temps pour une étape de réduction (communication
addition) ? ? - Nombre de réductions log p
- Temps de communication log p (? ?)
- Temps total de lalgorithme
- ( n/p 1)? log p (? ?)
20Sommaire
- Modèle tâche/canal
- Façon efficace de modéliser un algorithme
parallèle - Particulièrement adapté aux ordinateurs à mémoire
distribuée - 4 étapes
- Partitionnement
- Communication
- Agglomération
- Assignation
- But principal déterminer un compromis équitable
entre la maximisation de lutilisation des
processeurs et la minimisation des communications
entre processeurs