La machine parallèle MPC1

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

description

La machine parallèle MPC1. Hardware, protocoles et performances Université 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

Université 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ôteProcess

Memory

Process

Memory

Sender Receiver

Process

Memory

Kernel

Memory

I/O

Memory

I/O

Memory

Kernel

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)

Th

rou

gh

pu

t (M

bit

/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

contiguës 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 o ry

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 data

SHORT : 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écepteur

REQ

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 : SHORT

donnéesutilisateur

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 : 29 µs Throughput : 490 Mbit/s

Throughput : MPI-MPC P350

0

100

200

300

400

500

600

Size (byte)

Th

rou

gh

pu

t (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

4

3276

8

6553

6

1310

72

2621

44

Size (bytes)

Th

rou

gh

pu

t (b

as

e 2

)

MPI-T3E / Proc 300

MPI-MPC / P350 / FreeBSD

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

MPC Latency : 29 µ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 65536

Size (bytes)

Th

rou

gh

pu

t (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

sta 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 ress (g cc ) P h y sica l

m em o ry

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

sta c k

tex t

d a ta

M P I ta sk As1

d 1

P h y sica lm em o ry

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

s2

d 2t

1 . lo ck in g a n d m a p p in g

sta c k

tex 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 s ica lm em o ry

3 . u n m a p a n d rem 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

avec MPI

Redistribution de la mémoire

n’améliorera pas la latence

amélioration du débit pour les moyens messages