La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Communications dans les grappes hautes performances Raymond Namyst LaBRI Université de Bordeaux I.

Présentations similaires


Présentation au sujet: "Communications dans les grappes hautes performances Raymond Namyst LaBRI Université de Bordeaux I."— Transcription de la présentation:

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


Télécharger ppt "Communications dans les grappes hautes performances Raymond Namyst LaBRI Université de Bordeaux I."

Présentations similaires


Annonces Google