batchqueue: file producteur/consommateur optimis´ee pour ... · batchqueue : comportement du...

Post on 26-May-2020

13 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

BatchQueue: file producteur/consommateuroptimisee pour les multi-cœurs

Thomas Preud’homme

Equipe REGALEncadrants : Gael Thomas et Julien Sopena

Directeur de these : Bertil Folliot

Jeudi 12 mai 2011

1 / 30

Parallelisme pipeline : interet et limite

Principe

Diviser un code sequentiel en plusieurs sous-taches

Executer chaque sous-tache sur des cœurs differents

Faire transiter les donnees d’une sous-tache a une autre⇒ Idealement : latence inchangee et debit multiplie

Cœur 1

Tâche 1/3

(donnée i+2)

Cœur 2

Tâche 2/3

(donnée i+1)

Cœur 3

Tâche 3/3

(donnée i)

donnée i-1donnée i+3

Tâche

Limite

Acceleration limitee par le temps de communication⇒ Temps de communication fixe quelque soit le nombre de cœurs

2 / 30

Parallelisme pipeline : limites

La communication doit etre rapide : Accel(i) =1

1i+(i−1)Tcom

Tseq

1

2

3

4

5

6

2 4 6 8 10 12 14 16 18 20

Accélé

ratio

n t

oriq

ue

Nombre de cœurs

Tcom/Tseq = 1/100Tcom/Tseq = 1/50Tcom/Tseq = 1/25

Accélération idéale

Probleme : Tcom borne l’acceleration maximale possible

3 / 30

Mecanismes de communication inter-cœurs

Mecanismes de communication inter-cœurs

protocole IP (127.0.0.1)

socket unix

tube posix

memoire partagee

Interet de la memoire partagee

Pas d’encapsulation des donnees

Pas de changement de contexte (pas d’appel systeme)

⇒ Mecanisme le plus rapide

4 / 30

BatchQueue : objectif

Objectif : concevoir un nouveau systeme de communicationinter-cœurs rapide et asynchrone utilisant la memoire partagee

Principe : optimiser l’utilisation du cache materiel

Methode : minimiser le partage de variables

Solution : Augmenter le debit en relachant les contraintes sur lalatence si necessaire

5 / 30

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

6 / 30

Protocole de coherence des caches

La coherence des caches est maintenue par le protocole MESI (ouderive, ex : MOESI).

Protocole MESI

Chaque ligne de chaque processeur possede un etat :Modifiee, Exclusive, Partagee (Shared) et Invalide

L’etat d’une ligne definit si celle-ci est :

a jourpartagee entre plusieurs cœursmodifiee par rapport a la memoire centrale

Le protocole MESI decris les relations entre les etats⇒ Implemente un verrou lecteur / ecrivain.

7 / 30

Protocole de coherence des caches : ralentissements

2 sources de ralentissement

Lecture depuis Invalide : recuperation d’une ligne distante⇒ Besoin d’une communication inter-processeurs

Ecriture depuis Partagee : invalidation des caches distants⇒ Besoin d’une synchro avec les autres proc.

8 / 30

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

9 / 30

File Concurrente Sans Verrou de Lamport : structure

prod_idx

cons_idx

buf

3 variables partagees :

buf : tampon d’echange entre producteur et consommateur

prod idx : Indice de la prochaine entree vide du tampon

cons idx : Indice de la prochaine entree pleine du tampon

10 / 30

File CSV de Lamport : principe

prod_idx

cons_idx

buf

Algorithm sans verrou

Le producteur et consumateur ne doivent pas se depasser :

Un unique ecrivain pour chaque variable partagee

Indices incrementes apres la production/consommation

Pas de depassement :

Consommateur : prod idx 6= cons idxProducteur : cons idx 6= NEXT(prod idx)⇒ Une entree est perdue

11 / 30

File CSV de Lamport : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 0

Invalidations : 0

12 / 30

File CSV de Lamport : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 1

Invalidations : 2

13 / 30

File CSV de Lamport : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 3

Invalidations : 3

14 / 30

File CSV de Lamport : ralentissements

Cas d’utilisation : production et consommation en parallele

Rappel : parallelisme pipeline = production et consommation enparallele

Occurrences des evenements causant des ralentissementsMetrique File CSV de Lamport

Variables partagees 3

Freq. modifications a chaque donnee echangee

Freq. lectures distantes a chaque donnee echangee

15 / 30

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

16 / 30

BatchQueue : structures

prod_idx

cons_idx

1 statusbuf

2 variables partagees :

buf : Tampon d’echange entre producteur et consommateur

status : bit de synchro entre le producteur et le consommateur

2 variables privees :

prod idx : Indice de la prochaine entree vide du tampon

cons idx : Indice de la prochaine entree pleine du tampon

17 / 30

BatchQueue : principe

prod_idx

cons_idx

1 statusbuf

Algorithme sans verrou adapte au cache materiel

