La machine parallèle MPC1

34
La machine parallèle MPC1 Hardware, protocoles et performances University P. & M. Curie (PARIS) Laboratoire d’Informatique de PARIS6 Olivier Glück

description

La machine parallèle MPC1. Hardware, protocoles et performances University P. & M. Curie (PARIS) Laboratoire d’Informatique de PARIS6 Olivier Glück. Introduction. Une carte réseau PCI (FastHSL) développée au LIP6 : Liens série, point à point (HSL,1 Gbit/s) - PowerPoint PPT Presentation

Transcript of La machine parallèle MPC1

Page 1: La machine parallèle MPC1

La machine parallèle MPC1

Hardware, protocoles et performances

University P. & M. Curie (PARIS)

Laboratoire d’Informatique de PARIS6

Olivier Glück

Page 2: La machine parallèle MPC1

3

Introduction

Une carte réseau PCI (FastHSL) développée au LIP6 :

Liens série, point à point (HSL,1 Gbit/s)

RCUBE : routeur (8x8 crossbar, 8 HSL ports)

PCIDDC : contrôleur réseau PCI (protocole de

communication de type « Remote DMA »)

But : fournir des couches logicielles les plus performantes

au niveau applicatif (MPI)

Page 3: La machine parallèle MPC1

4

Architecture matérielle

R3PCI

DDC

R3PCI

DDC

Standard PC running LINUX or FreeBSD

FastHSL boards

Standard PC running LINUX or FreeBSD

Page 4: La machine parallèle MPC1

5

La carte FastHSL

Page 5: La machine parallèle MPC1

6

MPC avant

Page 6: La machine parallèle MPC1

7

MPC maintenant

8 nœuds bi-pro 1GHz, 8 Go de RAM, 160 Go de disk

Page 7: La machine parallèle MPC1

8

Le matériel

Le lien HSL (1 Gbit/s) Câble coaxial, lien série, point à point, full-duplex Les données sont encodées sur 12 bits Contrôle de flux matériel

RCUBE Routeur rapide, reconfigurable et à grande extensibilité Latence : 150 ns Routage wormhole

PCIDDC Le contrôleur réseau, interface avec le bus PCI Réalise le protocole de communication : Remote DMA Stratégie zéro-copie

Page 8: La machine parallèle MPC1

9

Le protocole de communication bas-niveau

Protocole zéro-copie (dépôt direct dans la mémoire du destinataire)

Accès direct à la mémoire du nœud hôte

Process

Memory

Process

Memory

Sender Receiver

Process

Memory

Kernel

Memory

I/O

Memory

I/O

MemoryKernel

Memory

Process

Memory

Page 9: La machine parallèle MPC1

10

L'écriture distante

Page 10: La machine parallèle MPC1

12

PUT : la couche de communication bas-niveau

Supportée par les Unix standards : FreeBSD / Linux Stratégie zéro-copie Fournit une API noyau simple utilisant l’écriture

distante de PCIDDC Paramètres d’un appel à PUT() :

numéro de nœud distant adresse physique locale adresse physique distante taille des données à émettre un identifiant de message fonctions de callback pour la signalisation

Page 11: La machine parallèle MPC1

13

Performances de PUTPC Pentium II 350MHz

Débit : 494 Mbit/s

Demi-débit : 66 octets

Latence : 4 µs (sans appel système, sans interruption)

0

100

200

300

400

500

600

1 10 100 1000 10000 100000

Size (bytes)

Thr

ough

put (

Mbi

t/s)

Page 12: La machine parallèle MPC1

15

MPI sur MPC (1)

Réseau HSL

Driver FreeBSD ou LINUX

MPI

PUT

Une implémentation de MPICH sur l’API PUT

Page 13: La machine parallèle MPC1

16

MPI sur MPC (2)

Partie générique : gestion des commucateurs et des groupes,opérations globales ...

MPI API

ADIAbstract Device Interface : Interface pour emettre et recevoir

des données contigües issues de send et receive MPI

Gestion du type des données, de l'hétérogénéité, des filesd'attente pour les requêtes ...Protocol

interface

CH_GMMPI/MPC

CH_GM_P6

PUT BIPCouchesbasses

Page 14: La machine parallèle MPC1

17

Problématique (1)

2 principaux problèmes :

Où écrire les données dans la mémoire

physique du nœud récepteur ?

On ne peut transmettre que des données

contigües en mémoire physique

Page 15: La machine parallèle MPC1

18

Problématique (2)

