Une stratégie efficace pour le placement de processus en
environnement multicœur
Jérôme Clet-Ortega
1
Des architectures fortement hiérarchiques
- Elles ont évolué
2
Des architectures fortement hiérarchiques
- Elles ont évolué
3
Des architectures fortement hiérarchiques
- Elles ont évolué - Multiprocesseurs
4
Des architectures fortement hiérarchiques
- Elles ont évolué - Multiprocesseurs
5
Des architectures fortement hiérarchiques
- Elles ont évolué - Multiprocesseurs - Multicœurs
6
Des architectures fortement hiérarchiques
- Elles ont évolué - Multiprocesseurs - Multicœurs - Multirails (réseaux)
Carte réseau
Carte réseau
7
Des architectures fortement hiérarchiques
- Elles ont évolué - Multiprocesseurs - Multicœurs - Multirails (réseaux)
- Et cela continue … - Manycore - GPUs
8
Une structure complexe
- Différents niveaux de cache
- Accès mémoire non uniformes - Bancs mémoires partagés - Le temps d’accès dépend de la position du cœur et
de celle du banc mémoire
cœur 0
cache L1
cache L2
cœur 1
cache L1
cœur 2
cache L1
cache L2
cœur 3
cache L1
cache L3
9
Comment les exploiter efficacement ?
- Au travers d’une implémentation MPI efficace - Minimiser le surcoût - Adapter les communications (intranœud/internœuds) - Placer les processus consciencieusement
Nécessité de définir une politique de placement adéquate
10
Proposition
- Déterminer les caractéristiques matérielles - Découverte topologique (cœurs, mémoire)
- Extraire le schéma de communication - Analyse de l’application (appels de fonction MPI)
- Calculer le placement - Échanges intranœud maximisés
1
2
3
11
Déterminer les caractéristiques matérielles
- Récolter les informations sur l’architecture
1
? 12
Déterminer les caractéristiques matérielles
- Récolter les informations sur l’architecture
1
L2
Cœur 2
L2
Cœur 6
L2
Cœur 3
L2
Cœur 7
L2
Cœur 1
L2
Cœur 5
L2
Cœur 0
L2
Cœur 4
MÉMOIRE
MÉMOIRE MÉMOIRE
MÉMOIRE
Réseau 1 Réseau 2
L1 L1 L1 L1
L1 L1 L1 L1
13
Déterminer les caractéristiques matérielles
- Récolter les informations sur l’architecture - Libtopology
1
Machine: NUMANode + Die: Node#0(8GB) Die#0 L2Cache + Core + L1Cache + SMTproc : L2#0(1MB) Core#0 L1#0(64kB) CPU#0 L2Cache + Core + L1Cache + SMTproc : L2#4(1MB) Core#1 L1#4(64kB) CPU#4 NUMANode + Die: Node#1(8GB) Die#1 L2Cache + Core + L1Cache + SMTproc : L2#1(1MB) Core#0 L1#1(64kB) CPU#1 L2Cache + Core + L1Cache + SMTproc : L2#5(1MB) Core#1 L1#5(64kB) CPU#5 NUMANode + Die: Node#2(8GB) Die#2 L2Cache + Core + L1Cache + SMTproc : L2#2(1MB) Core#0 L1#2(64kB) CPU#2 L2Cache + Core + L1Cache + SMTproc : L2#6(1MB) Core#1 L1#6(64kB) CPU#6 NUMANode + Die: Node#3(8GB) Die#3 L2Cache + Core + L1Cache + SMTproc : L2#3(1MB) Core#0 L1#3(64kB) CPU#3 L2Cache + Core + L1Cache + SMTproc : L2#7(1MB) Core#1 L1#7(64kB) CPU#7
14
Libtopology
- Abstraction des architectures hiérarchiques - Nœuds NUMA - Caches - Cœurs
- De multiples systèmes d’exploitation supportés - Linus, Solaris, AIX, …
- Création de topologies virtuelles 15
Libtopology
- Interface - Manipuler les topologies et leurs éléments - Fixer des processus
- Affichage - Plusieurs formats: PDF, PNG, FIG, …
16
Libtopology
- Processeur Intel Xeon (4 cœurs – 2 sockets)
17
Libtopology
- Processeur AMD Opteron (8 cœurs – 4 sockets)
System(31GB)
Node#0(8191MB)
Socket#0
Node#1(8192MB)
Socket#1
Node#2(8192MB)
Socket#2
Node#3(8192MB)
Socket#3
L2(1024KB) L2(1024KB) L2(1024KB) L2(1024KB) L2(1024KB) L2(1024KB) L2(1024KB) L2(1024KB)
L1(64KB) L1(64KB) L1(64KB) L1(64KB) L1(64KB) L1(64KB) L1(64KB) L1(64KB)
Core#0 Core#1 Core#0 Core#1 Core#0 Core#1 Core#0 Core#1
P#0 P#4 P#1 P#5 P#2 P#6 P#3 P#7
18
Libtopology
- Version actuelle : 0.9
- Téléchargement et documentation - http://runtime.bordeaux.inria.fr/libtopology/
- Changement de nom - Libhwloc (Hardware Locality)
19
Déterminer les caractéristiques matérielles
- Création d’une structure de données - Graphe complet et non-orienté - Sommet cœur - Arête pondérée facteur de distance (entre 2 cœurs)
- facteur Nombre d’éléments mémoire partagés
- Exemple : cluster d’Opteron (8 cœurs) - Valeur maximum pour les cœurs d’une même socket - Valeur minimum pour les cœurs de 2 nœuds distincts
1
20
Déterminer les caractéristiques matérielles
1
1000
100 100
1000 2 6
0 4 1 5
3 7
100
100 100 100
1000
100 100
1000
100
10
21
Extraire le schéma de communication
- Caractéristiques du modèle - Spécifique pour chaque application - Influencé par le nombre de processus - Critère: quantité de données échangées (entre 2
processus)
- Première exécution nécessaire
2
22
Extraire le schéma de communication
- Structure de données - Graphe complet et non-orienté - Sommet processus - Arête pondérée quantité des données échangées
2
23
Extraire le schéma de communication
- Exemple - Test NAS : LU classe B pour 8 processus
2
1000
100 100
100 0 1
2 3 6 7
4 5
100
10 100 100
1000
100 100
1000
100
24
Calculer le placement
- 2 éléments d’information - Graphe du matériel - Graphe des communications
- Objectif - Regrouper les processus qui communiquent
intensément
- Plongement de graphes ( NP-complet)
3
25
Calculer le placement
- Le logiciel SCOTCH - Ensemble de programmes et de bibliothèques - Application de la théorie des graphes
- Partitionnement, renumérotation, placement statique
- Téléchargement et documentation: - http://www.labri.fr/perso/pelegrin/scotch/
- Placement statique - Graphe de plus de 232 sommets
3
26
Calculer le placement
- Exemple - Test NAS: LU classe B, 8 processus - Architecture sous-jacente : AMD Opteron (8 cœurs)
3
27
Calculer le placement 3
0 100 100 10 1000 100 100 10
100 0 10 100 100 1000 10 100
100 10 0 100 100 10 1000 100
10 100 100 0 10 100 100 1000
1000 100 100 10 0 100 100 10
100 1000 10 100 100 0 10 100
100 10 1000 100 100 10 0 100
10 100 100 1000 10 100 100 0
0 1000 10 1 100 1 1 1
1000 0 1000 1 1 100 1 1
10 1000 0 1000 1 1 100 1
1 1 1000 0 1 1 1 100
100 1 1 1 0 1000 10 1
1 100 1 1 1000 0 1000 1
1 1 100 1 10 1000 0 1000
1 1 1 100 1 1 1000 0
Rang MPI 0 1 2 3 4 5 6 7
Numéro de cœur 3 7 4 0 6 2 5 1
28
Évaluation
- Plate-forme d’expérimentation - Cluster de 8 nœuds (Borderline) - AMD Opteron ( 2,6 GHz - 4 sockets avec 2 cœurs
chacun) - 8 Go de mémoire par socket - Carte réseau Myrinet 10G (attachée à la puce 0)
- Tests NAS - BT, CG, LU, MG et SP (64 processus) - Schémas de communication irréguliers 29
Évaluation
- 2 implémentations MPI - MPICH2-Nemesis - MPICH2-MX
- Politiques de placement - Round-Robin (mod 8) - Placed (placement calculé)
30
Évaluation Round-Robin vs Placed (MPICH2-Nemesis)
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
BT CG LU MG SP
Tem
ps d
’exé
cutio
n no
rmal
isé
Round Robin Placed
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
BT CG LU MG SP
Tem
ps d
'exé
cutio
n no
rmal
isé
Round Robin Placed 31
Évaluation Round-Robin vs Placed (MPICH2-MX)
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
BT CG LU MG SP
Tem
ps d
'exé
cutio
n no
rmal
isé
Round Robin Placed
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
BT CG LU MG SP
Tem
ps d
'exé
cutio
n no
rmal
isé
Round Robin Placed 32
Évaluation
- Questions en suspens - L’augmentation du taux de communications intranœud
est-il le seul facteur d’influence ? - Que dire du cache ? De l’effet NUMA ?
- 3 nouvelles stratégies - Round-Robin Core Binding - Regroup (= Placed sans attacher les processus) - Placed Core Reversed
33
Évaluation Comparaison de politiques (MPICH2-Nemesis)
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
BT CG LU MG SP
Tem
ps d
'exé
cutio
n no
rmal
isé
Round Robin RR Core Binding Regroup Placed Placed Core Reversed
34
Évaluation Comparaison de politiques (MPICH2-Nemesis)
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
BT CG LU MG SP
Tem
ps d
'exé
cutio
n no
rmal
isé
Round Robin RR Core Binding Regroup Placed Placed Core Reversed
35
Conclusion
- Exploiter efficacement les environnements multicœurs
- 3 étapes - Récupérer la hiérarchie matérielle - Collecter le modèle de communication - Calculer le placement
- Facteurs d’influence - Accroissement du taux de communication - Utilisation du cache adéquate
36
Perspectives
- Intégrer des informations supplémentaires - Bus d’E/S - GPUs
- Modèle hybride (MPI + threads)
- Schéma de communication temporel
37
Merci de votre attention
38
39
Evaluation - Round-robin vs placed (MPICH2-Nemesis) -
BT CG LU MG SP
Round Robin 51.6s 23.9s 45.5s 5.6s 78.6s
Placed 45.6s 15.6s 33.6s 3.7s 60.2s
BT CG LU MG SP
Round Robin 1038.6s 1177.5s 1356.5s 119.2s 2015.63s
Placed 851.7s 848.4s 938.3s 85.3s 1386.8s
40
Evaluation - Round-robin vs placed -
BT CG LU MG SP
Round Robin 56% 33% 66% 62% 55%
Placed 69% 85% 82% 73% 69%
BT CG LU MG SP
Round Robin 56% 33% 66% 70% 55%
Placed 69% 85% 82% 80% 69%
41