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

33
BatchQueue: file producteur/consommateur optimis´ ee pour les multi-cœurs Thomas Preud’homme ´ Equipe REGAL Encadrants : Ga¨ el Thomas et Julien Sopena Directeur de th` ese : Bertil Folliot Jeudi 12 mai 2011 1 / 30

Upload: others

Post on 26-May-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 2: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 3: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 4: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 5: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 6: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

6 / 30

Page 7: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 8: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 9: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

9 / 30

Page 10: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 11: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 12: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

File CSV de Lamport : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 0

Invalidations : 0

12 / 30

Page 13: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

File CSV de Lamport : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 1

Invalidations : 2

13 / 30

Page 14: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

File CSV de Lamport : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 3

Invalidations : 3

14 / 30

Page 15: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 16: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

16 / 30

Page 17: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 18: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 19: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 0

Invalidations : 0

19 / 30

Page 20: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 1

Invalidations : 0

20 / 30

Page 21: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 2

Invalidations : 1

21 / 30

Page 22: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

BatchQueue : comportement du cache

Cœur

producteur

Cœur

consommateur

Lecture depuis un cœur distant : 4

Invalidations : 2

22 / 30

Page 23: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 24: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

Plan

1 Systeme de coherence des caches

2 Faiblesse de l’argorithme classique de Lamport

3 Solution : BatchQueue

4 Evaluation

24 / 30

Page 25: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 26: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 27: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 28: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 29: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 30: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 31: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

Questions

Des questions ?

31 / 30

Page 32: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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

Page 33: BatchQueue: file producteur/consommateur optimis´ee pour ... · BatchQueue : comportement du cache Cœur producteur Cœur consommateur Lecture depuis un cœur distant : 4 Invalidations

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