Architectures de calcul distribuées Le point de vue des communications
Olivier Aumage
Projet RuntimeINRIA - LaBRI
Le calcul hautes performances distribué
Objectif Dépasser le rythme d’évolution de la puissance
des machines de calcul
Techniques Matérielles
Multiplication des unités de traitement Logicielles
Environnements de programmation distribuée
Introduction
Évolution du domaine
Matériel Diminution des travaux sur la conception de supercalculateurs Tendance à une simplification des solutions matérielles
Diffusion des grappes de stations Utilisation de composants standards
Logiciel Développement d’outils d’aide à la programmation distribuée
> mpirun> mpirun
Architectures en grappes
Caractéristiques
Un ensemble de machines Des PC du commerce
Un réseau classique Lent Administration Services
Un réseau rapide Faible latence Débit élevé Applications
Réseau rapide
Réseau lent GrappeGrappe
Trois modèles
Environnements de programmation Échange de messages
PVM, MPI Invocation de services
RPC SUN, OVM, PM2, etc.
RSR Nexus
JAVA RMI CORBA
Mémoire virtuellement partagée TreadMarks, DSMThreads, DSM-PM2
Coexistance de fait
?
!
Problématique de recherche
Interfaçage avec les technologies de communication ?
RéseauRéseau
Environnementde programmationEnvironnementde programmation
Support de communicationSupport de communication
Échange de messages
Invocation de services(RPC, RMI)
?
ProcessusapplicatifsProcessusapplicatifs
Ethernet Myrinet SCI Giganet Infiniband
Mémoire virtuellement
partagée(DSM)
Caractéristiques recherchées
Une interface de communication générique
Neutralité Indépendance par rapport aux modèles des environnements cibles
Échange de messages Invocation de services: RPC, RMI Mémoire virtuellement partagée: DSM
Portabilité Indépendance par rapport au matériel
Architecture Réseau
Efficacité Performances intrinsèques
Latence, débit, réactivité Performances applicatives
Solutions disponibles
Interfaces de haut niveau ?
Exemples Standard MPI
Qualités Portabilité, normalisation Richesse fonctionnelle Efficacité
Interface inadaptée aux schémas de communication complexes Description des relations entre les données d’un même message ? Problème d’expressivité
Exemple de problème
Invocation de service à distance Requête
Un entête : descripteur du service Un corps : argument(s) du service
Première option – deux messages
ConnexionMPI
MessageMPI
En-tête
En-tête
Message MPI
Corps
Requête
Corps
En-tête
En-tête
Corps
Client Serveur
Corps
Exemple de problème
Invocation de service à distance Seconde option – une copie
Dans les deux cas, l’interface MPI n’est pas assez générale
ServeurClient
En-tête
Corps
Requête
Corps
En-tête
ConnexionMPI
MessageMPI
Corps
En-tête
Copie
Corps
En-tête
Corps
Solutions disponibles (suite)
Interfaces de bas niveau ?
Exemples BIP, GAMMA, GM, SISCI, VIA
Qualités Efficacité Exploitation du potentiel matériel
Dépendance du matériel Niveau d’abstraction limité
Développements plus complexes Programmation directe peu réutilisable
Pérennité des développements ?
Solutions disponibles (fin)
Interfaces intermédiaires ?
Exemples Nexus, Active Messages, Fast Messages
Qualités Abstraction Efficacité Portabilité relative
Neutralité ? Expressivité ? Modèle de type messages actifs Traitements supplémentaires non indispensables Problème d’approche
Objectif
Proposition d’un support générique des communications de niveau intermédiaire
Indépendance par rapport aux environnements de programmationModèle de programmation neutre
Indépendance par rapport aux technologies de communicationPortabilité des performances
Env 1 Env 2 Env 3 Env n
Rés 1 Rés 2 Rés 3 Rés m
Env 1 Env 2 Env 3 Env n
Rés 1 Rés 2 Rés 3 Rés m
?
Objectif
Répartition rationnelle des tâches
Environnementde
programmation
Interfacede niveau
intermédiaire
Interfacede basniveau
Réseau
Application
Pile logicielle
Modèle
Abstraction
Contrôle du matériel
Madeleine
Un support de communication pour grappes et grilles légères
Caractéristiques
Interface abstraite
Programmation par contrat Spécification de contraintes Latitude d’optimisation
Support logiciel actif Optimisation dynamique Adaptativité Transparence
Interface
Notions
Connexion Liaison point à point unidirectionnelle Ordonnancement FIFO
Canal Graphe (complet) de connexions Unité de multiplexage Virtualisation d’un réseau
Connexion
Processus
Canal
Modèle de communication
Caractéristiques
Modèle Échange de messages Construction incrémentale des messages
Expressivité Contrôle des blocs de données par drapeaux Notion de contrat programmeur/interface
Express
Primitives
Commandes essentielles
Émission mad_begin_packing mad_pack … mad_pack mad_end_packing
Réception mad_begin_unpacking mad_unpack … mad_unpack mad_end_unpacking
Construction 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 d’utilisation 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
Émission
Pack
Modification
End_packing
Send_SAFER Send_LATER Send_CHEAPER
Contrat programmeur/interface
Send_SAFER / Send_LATER / Send_CHEAPER
Contrôle du transfert des données Latitude d’optimisation
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
Réception
Unpack
Après Unpack
End_unpacking
Receive_EXPRESS Receive_CHEAPER
Donnée disponible Disponibilité ???
Donnée disponible
Structuration 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
Express
Organisation
Utilisation d’un modèle à deux couches Gestion des tampons
Factorisation du code de traitements de données
Abstraction du matériel
Approche modulaire Module de gestion de tampons (MGT) Module de gestion de protocole (MGP) Module de transmission (MT)
Interface
Gestion des
tampons
Gestionde
protocole
MGT MGT
MT MT MT
Réseau
MGP MGP
Modules de transmission
Thread
Réseau
Pack
Madeleine
Interface MGT
MGT
MT
MT
Processus
Mise en œuvre
Chiffres et caractéristiques
58 000 lignes de code source C 39 000 pour Madeleine 134 fichiers source
Réseaux TCP, VRP, GM, SISCI, BIP VIA, UDP, MPI, SBP
Diffusion Licence GPL
Disponibilité
Linux IA32, Alpha, Sparc, PowerPC
Solaris IA32, Sparc
MacOS/X G4
Aix PowerPC
Windows NT IA32
Mesures – première partie
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
Mesures : 1000 x (émission + réception) Résultat : ½ x moyenne sur 5 mesures
SISCI/SCI – temps de transfert
1
10
100
1000
10000
100000
Mad/ SISCI
SISCI
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
SISCI/SCI – débit
0,1
1
10
100
Mad/ SISCI
SISCI
Taille de paquet (octets)
Déb
it
(Mo/
s)
SISCI/SCI – temps de transfertPacks/messages
1
10
100
1000
10000
100000
Mad/ SISCI
2 msgs
2 packs
4 msgs
4 packs
8 msgs
8 packs
16 msgs
16 packs
32 msgs
32 packs
64 msgs
64 packs
128 msgs
128 packs
256 msgs
256 packs
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
SISCI/SCI – débitPacks/messages
Taille de paquet (octets)
Déb
it
(Mo/
s)
0,1
1
10
100
Mad/ SISCI
2 msgs
2 packs
4 msgs
4 packs
8 msgs
8 packs
16 msgs
16 packs
32 msgs
32 packs
64 msgs
64 packs
128 msgs
128 packs
256 msgs
256 packs
Mesures – seconde partie
Environnement de test
Grappe de PC bi-Pentium IV HT 2.66 GHz, 1 Go Réseau Giga-Ethernet Réseau SISCI/SCI Réseau GM/Myrinet
Méthode de test
Mesures : 1000 x (émission + réception) Résultat : ½ x moyenne sur 5 mesures
Temps de transfert
1
10
100
1000
10000
Mad/ SISCI
Mad/ GM
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
Débit
0,1
1
10
100
1000
Mad/ SISCI
Mad/ GM
Taille de paquet (octets)
Déb
it
(Mo/
s)
Et les grilles ?
Passage à l’échelle
Les grilles
Principe
Une grille Une machine Une interconnexion de grilles
Mise en commun des ressources Thème stratégique
Un des « défis » de l’INRIA France
Paris, Lyon, Rennes, Grenoble, etc. Etats-Unis, Japon, Europe, etc.
Grilles
Contexte d’exécution maîtrisableMadeleine multi-grappes
Support 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
Réseau à haut débitRéseau hautes
performancesRéseau hautes performances
Principe
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
MyrinetSCI
Virtuel
Intégration
Module de transmission générique Limitation du code traversé sur les passerelles
Interface
Gestion des
tampons
Gestionde
protocole
MGT MGT
MT MT MT
Réseau
MT générique
Module de retransmission
Thread
Réseau 2
Madeleine
MGT MT
MT
Processus
MTInterface
Threads
Réseau 1
Préservation du débit
Pipeline Réception et ré-émission simultanée avec 2 tampons
Une copie Même tampon pour la réception et la ré-émission
Tampon 1
Tampon 2
Réception
Ré-émission
LANai
Déploiement
Démarrage de session – module Léonie
Sessions Flexibilité
Configurations multi-grappes Lancement unifié
Déploiement en rafale Extensibilité
Support pour lanceurs optimisés
Réseau Constructions des tables d’information
Répertoire des processus Tables de routages des canaux virtuels
Ordonnancement Initialisation des cartes, ouverture des canaux
Madeleine
Léonie
Connexions virtuelles – temps de transfertSISCI+BIP
10
100
1000
10000
100000
BIP+SISCI
SISCI+BIP
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
Myrinet
SCI
Connexions virtuelles – débitSISCI+BIP
Taille de paquet (octets)
Déb
it
(Mo/
s)
0,1
1
10
100
4 16 64256
10244096
16384
65536
262144
1048576
BIP+SISCI
SISCI+BIP
API MPIInterface générique : communications pt à pt, communications collectives, construction de groupes
Interface de périphérique abstraite (ADI)Interface générique : gestion des types de données, gestion des files de requêtes
SMP_PLUG
Comms. locales
CH_SELF
Boucle locale
Madeleine
CH_MADCommunicationsBoucles de scrutationProtocoles internes MPICH
CommunicationsSupport multi-protocole
SBPTCP UDP BIP MPIVIASISCI
MPICH/Madeleine
MPICH/Mad/SCI – temps de transfert
1
10
100
1000
10000
100000
Mad
MPICH/ Mad
SCI-MPICH
SCA MPI
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
MPICH/Mad/SCI – débit
0,1
1
10
100
Mad
MPICH/ Mad
SCI-MPICH
SCA MPI
Taille de paquet (octets)
Déb
it
(Mo/
s)
ACI « GRID RMI »
VTHDVTHD Myrinet SCI …
Madeleine Marcel
PadicoTM
MPI
OpenCCM ProActivePDC
Do!
DSM MomeCORBA
Java VM
GK
PaCO++
Simulation Code Coupling C3D Plants growing
Application
MPI JVMORB
MarcelMadeleineCommunicationsSupport multi-protocole
Circuit VSock
Padico Core
Padico Task Manager
Gestionnaire Padicomicro-noyaude threads
Module Net Access
SBPTCP UDP BIP MPIVIASISCI
Padico
Padico
Padico – temps de transfert
1
10
100
1000
10000
Madeleine
Vsock
MPI
CORBA
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
Padico – débit
0,01
0,1
1
10
100
1000
Madeleine
Vsock
MPI
Corba
Java
Taille de paquet (octets)
Déb
it
(Mo/
s)
Diffusion
Projets externes
Projet Hyperion Machine virtuelle JAVA distribuée P. Hatcher University of New Hampshire, Durham, USA NSF/INRIA, équipe étrangère associée à l‘INRIA
Padico Support exécutif multi-environnements Alexandre Denis, Christian Pérez, Thierry Priol Projet Paris, IRISA, Rennes ACI GRID RMI
Diffusion
Projets internes
PM2, DSM-PM2
MPICH/Madeleine Guillaume Mercier, Loïc Prylli
Global Arrays/Madeleine Nicolas Déjean Collaboration avec J. Nieplocha (Pacific Northwest National Lab.) Application NWChem
Chimie quantique Code mixte C+Fortran, 1M de lignes
Nexus/Madeleine Alexandre Denis
Bibliothèque de communication Madeleine
Eléments clés
Support de communication unificateur Interface abstraite Programmation par contrat Architecture modulaire adaptative Optimisation dynamique Prise en charge multi-grappe transparente
Grilles
Contexte d’exécution dynamique Le projet Ibis
vrije Universiteit
Projet IbisVrije Universiteit, Amsterdam
Les grilles - suite
Principe
Une grille Une machine Une interconnexion de grilles
Analogie avec le courant électrique
Puissance de traitement utilisée sans savoir d’où elle vient
Application
Grille
Ibis
Idées Approche centrée sur Java
Portabilité inhérente supérieure à une compilation native “Write once, run everywhere”
Application plus support en Java
Environnement de programmation Calcul hautes performances distribué Grilles hétérogènes Haut niveau Efficacité
Optimisations “sur demande” Réseaux rapides
Localisation du projet
Groupe Orca – Henri Bal
Équipe computer systems (A.Tanenbaum) Vrije Universiteit, Amsterdam
Ibis – défis
Ressources distribuées
Recensement Exploration Allocation Contrôle Exploitation
En Java
Architecture du projet
Application
RMI GMI RepMI Satin
Couche de portabilité Ibis (IPL)
ExploitationCommunication
ContrôleObservation
grille
ExplorationDécouvertetopologie
RecensementService
d’information
TCP, UDP, GMPanda, MPI
NWS
AllocationGestion
des ressources
TopoMon GRAM GIS
Les communications
Modèle de base Échange de messages Configuration ouverte
TCP Ibis Net Ibis
Notions Port de réception
Accepte des connexions d’un ou plusieurs ports d’émission Sérialise les réceptions de messages
Port d’émission Peut être connecté à un ou plusieurs ports de réception Transmet chaque message à tous les ports auquel il est connecté
Interface
Échange de message en Java
Types natifs Octets Valeur booléenne Caractères Entiers, courts, médians, longs Flottants courts, longs
Tableaux Tableaux d’éléments de type natif
Efficacité Sous-tableaux
Tableaux d’objets
Objets Plusieurs schémas de sérialisation
Modules de communication
Implémentations
TCP Ibis Panda Ibis
Application
RMI GMI RepMI Satin
Serialisation / Communication
TCP Ibis Panda Ibis
Panda, MPI
Couche de portabilité Ibis (IPL)
TCP
Limitations
TCP Ibis - mise en œuvre de référence TCP « cablé »
Panda Ibis Proportion importante de code natif Modèle fermé Code commun limité
Architectures monolithiques Factorisation de code réduite Évolutivité compromise
Contribution – Net Ibis
Objectifs
Prototypage aisé Modularité, flexibilité Isolation des tâches Pilotes courts
Portabilité Limitation stricte de la quantité de code natif Utilisation des mécanismes Java
Threads Synchronisation
Modèle ouvert Connexions/déconnexions Tolérance aux déconnexions brutales
Efficacité Scrutation, appels montants Support multi-protocole
Modules de communication
Implémentations
TCP Ibis Panda Ibis Net Ibis
Application
RMI GMI RepMI Satin
Serialisation / Communication
TCP Ibis Net Ibis Panda Ibis
TCP, UDP, GMetc.
Panda, MPI
Couche de portabilité Ibis (IPL)
TCP
Architecture
Chaîne de traitement des données
Pile configurable
Interface des pilotes unifiée Éléments optionnels Ordre libre Chargement dynamique
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
Pilote réseau physique
Interface port
Interface port
Pilote réseau physique
Interface port
Sérialisation
Multiplexage port
Pilote réseau physique
Pilotes
Caractéristiques des modules
Objets Pilote Entrée Sortie
Pilote Usine d’objets entrée et sortie Une instance par session
Entrée Une ou plusieurs connexions sortantes Interface unifiée
Sortie Une ou plusieurs connexions entrantes Interface unifiée
Sortie simple
Sortie multiple
Pilotes
Caractéristiques des modules
Objets Pilote Entrée Sortie
Pilote Usine d’objets entrée et sortie Une instance par session
Entrée Une ou plusieurs connexions sortantes Interface unifiée
Sortie Une ou plusieurs connexions entrantes Interface unifiée
Sortie simple
Sortie multiple
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
Pilote réseau physique
Interface port
Exemple
Port d’émission
GM
TCP
UDP
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
Pilote réseau physique
Interface port
Exemple – connexions
Port d’émission
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
Pilote réseau physique
Interface port
Exemple – trajet des données
Port d’émission
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
Pilote réseau physique
Interface port
Exemple – multiplication des connexions
Port d’émission
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
Pilote réseau physique
Interface port
Exemple – utilisations plus complexes
Port d’émission
Connexion de service
Réseau interne
Caractéristiques TCP Multiplexage transparent
Intérêt Phase de connexion unifiée Détection de déconnexion brutale unifiée Simplification des pilotes Fonctionnalités dynamiques à faible fréquence
TCP
Mise en œuvre
Chiffres et caractéristiques
Status experimental
35 000 lignes de code Java & C
Réseaux GM, TCP, UDP Connexion de service
Sérialisation
Natifs->octets
Multi-protocole
Multiplexage port
Fiabilité
Multiplexage connexion
TCP
Interface port
UDP ServiceGM
Identité
Évaluation
Environnement de test
Grappe de PC bi-Pentium III 1 GHz, 1 Go Réseau GM/Myrinet Réseau Fast-Ethernet
Méthode de test
Mesures : 1000 x (émission + réception) Résultat : ½ x moyenne sur 5 mesures “préchauffage”
GM – temps de transfert
1
10
100
1000
10000
100000
NetIbis/ GM
+ multiplexage
Taille de paquet (octets)
Tem
ps d
e
tran
sfe
rt(µ
s)
GM – débit
0,1
1
10
100
1000
NetIbis/ GM
+ multiplexage
Taille de paquet (octets)
Déb
it
(Mo/
s)
Support de communication Net Ibis
Eléments clés
Gestions des communications sur la grille Conception hautement modulaire Pile de communication configurable à l’exécution Modèle de connexion ouvert Support multi-protocole Support minimal de la tolérance aux pannes Architecture ouverte
Conclusion générale
Architectures distribuées – le point de vue des communications
Contribution sur l’aspect données Madeleine Programmation par contrat Portabilité des performances
Contribution sur l’aspect connexions Net Ibis Pile flexible Modèle ouvert
Perspectives
Données Enrichissement de l’interface
Structuration plus précise des messages Indications sur le futur proche Réduction des cas pathologiques Tolérance de pertes
Automatisation, spécialisation de code Séquences de communication
Connexions Configuration de haut niveau
Couplage avec services d’information topologique Fonctionnement décentralisé