Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parRosemonde Thiery Modifié depuis plus de 10 années
1
Communications dans les grappes hautes performances Raymond Namyst LaBRI Université de Bordeaux I
2
Plan u Technologies matérielles Ethernet, Myrinet, SCI u Interfaces de bas niveau BIP, SISCI, VIA u Interfaces de haut niveau MPI et les communications irrégulières u Interfaces de niveau intermédiaire FM, Madeleine u Vers les grappes hétérogènes…
3
Technologies matérielles Cartes passives, actives, réseaux à capacité dadressage
4
(Fast|Giga)-Ethernet uInterconnexion Hub ou switch uCâblage Cuivre ou fibre optique uLatence ~20 µs uDébit 100 Mb/s et 1Gb/s uNote Compatibilité avec lEthernet classique Hub Switch
5
Ethernet u Cartes passives (sauf Giga-Ethernet) Interfaces : TCP, SBP, GAMMA, VIA, … Network TX reg RX reg Packet Interface PCI Bridge PCI Bridge PCI Bus DMA Memory TX-ring NIC
6
Myrinet uSociété Myricom (C. Seitz) uInterconnexion Switch uCâblage Nappes courtes uCartes équipées dun processeur uLatence 1~2 µs uDébit 1 Gb/s uNote Durée de vie limitée des messages (50 ms) LANai
7
Myrinet u Routage Réseau commuté, routage wormhole u Carte programmable Protocoles de transmission « intelligents » Ù Stratégie adaptée à la taille des messages Ù Déclenchement dinterruptions Network RISC Packet Interface DMA PCI Bridge PCI Bridge PCI Bus LANai SRAM NIC
8
SCI uScalable Coherent Interface Norme IEEE (1993) Société Dolphin uFonctionnement par accès mémoire distants Projections despaces dadressage Machine AMachine B Réseau SCI Mémoire Bus PCI
9
Carte à capacité d addressage BUS PCI TLB Interface paquet Paquet SCI Pci req: addr+ data BUS PCI TLB Interface paquet Paquet SCI Pci req: addr+ data Partie émissionPartie réception
10
Adressage à distance u Projections effectués par le pilote (SISCI) Zones de mémoire physiques souvent spécifiques u Accès mémoire effectués par le processeur Le processeur distant nest pas (forcément) interrompu
11
SCI : mécanisme dadressage Adresse Virtuelle 32 bits MMU Adresse Physique (E/S) Bus dE/S 32 bits 10 bits 18 bits Table de Translation des Adresses 16 bits 30 bits 18 bits Destinataire Réseau
12
30 bits 18 bits Réseau Adresse Physique (E/S) Bus dE/S 32 bits Mémoire SCI : mécanisme dadressage
13
SCI : performances Latence : 2.5 s (écriture de processus à processus) Débit :45 Mo/s Verrou :< 10 s (fetch&add)
14
Interfaces de bas niveau BIP, SISCI, VIA
15
Communications performantes u Comment exploiter les réseaux rapides ? Faible latence Ù Quelques microsecondes Bande passante élevée Ù De lordre du Gb/s u 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
16
Interfaces uInitialisation Réservée au système Uniquement en début de session uTransferts Directs depuis lespace utilisateur Pas dappels systèmes Pas de transitions Transmissions zéro- copie Interface Programme Réseau Système Espace utilisateur Transferts Initialisation
17
Streamline Buffer Protocol uUNH (R. Russell & P. Hatcher) uPrincipe Partage de tampons entre noyau/processus Tampons préformatés (trames ethernet) uDeux jeux de files de tampons : RQ & SQ uPerformances (Linux, P133) Latence : 24 us, débit : ~ 12 Mo/s
18
Basic Interface for Parallelism: BIP uL. Prylli & B. Tourancheau uPrincipe Envoi de message classique (asynchrone) Pas de contrôle de flux Pas de detection derreur uPerformances Latence : 4.8us, débit : 126 Mo/s
19
BIP uFonctionnalités réduites au minimum Ù Messages courts : recopiés à larrivée Ù Messages longs : mode zéro-copie (RDV) u Contrôle de flux minimal Matériel (msgs évaporés au dela de 50ms)
20
Interface Dolphin pour SCI uDeux niveaux : Interface orientée fichiers projetés Interface orientée VIA (cf + loin) uFichiers projetés Utilisation de mmap uSynchronisation Segments spéciaux fetch & add
21
SISCI: principe u Communications Accés mémoire distants Ù Implicites (après projection) Ù Explicites (remote DMA) Support matériel pour une MVP (?) u Performances Ecriture 2 us, lecture 4 us Bande passante 85 Mo/s (difficilement !)
22
SCI : optimisations matérielles uCaches dans la carte : Read Prefetching Write Combining
23
Conséquences u Une Grappe SCI est une NC-NUMA Non-Coherent Non-uniform Memory Arch. Cohérence séquentielle non vérifiée u Plus gênant : ordre des écritures modifié Pb datomicité des transactions PCI Assez inhabituel (?)
24
VIA uVirtual Interface Architecture uTentative de standardisation Beaucoup dindustriels impliqués uCaractéristiques Principe dinterfaces virtuelles Zones de transmission protégées Lectures/Ecritures distantes
25
VIA: Basic Principles uUse the Kernel for Set-Up… …and Get It Out of the Way for Send/Receive! uThe Virtual Interface (VI) Protected Application-Application Channel Memory Directly Accessible by User Process uTarget Environment LANs and SANs at Gigabit Speeds No Reliability of Underlying Media Assumed
26
VI Architecture VI Consumer VI User Agent (libvia) Open, Connect, Map Memory Descriptor Read, Write VI-Capable NIC Sockets, MPI, Legacy, etc. Requests Completed VI C SSS COMPCOMP RRR Doorbells Undetermined VI Kernel Agent (Slow) User-Level (Fast) Host NIC
27
A Virtual Interface VI Consumer VI-Capable NIC Descriptor Send Q Send Doorbell Descriptor Recv Q Receive Doorbell Status
28
Descriptors uDescriptors Contain: Address and Length of Data Buffer Status Fields Memory Protection Information Multiple Segments to Allow Scatter/Gather etc., etc., etc. uA minimum of 45 bytes long Many messages may only be a few bytes...
29
Queues 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
30
Memory Registration uData buffers and descriptors must reside within a region of registered memory Call VipRegisterMemory uPins the specified pages into physical memory uCommunicates the addresses to the NIC To allow DMA I/O from the NIC
31
Ce quil faut retenir u 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é ???
32
Interfaces de haut niveau LA solution ?
33
Bibliothèques uParadigme passage de message Les nœuds se synchronisent et communiquent par messages uDeux instructions de base Sendémission dun message Receiveréception dun message uPoints forts Simple à mettre en oeuvre Permet démuler les autres paradigmes
34
PVM uParallel Virtual Machine Laboratoire National dOak Ridge (Tennessee) 1989 uCaracté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
35
MPI uMessage Passing Interface MPI-Forumv1.0 1994v2.0 1997 uCaractéristiques Un standard, pas une bibliothèque Diverses implémentations ÙMPI-CH ÙLAM-MPI Ù… Supplante PVM Version 2.0 encore peu implémentée
36
MPI répond-t-il aux besoins ? u Implantations efficaces existantes Ù MPICH/BIP, MPICH/SISCI, etc. u 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 ?
37
Transmissions zéro-copie Processus A Processus BRéseau Message Entête Données
38
Transmissions zéro-copie Processus A Processus BRéseau Entête Données
39
Transmissions zéro-copie Processus A Processus BRéseau Entête Données
40
Transmissions zéro-copie Processus A Processus BRéseau Préparation mémoire Entête Données
41
Transmissions zéro-copie Processus A Processus BRéseau Acquittement Entête Données
42
Transmissions zéro-copie Processus A Processus BRéseau Entête Données DMA
43
Transmissions zéro-copie Processus A Processus BRéseau Préparation mémoire Acquittement Message Entête Données DMA
44
Transmissions zéro-copie Processus A Processus BRéseau Préparation mémoire Acquittement Message Entête Données DMA
45
Et la réactivité alors ? u Problèmes Assurer la progression des communications asynchrones Réagir rapidement aux sollicitations extérieures proc réseau
46
Envois asynchrones u Parvient-on vraiment à assurer du recouvrement ? Processus AProcessus B Acquittement MPI_Isend MPI_recv MPI_test
47
Interfaces de niveau intermédiaire Madeleine : principe et interface
48
Madeleine u Interface de communication Efficace et portable u Double objectif Support de multiples paradigmes/modes Support de multiples réseaux simultanément u Proposition Programmation par « contrat » Ù Contrôle du niveau doptimisation Ù Transferts immédiats possibles u Statut Disponible sur BIP, GM, SISCI, VIA, TCP et MPI.
49
u Construction des messages u Gestion des canaux (~ communicators) Choix explicite du dispositif physique Interface mad_begin_packing mad_pack mad_end_packing mad_begin_unpacking mad_unpack mad_end_unpacking
50
Construction des messages uCommandes Mad_pack(cnx, buffer, len, pack_mode, unpack_mode) Mad_unpack(cnx, buffer, len, pack_mode, unpack_mode) uModes démission Send_CHEAPER Send_SAFER Send_LATER uModes de réception Receive_CHEAPER Receive_EXPRESS uContraintes 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
51
Contrat programmeur/interface Send_SAFER/Send_LATER/Send_CHEAPER uContrô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 uSpécification au niveau sémantique Indépendance : service requis / technique sélectionnée
52
É mission Pack Modification End_packing Send_SAFERSend_LATERSend_CHEAPER
53
Structuration des messages Receive_CHEAPER/Receive_EXPRESS uReceive_EXPRESS Réception immédiate impérative Interprétation/extraction du message uReceive_CHEAPER Réception libre du bloc Contenu du message Express
54
Réception Unpack Après Unpack End_unpacking Receive_EXPRESSReceive_CHEAPER Donnée disponibleDisponibilité ??? Donnée disponible
55
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
56
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
57
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
58
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
59
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
60
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
61
Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; Sending sideReceiving side
62
Interfaces de niveau intermédiaire Madeleine : implantation
63
Organisation verticale uUtilisation 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
64
Organisation horizontale uApproche modulaire Module de gestion de tampons (MGT) Module de gestion de protocole (MGP) Module de transmission (MT) Interface Gestion des tampons Gestion de protocole MGT MT Réseau MGP
65
Modules de transmission Thread Réseau Pack Madeleine Interface MGT MT Processus
66
Adaptativité u Sélection du mode de transmission adéquat Interface Gestion des tampons Gestion de protocole Pack ? ?
67
Implementation u Madeleine II a été portée sur : SISCI/SCI BIP/Myrinet MPI VIA TCP SBP
68
Évaluation Environnement de test uGrappe de PC bi-Pentium II 450 MHz, 128 Mo uRéseau Fast-Ethernet uRéseau SISCI/SCI uRéseau BIP/Myrinet Méthode de test uUnidirectionnel Mesure : 1000 émissions + 1 réception Résultat : moyenne sur 5 mesures uBidirectionnel Mesures : 1000 x (émission + réception) Résultat : moyenne sur 5 mesures
69
SISCI/SCI – temps de transfert Test unidirectionnel Taille de paquet (octets) Temps de transfert (µs)
70
SISCI/SCI – débit Test unidirectionnel Taille de paquet (octets) Débit (Mo/s)
71
SISCI/SCI – temps de transfert Test bidirectionnel Taille de paquet (octets) Temps de transfert (µs)
72
SISCI/SCI – débit Test bidirectionnel Taille de paquet (octets) Débit (Mo/s)
73
SISCI/SCI – temps de transfert Packs/messages Taille de paquet (octets) Temps de transfert (µs)
74
SISCI/SCI – débit Packs/messages Taille de paquet (octets) Débit (Mo/s)
75
Interfaces de niveau intermédiaire Gestion du multiplexage
76
Proposition Concept de canal uSimilaire à un communicator MPI uUn canal, cest : Un protocole Une carte dinterface Un ensemble de nœuds Un ensemble de connexions point-à-point
77
Les Canaux uCanal Réseau Ensemble de noeuds Ensemble de connexions point-à-point Noeud 1 Noeud 2 Noeud 3 Noeud 4 TCP SCI
78
Gestion des ressources uProblè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 uSolution Introduire des fonctionnalités de multiplexage
79
Cest quoi le Multiplexage ? uVirtualisation des ressources Idéalement : disposer de « xchannels » ÙUtilisables comme des « channels » ÙDisponibles en quantité arbitraire uArghhh! Et les performances ? Trouver le bon niveau dabstraction Conserver les canaux réels
80
Multiplexage à quel niveau ? uSur-couche au-dessus de Madeleine Ex: abtraction de type « messages actifs » ÙMultiplexage partiel -> pas dentrelacement des packs ÙMultiplexage complet -> contrôle de flux à chaque pack ou recopies à larrivée uContrôle de flux interne à Madeleine A chaque pack Même problème que ci-dessus…
81
Vers les grappes de grappes
82
Objectifs u 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 ! PC/Myrinet PC/SCI Réseau rapide
83
PACX-MPI uMécanismes transparents pour lapplication uTCP/IP est utilisé sur les liaisons inter-grappes uDeux noeuds passerelles sont dédiés sur chaque grappe MPI TCP
84
MPI Internet MPICH-G2 uImplémentation Multi-grappes de MPICH uCommunications intra-grappe MPI uCommunications inter-grappes TCP uCommunications directes (pas de routage) Myrinet SCI
85
Support multi-grappe uExploitation des grappes de grappes Réseaux intra-grappes rapides Liens inter-grappes rapides Hétérogénéité au niveau réseau Réseau à haut débit Réseau hautes performances
86
Principe uCanaux réels Liés à un réseau Ne couvrent pas nécessairement tous les nœuds uCanaux virtuels Couvrent tous les nœuds Contiennent plusieurs canaux réels Myrinet SCI Virtuel
87
Fonctionnement uRetransmission multi-réseau automatique uApproche générique uFonctionnement multi-threadé uRoutes statiques Notion de MTU Nœud passerelle MémoireBus PCI Myrinet LANai SCI
88
Préservation du débit uPipeline Réceptions et réémissions simultanées Une seule copie Même tampon pour réception et retransmission Tampon 1 Tampon 2 Réception Emission LANai
89
Intégration uModule de transmission générique uLimitation du code traversé sur les passerelles Interface Gestion des tampons Gestion de protocole MGT MT Réseau MT générique
90
Module de retransmission Thread Réseau 2 Madeleine MGTMT Processus MT Interface Threads Réseau 1
91
Tests de performances Ping-pong entre 2 machines séparées par une passerelle SCI Myrinet 321
92
Multi-grappes Myrinet SCI
93
Évaluation
94
Intégration des threads et des communications Réactivité des nœuds aux E/S
95
Progression des communications u Problème Comment assurer la progression des communications ? proc réseau
96
Scrutation et interruptions u 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 u Les interruptions sont nécessaires Ù Réactivité Problème Ù Outils de synchronisation interrupt safe ?
97
Support de lordonnanceur u Ordonnanceur = serveur de scrutation Choix de la méthode daccès (scrutation/intr.) u Support pour la scrutation Fréquence contrôlée Factorisation des scrutations multiples u Support pour les interruptions Utilisation possible des activations Verrous spécifiques « interrupt-safe »
98
Scrutation par lordonnanceur Ordonnanceur des threads Création dune catégorie de polling (ex: MPI), assignation dune fréquence et enregistrement de callbacks. Polling jobs queue MPI MPI_Isend Marcel_poll Chaque thread candidat à une opération de polling adresse une requête à lordonnanceur et se bloque. MPI_Irecv Marcel_poll callback Régulièrement, lordonnanceur appelle la fonction de scrutation définie par lutilisateur... Polling( )
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.