Title: Communications dans les grappes hautes performances
1Communications dans les grappes hautes
performances
- Raymond Namyst
- LaBRI
- Université de Bordeaux I
2Plan
- Technologies matérielles
- Ethernet, Myrinet, SCI
- Interfaces de bas niveau
- BIP, SISCI, VIA
- Interfaces de haut niveau
- MPI et les communications irrégulières
- Interfaces de niveau intermédiaire
- FM, Madeleine
- Vers les grappes hétérogènes
3Technologiesmatérielles
Cartes passives, actives,réseaux à capacité
dadressage
4(FastGiga)-Ethernet
- Interconnexion
- Hub ou switch
- Câblage
- Cuivre ou fibre optique
- Latence
- 20 µs
- Débit
- 100 Mb/s et 1Gb/s
- Note
- Compatibilité avec lEthernet classique
Hub
Switch
5Ethernet
- Cartes passives (sauf Giga-Ethernet)
- Interfaces TCP, SBP, GAMMA, VIA,
Memory
TX-ring
DMA
TX reg RX reg
Network
PCI Bus
PCI Bridge
Packet Interface
NIC
6Myrinet
- Société Myricom (C. Seitz)
- Interconnexion
- Switch
- Câblage
- Nappes courtes
- Cartes équipées dun processeur
- Latence
- 12 µs
- Débit
- 1 Gb/s
- Note
- Durée de vie limitée des messages (50 ms)
7Myrinet
- Routage
- Réseau commuté, routage wormhole
- Carte programmable
- Protocoles de transmission intelligents
- Stratégie adaptée à la taille des messages
- Déclenchement dinterruptions
DMA
SRAM
Network
Packet Interface
PCI Bus
PCI Bridge
RISC
LANai
NIC
8SCI
- Scalable Coherent Interface
- Norme IEEE (1993)
- Société Dolphin
- Fonctionnement par accès mémoire distants
- Projections despaces dadressage
Réseau SCI
Mémoire
Mémoire
Bus PCI
Bus PCI
Machine A
Machine B
9Carte à capacité d addressage
BUS PCI
BUS PCI
Pci req addrdata
Pci req addrdata
Interface paquet
Interface paquet
Paquet SCI
Paquet SCI
Partie émission
Partie réception
10Adressage à distance
- Projections effectués par le pilote (SISCI)
- Zones de mémoire physiques souvent spécifiques
- Accès mémoire effectués par le processeur
- Le processeur distant nest pas (forcément)
interrompu
11SCI mécanisme dadressage
Adresse Virtuelle
32 bits
MMU
Adresse Physique (E/S)
32 bits
Bus dE/S
10 bits
18 bits
Table de Translation des Adresses
30 bits
16 bits
18 bits
Destinataire
Réseau
12SCI mécanisme dadressage
Réseau
30 bits
18 bits
Adresse Physique (E/S)
32 bits
Bus dE/S
Mémoire
13SCI performances
- Latence 2.5 ms (écriture de processus à
processus) - Débit 45 Mo/s
- Verrou lt 10 ms (fetchadd)
14Interfaces de bas niveau
BIP, SISCI, VIA
15Communications performantes
- Comment exploiter les réseaux rapides ?
- Faible latence
- Quelques microsecondes
- Bande passante élevée
- De lordre du Gb/s
- Tendance actuelle
- Interaction directe avec la carte réseau
- Communication en mode utilisateur
- Transmissions zéro-copie
- La carte récupère/dépose les données au bon
endroit
16Interfaces
- Initialisation
- Réservée au système
- Uniquement en début de session
- Transferts
- Directs depuis lespace utilisateur
- Pas dappels systèmes
- Pas de transitions
- Transmissions zéro-copie
17Streamline Buffer Protocol
- UNH (R. Russell P. Hatcher)
- Principe
- Partage de tampons entre noyau/processus
- Tampons préformatés (trames ethernet)
- Deux jeux de files de tampons RQ SQ
- Performances (Linux, P133)
- Latence 24 us, débit 12 Mo/s
18Basic Interface for Parallelism BIP
- L. Prylli B. Tourancheau
- Principe
- Envoi de message classique (asynchrone)
- Pas de contrôle de flux
- Pas de detection derreur
- Performances
- Latence 4.8us, débit 126 Mo/s
19BIP
- Fonctionnalités réduites au minimum
- Messages courts recopiés à larrivée
- Messages longs mode zéro-copie (RDV)
- Contrôle de flux minimal
- Matériel (msgs évaporés au dela de 50ms)
20Interface Dolphin pour SCI
- Deux niveaux
- Interface orientée fichiers projetés
- Interface orientée VIA (cf loin)
- Fichiers projetés
- Utilisation de mmap
- Synchronisation
- Segments spéciaux fetch add
21SISCI principe
- Communications
- Accés mémoire distants
- Implicites (après projection)
- Explicites (remote DMA)
- Support matériel pour une MVP (?)
- Performances
- Ecriture ? 2 us, lecture ? 4 us
- Bande passante ? 85 Mo/s (difficilement !)
22SCI optimisations matérielles
- Caches dans la carte
- Read Prefetching
- Write Combining
23Conséquences
- Une Grappe SCI est une NC-NUMA
- Non-Coherent Non-uniform Memory Arch.
- Cohérence séquentielle non vérifiée
- Plus gênant ordre des écritures modifié
- Pb datomicité des transactions PCI
- Assez inhabituel (?)
24VIA
- Virtual Interface Architecture
- Tentative de standardisation
- Beaucoup dindustriels impliqués
- Caractéristiques
- Principe dinterfaces virtuelles
- Zones de transmission protégées
- Lectures/Ecritures distantes
25VIA Basic Principles
- Use the Kernel for Set-Upand Get It Out of the
Way for Send/Receive! - The Virtual Interface (VI)
- Protected Application-Application Channel
- Memory Directly Accessible by User Process
- Target Environment
- LANs and SANs at Gigabit Speeds
- No Reliability of Underlying Media Assumed
26VI Architecture
VI Consumer
Host
VI User Agent (libvia)
VI Kernel Agent (Slow)
User-Level (Fast)
Descriptor Read, Write
Open, Connect, Map Memory
Doorbells
Undetermined
RequestsCompleted
NIC
VI-Capable NIC
27A Virtual Interface
VI Consumer
Send Q
Recv Q
Send Doorbell
Receive Doorbell
Descriptor
Descriptor
Descriptor
Descriptor
Status
Status
VI-Capable NIC
28Descriptors
- Descriptors Contain
- Address and Length of Data Buffer
- Status Fields
- Memory Protection Information
- Multiple Segments to Allow Scatter/Gather
- etc., etc., etc.
- A minimum of 45 bytes long
- Many messages may only be a few bytes...
29Queues and Doorbells
Queues of Descriptors Transmit and
Receive Completions and Errors May Reside on
Host or NIC (Unspecified) Doorbells Addresses
of Descriptors, Small and Fast Allows NIC to Use
Descriptors Future VIA-NICs May Have Hardware
Support
30Memory Registration
- Data buffers and descriptors must reside within
a region of registered memory - Call VipRegisterMemory
- Pins the specified pages into physical memory
- Communicates the addresses to the NIC
- To allow DMA I/O from the NIC
31Ce quil faut retenir
- Interfaces de très bas niveau !
- Fonctionnalités proches du matériel
- Grande efficacité
- Paradigmes très différents
- Approche non généralisable
- Pas de consensus
- Tentative de standard VIA
- Virtual Interface Architecture (Intel, Microsoft,
Compaq) - But dénominateur commun
- Bas niveau, peu adapté à certaines technologies
- Portabilité ???
32Interfaces de haut niveau
LA solution ?
33Bibliothèques
- Paradigme passage de message
- Les nœuds se synchronisent et communiquent par
messages - Deux instructions de base
- Send émission dun message
- Receive réception dun message
- Points forts
- Simple à mettre en oeuvre
- Permet démuler les autres paradigmes
34PVM
- Parallel Virtual Machine
- Laboratoire National dOak Ridge (Tennessee)
- 1989
- Caractéristiques
- Notion de machine virtuelle
- Ensemble de machines physiques
- Construction préalable au lancement de la session
- Disponibilité très large
- Réseaux
- UDP protocole de réémission
- Support de lhétérogénéité
- XDR
35MPI
- Message Passing Interface
- MPI-Forum v1.0 1994 v2.0 1997
- Caractéristiques
- Un standard, pas une bibliothèque
- Diverses implémentations
- MPI-CH
- LAM-MPI
-
- Supplante PVM
- Version 2.0 encore peu implémentée
36MPI répond-t-il aux besoins ?
- Implantations efficaces existantes
- MPICH/BIP, MPICH/SISCI, etc.
- Quid des schémas de communication de la vraie
vie ? - Messages dont le contenu est inconnu a priori
par le récepteur - Transmissions zéro-copie ?
- Messages asynchrones
- Recouvrement des communications ?
- Accès mémoire distants (PUT/GET)
- Temps de réponse ?
37Transmissions zéro-copie
Processus A
Processus B
Réseau
38Transmissions zéro-copie
Processus A
Processus B
Réseau
39Transmissions zéro-copie
Processus A
Processus B
Réseau
40Transmissions zéro-copie
Processus A
Processus B
Réseau
41Transmissions zéro-copie
Processus A
Processus B
Réseau
42Transmissions zéro-copie
Processus A
Processus B
Réseau
43Transmissions zéro-copie
Processus A
Processus B
Réseau
44Transmissions zéro-copie
Processus A
Processus B
Réseau
45Et la réactivité alors ?
- Problèmes
- Assurer la progression des communications
asynchrones - Réagir rapidement aux sollicitations extérieures
réseau
46Envois asynchrones
- Parvient-on vraiment à assurer du recouvrement ?
MPI_Isend
MPI_recv
MPI_test
Processus A
Processus B
47Interfaces deniveau intermédiaire
Madeleine principe et interface
48Madeleine
- Interface de communication
- Efficace et portable
- Double objectif
- Support de multiples paradigmes/modes
- Support de multiples réseaux simultanément
- Proposition
- Programmation par contrat
- Contrôle du niveau doptimisation
- Transferts immédiats possibles
- Statut
- Disponible sur BIP, GM, SISCI, VIA, TCP et MPI.
49Interface
- Construction des messages
- Gestion des canaux ( communicators)
- Choix explicite du dispositif physique
mad_begin_packing
mad_pack
mad_end_packing
mad_begin_unpacking
mad_unpack
mad_end_unpacking
50Construction des messages
- Commandes
- Mad_pack(cnx, buffer, len, pack_mode,
unpack_mode) - Mad_unpack(cnx, buffer, len, pack_mode,
unpack_mode) - Modes démission
- Send_CHEAPER
- Send_SAFER
- Send_LATER
- Modes de réception
- Receive_CHEAPER
- Receive_EXPRESS
- Contraintes dutilisation
- Séquences pack/unpack strictement symétriques
- Triplets (len, pack_mode, unpack_mode) identiques
en émission et en réception - Cohérence des données
51Contrat programmeur/interface
- Send_SAFER/Send_LATER/Send_CHEAPER
- Contrôle du transfert des données
- Latitude doptimisation
- Engagement du programmeur
- Intégrité des données
- Services particuliers
- Émission différée
- Réutilisation de tampons
- Spécification au niveau sémantique
- Indépendance service requis / technique
sélectionnée
52Émission
Send_SAFER
Send_LATER
Send_CHEAPER
Pack
Modification
?
End_packing
53Structuration des messages
- Receive_CHEAPER/Receive_EXPRESS
- Receive_EXPRESS
- Réception immédiate impérative
- Interprétation/extraction du message
- Receive_CHEAPER
- Réception libre du bloc
- Contenu du message
54Réception
Receive_EXPRESS
Receive_CHEAPER
Unpack
Après Unpack
Donnée disponible
Disponibilité ???
End_unpacking
Donnée disponible
55Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
56Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
57Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
58Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
59Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
60Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
61Exemple
Sending side
Receiving side
int n
int n
char s NULL
char s "Hello, World !"
p_mad_connection_t cnx
p_mad_connection_t cnx
cnx mad_begin_unpacking(channel)
cnx mad_begin_packing(channel, dest)
n strlen(s) 1
mad_unpack(cnx, n, sizeof(int),
mad_pack(cnx, n, sizeof(int),
send_CHEAPER,receive_EXPRESS)
send_CHEAPER, receive_EXPRESS)
s malloc(n)
mad_unpack(cnx, s, n,
mad_pack(cnx, s, n,
send_CHEAPER,receive_CHEAPER)
send_CHEAPER, receive_CHEAPER)
mad_end_unpacking(cnx)
mad_end_packing(cnx)
62Interfaces deniveau intermédiaire
Madeleine implantation
63Organisation verticale
- Utilisation du modèle traditionnel à deux couches
- Gestion des tampons
- Factorisation du code de traitements de données
- Abstraction du matériel
Interface
Gestion des tampons
Gestion de protocole
Réseau
64Organisation horizontale
- Approche modulaire
- Module de gestion de tampons (MGT)
- Module de gestion de protocole (MGP)
- Module de transmission (MT)
Interface
MGT
MGT
Gestion des tampons
MGP
MGP
MT
MT
MT
Gestion de protocole
Réseau
65Modules de transmission
Madeleine
Interface
MGT
MT
MGT
MT
Thread
Réseau
Processus
66Adaptativité
- Sélection du mode de transmission adéquat
Interface
Pack
Gestion des tampons
?
Gestion de protocole
67Implementation
- Madeleine II a été portée sur
- SISCI/SCI
- BIP/Myrinet
- MPI
- VIA
- TCP
- SBP
68Évaluation
- Environnement de test
- Grappe de PC bi-Pentium II 450 MHz, 128 Mo
- Réseau Fast-Ethernet
- Réseau SISCI/SCI
- Réseau BIP/Myrinet
- Méthode de test
- Unidirectionnel
- Mesure 1000 émissions 1 réception
- Résultat moyenne sur 5 mesures
- Bidirectionnel
- Mesures 1000 x (émission réception)
- Résultat moyenne sur 5 mesures
69SISCI/SCI temps de transfertTest
unidirectionnel
Temps de transfert (µs)
Taille de paquet (octets)
70SISCI/SCI débitTest unidirectionnel
Débit (Mo/s)
Taille de paquet (octets)
71SISCI/SCI temps de transfertTest bidirectionnel
Temps de transfert (µs)
Taille de paquet (octets)
72SISCI/SCI débitTest bidirectionnel
Débit (Mo/s)
Taille de paquet (octets)
73SISCI/SCI temps de transfertPacks/messages
Temps de transfert (µs)
Taille de paquet (octets)
74SISCI/SCI débitPacks/messages
Débit (Mo/s)
Taille de paquet (octets)
75Interfaces deniveau intermédiaire
Gestion du multiplexage
76Proposition
- Concept de canal
- Similaire à un communicator MPI
- Un canal, cest
- Un protocole
- Une carte dinterface
- Un ensemble de nœuds
- Un ensemble de connexions point-à-point
77Les Canaux
- Canal
- Réseau
- Ensemble de noeuds
- Ensemble de connexions point-à-point
78Gestion des ressources
- Problème
- Chaque canal consomme des ressources réseau
- Tags BIP, descripteurs SCI, descripteurs TCP
- Le nombre de ressources peut dépendre du nombre
de nœuds ! - Segments de mémoire partagée SCI
- Solution
- Introduire des fonctionnalités de multiplexage
79Cest quoi le Multiplexage ?
- Virtualisation des ressources
- Idéalement disposer de xchannels
- Utilisables comme des channels
- Disponibles en quantité arbitraire
- Arghhh! Et les performances ?
- Trouver le bon niveau dabstraction
- Conserver les canaux réels
80Multiplexage à quel niveau ?
- Sur-couche au-dessus de Madeleine
- Ex abtraction de type messages actifs
- Multiplexage partiel -gt pas dentrelacement des
packs - Multiplexage complet -gt contrôle de flux à chaque
pack ou recopies à larrivée - Contrôle de flux interne à Madeleine
- A chaque pack
- Même problème que ci-dessus
81Vers les grappes degrappes
82Objectifs
- Support des grappes de grappes
- Communications hétérogènes
- Transparence
- Efficacité du routage sur les machines
passerelles - Minimisation des copies
- Maintien du débit par techniques de pipeline
- Utilisation des threads !
Réseau rapide
PC/Myrinet
83PACX-MPI
- Mécanismes transparents pour lapplication
- TCP/IP est utilisé sur les liaisons inter-grappes
- Deux noeuds passerelles sont dédiés sur chaque
grappe
TCP
MPI
MPI
TCP
84MPICH-G2
- Implémentation Multi-grappes de MPICH
- Communications intra-grappe
- MPI
- Communications inter-grappes
- TCP
- Communications directes (pas de routage)
Myrinet
Internet
MPI
MPI
SCI
85Support multi-grappe
- Exploitation des grappes de grappes
- Réseaux intra-grappes rapides
- Liens inter-grappes rapides
- Hétérogénéité au niveau réseau
86Principe
- Canaux réels
- Liés à un réseau
- Ne couvrent pas nécessairement tous les nœuds
- Canaux virtuels
- Couvrent tous les nœuds
- Contiennent plusieurs canaux réels
87Fonctionnement
- Retransmission multi-réseau automatique
- Approche générique
- Fonctionnement multi-threadé
- Routes statiques
- Notion de MTU
88Préservation du débit
- Une seule copie
- Même tampon pour réception et retransmission
LANai
- Pipeline
- Réceptions et réémissions simultanées
89Intégration
- Module de transmission générique
- Limitation du code traversé sur les passerelles
Interface
MGT
MGT
Gestion des tampons
MT générique
MT
MT
MT
Gestion de protocole
Réseau
90Module de retransmission
Madeleine
MT
Interface
MGT
MT
Réseau 1
MT
Thread
Threads
Réseau 2
Processus
91Tests de performances
- Ping-pong entre 2 machines séparées par une
passerelle
3
2
1
Myrinet
SCI
92Multi-grappes
93Évaluation
94Intégration des threadset des communications
Réactivité des nœuds aux E/S
95Progression des communications
- Problème
- Comment assurer la progression des communications
?
réseau
96Scrutation et interruptions
- La scrutation est nécessaire
- API réseau ne fournissant pas dappels bloquants
- OS ne fournissant pas dactivations
- Problème
- Fréquence difficile à assurer
- Coûteux en présence de multiple pollers
- Les interruptions sont nécessaires
- Réactivité
- Problème
- Outils de synchronisation interrupt safe ?
97Support de lordonnanceur
- Ordonnanceur serveur de scrutation
- Choix de la méthode daccès (scrutation/intr.)
- Support pour la scrutation
- Fréquence contrôlée
- Factorisation des scrutations multiples
- Support pour les interruptions
- Utilisation possible des activations
- Verrous spécifiques interrupt-safe
98Scrutation par lordonnanceur
? Création dune catégoriede polling (ex MPI),
assignation dune fréquence et enregistrement de
callbacks.
Polling jobsqueue
? Régulièrement, lordonnanceur appelle la
fonction de scrutation définie par
lutilisateur...
Ordonnanceur
des threads