Ici, 3 buffers physiques sont nécessaires.

N o d e 1 N o d e 2

v irtu a l p ro cessm em o ry

p h y sica lm em o ry

user

buf

fer

user

buf

fer

1

2

3

p h y sica lm em ory

v irtu a l p ro cessm em o ry

Page 16: La machine parallèle MPC1

19

Les messages de l’API GM_P6

Les messages de contrôle SHORT : émission des données utilisateur avec copie

intermédiaire dans des tampons alloués par MPI. REQ : envoi d’une requête pour un protocole de rendez-vous. RSP : réponse à une requête (contient la description du tampon

de réception). CRDT : contrôle de flux au niveau MPI (algorithme à crédit).

Les messages data Envoi des données utilisateur en mode zéro-copie après un

protocole de rendez-vous

Page 17: La machine parallèle MPC1

20

Format des messages de contrôle

crdt type src tag len user dataSHORT : 20 octets + données user

crdt type src tag len sid

crdt type src sid canal recv_map

crdt type src tag len

REQ : 24 octets

RSP : 20 octets + recv_map

CRDT : 20 octets

Page 18: La machine parallèle MPC1

21

Les messages de contrôle

Transfert d’une information de contrôle (REQ, RSP, CRDT) ou de données utilisateur (SHORT)

Utilisation de tampons contigus en mémoire physique pré-alloués par MPI au démarrage de l’application (boîtes aux lettres)

Une copie en émission et en réception (pas grave pour des petits messages)

N o d e 1 N o d e 2

émission réception

HSLm ém oirephysique

m ém oirevirtue lle

Page 19: La machine parallèle MPC1

22

Les messages de données Transfert des données utilisateur par un protocole de

rendez-vous Mode zéro-copie La description en mémoire physique du tampon de

réception est transmise à l'émetteur dans un message RSP

émetteur récepteurREQ

RSP

DATA

Page 20: La machine parallèle MPC1

23

Les primitives MPI (1)

noeud 2noeud 1

donnéesutilisateur

REQ

RSP

DATA

MPI_Send, MPI_ISend

> 8 ko : DATA< 8 ko : SHORTdonnées

utilisateur

SHORT

noeud 1 noeud 2

2 copies, 1 message 0 copie, 3 messages

Page 21: La machine parallèle MPC1

24

Les primitives MPI (2)

MPI_Ssend et MPI_ISsend

On se place dans le mode DATA : quelle que soit la taille du message, on a besoin du protocole de rendez-vous pour faire la synchronisation

MPI_Bsend et MPI_IBsend

Idem que MPI_Send et MPI_ISend

MPI_Rsend et MPI_IRsend

Idem que MPI_Send et MPI_ISend mais on n’a plus besoin de REQ (on gagne un message de contrôle dans le cadre du protocole de rendez-vous)

Page 22: La machine parallèle MPC1

25

Les différentes API dans MPI

MPICH

MPI-MPC

RDMA

PUT ou BIP

MPI_SEND(VAD, len, tid_dst, TAG)MPI_RECV(VAD, len, tid_src, TAG)

API MPI

API GM_P6

API RDMA

API PUT

GMPI_SEND_DATA(VAD, len, tid_dst, TAG, recv_map, canal)GMPI_SEND_SHORT(VAD, len, tid_dst, TAG)GMPI_SEND_REQ(tid_dst, TAG)GMPI_SEND_RSP(tid_dst, TAG, recv_map, canal)GMPI_SEND_CREDIT(tid_dst)

RDMA_SEND(Nsrc, Ndst, PRSA, PLSA, len, canal, NS, NR)RDMA_SENT_NOTIFY(Ndst, canal)RDMA_RECV_NOTIFY(Nsrc, canal)RDMA_LOOKUP()

PUT_ADD_ENTRY(Ndst, PRSA, PLSA, len, mi, flags)PUT_SENT_NOTIFY(Ndst, PRSA, PLSA, len, mi, flags)PUT_RECV_NOTIFY(mi, data1, data2)PUT_FLUSH_LPE()PUT_FLUSH_LMI()

Page 23: La machine parallèle MPC1

26

Performances MPI (1)

Latency : 26 µs Throughput : 490 Mbit/s

Throughput : MPI-MPC P350

0

100

200

300

400

500

600

Size (byte)

Thro

ughp

ut (M

bit/s

)

MPI-MPC / P350 / FreeBSD

Page 24: La machine parallèle MPC1

27