2 demi-tampons residant dans des lignes de cache separees

Aucun acces concurrent aux demi-tampons ⇒ tamporisation

Producteur passe au demi-tampon suivant si status vaut 0

Consommateur passe au demi-tampon suivant si status vaut 1⇒ status inverse quand une ligne de cache a ete traitee⇒ demi-tampons echanges quand status a ete inverse 2 fois

18 / 30

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 0

Invalidations : 0

19 / 30

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 1

Invalidations : 0

20 / 30

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 2

Invalidations : 1

21 / 30

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 4

Invalidations : 2

22 / 30

BatchQueue : ralentissements

Cas d’utilisation : production et consommation en parallele

Rappel : parallelisme pipeline = production et consommation enparallele

Occurrences des evenements causant des ralentissementsMetrique File CSV de Lamport BatchQueue

Variables partagees 3 2

Freq. modifications donnee ligne de cache

Freq. lectures distantes donnee ligne de cache

Cas d’utilisation du parallelisme pipeline

Taille des lignes de cache augmente avec le temps

Lignes de cache + grandes ⇒ BatchQueue + efficace

⇒ BatchQueue deviendra de plus en plus interessant

23 / 30

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

24 / 30

Description des tests

L’evaluation consiste en 2 tests :

Test avec communication intensive (aucun)

Test avec utilisation intensive du CPU (matrice)

Test avec communication intensive

160 millions mots memoire envoyes depuis un cœur a un autre

aucune action entre 2 envois

⇒ But : mesurer le debit maximum atteignable

Test avec utilisation intensive du CPU

160 millions mots memoire envoyes depuis un cœur a un autre

Multiplication de matrice effectuee entre 2 envois

⇒ But : Mesurer le debit avec le cache L1 utilise de faconintensive par une application externe

25 / 30

BatchQueue : evaluation (1/3)

Attention : Utilisation d’une echelle logarithmique

10

100

1000

10000

PipeLam

port

BatchQueue

Secondes

Performance des differents mecanismes de communication inter-cœurs

26 / 30

BatchQueue : evaluation (2/3)

16

18

20

22

24

26

28

30

32

34

36

BatchQueue

LibertyQueue [EPIC

10]

FastForward [PPoPP08]

MCRingBuffer [IPD

PS10]

Secondes

Comparaison en mode pipeline de BatchQueue avec l’etat de l’art

27 / 30

Architectures de caches materiels

2 configurations de caches materiels sur la meme machine(2 processeurs Intel X5472 contenant quatre cœurs)

L1 L1

L2 L2

RAM

Pas de cache materiel partage

L1 L1

L2

RAM

Cache materiel partage

28 / 30

BatchQueue : evaluation (3/3)

Warning : Utilisation d’une echelle logarithmique

1

10

aucun matrice

Se

co

nd

es

L2 partagéMémoire partagée

Influence du partage de cache sur BatchQueue

29 / 30

Conclusion

Communication cœur a cœur rapide

BatchQueue est adapte au parallelisme pipeline car il fournit :

une communication cœur a cœur rapide⇒ 2 fois plus rapide que LibertyQueue (etat de l’art)

une prise en compte du prechargement des lignes de cache⇒ reduit encore le nombre de defauts de cache

un surcout memoire faible⇒ Seulement un bit supplementaire par file

Perspectives

Evaluer BatchQueue sur une application existante⇒ Par exemple : instrumentation sur un cœur dedie

Gestion de plusieurs consommateurs (diffusion)

30 / 30

Questions

Des questions ?

31 / 30

J. Giacomoni, T. Mosely, and M. Vachharajani.Fastforward for efficient pipeline parallelism : Acache-optimized concurrent lock-free queue.In In PPoPP ’08 : Proceedings of the The 13th ACMSIGPLAN Symposium on Principles and Practice of ParallelProgramming. ACM Press, 2008.

T.B. Jablin, Y. Zhang, J.A. Jablin, J. Huang, H. Kim, and D.I.August.Liberty queues for epic architectures.In Proceedings of the Eigth Workshop on Explicitly ParallelInstruction Computer Architectures and Compiler Technology(EPIC), 2010.

Leslie Lamport.Specifying concurrent program modules.ACM Trans. Program. Lang. Syst., 5(2) :190–222, 1983.

P.P.C. Lee, T. Bu, and G. Chandranmenon.

32 / 30

A Lock-Free, Cache-Efficient Multi-Core SynchronizationMechanism for Line-Rate Network Traffic Monitoring.In IPDPS ’10 : Proceedings of 24th IEEE International Paralleland Distributed Processing Symposium, 2010.

Cheng Wang, Ho-seop Kim, Youfeng Wu, and Victor Ying.Compiler-managed software-based redundant multi-threadingfor transient fault detection.In CGO ’07 : Proceedings of the International Symposium onCode Generation and Optimization, pages 244–258,Washington, DC, USA, 2007. IEEE Computer Society.

33 / 30

top related