une stratégie efficace pour le placement de processus en ...- cluster de 8 nœuds (borderline) -...

Post on 22-May-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related