Performances MPI (2)Throughput (Log2) : Cray-T3E & MPC

-4

-2

0

2

4

6

8

10

12

1 2 4 8 16 32 64 128

256

512

1024

2048

4096

8192

1638

432

768

6553

6

1310

72

2621

44

Size (bytes)

Thro

ughp

ut (b

ase

2)

MPI-T3E / Proc 300

MPI-MPC / P350 / FreeBSD

Cray Latency : 57 µs Throughput : 1200 Mbit/s

MPC Latency : 26 µs Throughput : 490 Mbit/s

Page 25: La machine parallèle MPC1

28

Performances MPI (3)

Throughput : MPI-BIP & MPI-MPC

0

50

100

150

200

250

300

350

400

450

1 4 16 64 256 1024 4096 16384 65536Size (bytes)

Thro

ughp

ut (M

b/s) MPI-BIP / P200 / Linux

MPI-MPC / P166 / Linux

Page 26: La machine parallèle MPC1

29

Comment améliorer les performances ?

On se place dans le cas d’une seule application MPI à la fois (mode batch)

On cherche à éliminer les appels système PUT en mode utilisateur

Il faut simplifier les opérations de verrouillage et de traduction d’adresses Redistribution de la mémoire

On veut rester dans le standard MPI

Page 27: La machine parallèle MPC1

30

Les appels système

La couche de bas-niveau PUT se trouve dans le noyau.

Appels système les plus fréquents : émission : appel de put_add_entry() signalisation : soit par interruption soit par polling

appel de put_flush_lpe (signalisation en émission) appel de put_flush_lmi (signalisation en réception)

Appels système dus à la traduction d’adresse : verrouillage des données en mémoire (mlock) traduction adresse virtuelle en adresse physique

Page 28: La machine parallèle MPC1

32

PUT en mode utilisateur (1)

Un PUT simplifié pour MPI et en mode utilisateur :

une seule application utilisatrice de PUT (MPI)

plus d’appels système pour faire les émissions et la

signalisation

Les problèmes qui se posent :

accès en configuration à la carte FastHSL en mode

utilisateur

partage des ressources globales (en particulier de la carte

réseau) entre les différentes tâches MPI

Elimination des interruptions trop coûteuses

Page 29: La machine parallèle MPC1

33

PUT en mode utilisateur (2)

Page 30: La machine parallèle MPC1

34

PUT en mode utilisateur (3)

Sur un PII-350MHz, 128 Mo de RAM :

Latence

MPI sur

PUT noyau

MPI sur

PUT utilisateur

29 µs 21 µs

Page 31: La machine parallèle MPC1

35

Redistribution de la mémoire (1)

On souhaite éviter les coûts de verrouillage et de traductions d’adresse.

Idée : la mémoire virtuelle de chacune des tâches MPI correspond à une zone contigüe en mémoire physique.

Lors de l’initialisation, on attribue statiquement la mémoire physique de la machine de façon contigüe à chacune des tâches.

But : adresse virtuelle = adresse physique + offset

Page 32: La machine parallèle MPC1

36

Redistribution de la mémoire (2)

Coûteux lors de l’initialisation

Pas de modification de l’OS

Pas de modification de la libc

s ta c k

tex t

d a ta

M P I ta sk As1

d 1

s

dt

C M E Mslo t

s2

d 2t

v irtu a l p ro cessad d re ss (g cc ) P h y sica l

m em o ry

2 . c o p y in C M E M m em o ry

sta c k

te x t

d a ta

M P I ta sk As1

d 1

P h y sica lm e m o ry

v irtu a l p ro cessad d re ss (g cc )

s2

d 2t

1 . lo c k in g a n d m a p p in g

sta c k

te x t

d a ta

M P I ta sk A

s

dt

C M E Mslo t

v irtu a l p ro cessad d ress (g cc)

P h y sica lm em o ry

3 . u n m a p a n d re m a p

Page 33: La machine parallèle MPC1

37

Etat d’avancement

Une première implémentation de MPI sur MPC résultats encourageants fonctionne avec PUT noyau ou PUT utilisateur

PUT utilisateur mesures à affiner amélioration de la signalisation on a gagné en portabilité

Redistribution de la mémoire pas implémenté et pas testé sur MPI aucune mesure

Page 34: La machine parallèle MPC1

38

Perspectives

Amélioration de PUT utilisateur

on espère passer en dessous des 20 µs de latence

Redistribution de la mémoire

n’améliorera pas la latence

amélioration du débit pour les moyens messages