La machine parallèle MPC1

Post on 20-Mar-2016

29 views 2 download

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

La machine parallèle MPC1

Hardware, protocoles et performances

University P. & M. Curie (PARIS)

Laboratoire d’Informatique de PARIS6

Olivier Glück

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)

4

Architecture matérielle

R3PCI

DDC

R3PCI

DDC

Standard PC running LINUX or FreeBSD

FastHSL boards

Standard PC running LINUX or FreeBSD

5

La carte FastHSL

6

MPC avant

7

MPC maintenant

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

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

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

10

L'écriture distante

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

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)

15

MPI sur MPC (1)

Réseau HSL

Driver FreeBSD ou LINUX

MPI

PUT

Une implémentation de MPICH sur l’API PUT

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

33

PUT en mode utilisateur (2)

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

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

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

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

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