Multithreading et Calcul Haute Performance - PowerPoint PPT Presentation

1 / 109
About This Presentation
Title:

Multithreading et Calcul Haute Performance

Description:

Multithreading et Calcul Haute Performance J-F. M haut, R. Namyst INRIA, ReMaP, LIP, ENS Lyon – PowerPoint PPT presentation

Number of Views:106
Avg rating:3.0/5.0
Slides: 110
Provided by: CRI1150
Category:

less

Transcript and Presenter's Notes

Title: Multithreading et Calcul Haute Performance


1
Multithreading et Calcul Haute Performance
J-F. Méhaut, R. Namyst INRIA, ReMaP, LIP, ENS Lyon
2
Au menu
  • Introduction contexte technologique
  • Nouvelles archis processeurs, réseaux, etc.
  • Multithreading quels intérêts?
  • Définition, premiers contacts, partage mémoire
  • Pause (10)
  • Multithreading distribué
  • Intérêts et difficultés
  • Quelques environnements
  • Lenvironnement PM2
  • Conclusion

3
Introduction
4
Architecture processeur Cray-TERA
Applications
Threads concurrents
Programme séquentiel

Streams
Pool dinstructions prêtes
Pipeline dinstructions en cours dexécution
5
Multi-threading Cray-TERA
  • Principe
  • Maintenir plusieurs threads (streams) actifs (40
    à 80 streams gt 90 utilisation de la machine)
  • Garantir une instruction prête à chaque cycle
    processeur
  • Dispositif matériel supportant
  • Gestion de plusieurs streams
  • Changement de contexte tous les cycles (3ns)
  • Jusquà 8 requêtes daccès mémoire en attente
    pour un stream

6
Caractéristiques du processeur Cray-TERA
  • Horloge
  • 333 MHZ
  • Accès mémoire
  • 2,8 Gbytes/seconde bande passante
  • Emission/réception dun paquet par cycle
  • Pas de cache de données, cache instr 2Mbytes
  • Multiprogrammation/concurrence
  • 16 domaines de protection
  • 128 streams (32 registres, 1 Program Counter)

7
Enjeux
  • Trouver le bon niveau de parallélisme
  • Besoin de travail (threads) pour saturer la
    machine
  • Quatre sources potentielles de parallélisme
  • Applications (jobs)
  • Threads
  • Boucles
  • ILP (Instruction-Level Parallelism)
  • Compilateur/paralléliseur
  • Marché restreint
  • Une machine installée à San Diego

8
Cluster computing
  • Architecture homogène, faiblement hétérogène
  • Grappes (Cluster, COW), machines //
  • PC, stations de travail
  • SCI, Myrinet, Giganet, MPC, ...
  • Protocoles de communication
  • BIP, SISCI, SciOS, VIA, TCP, UDP, ...

9
Motivations pour le haut-débit
  • Performances des communications Atteindre le
    niveau de performance des machines
    parallèles avec les équipements du marché (PC ou
    station de travail)
  • Minimiser la latence, maximiser le débit
  • Thématiques de recherche
  • Matériel
  • Commutateurs, cartes dinterface
  • Commutations, routage
  • Logiciel
  • Interfaces de communication (AM, FM, BIP, )
  • Env. de programmation (MPI, PM2, Nexus,)

10
Myrinet
  • Objectifs
  • Performances en communication équivalentes à
    celles des supercomputers
  • Quelques microsecondes en latence
  • Atteindre le Gbps en bande passante
  • Caractéristiques
  • Carte dinterface programmable
  • Protocole carte dinterface et le host
  • Utilisé pour implémenter des environnements de
    programmation

11
Myrinet Description technique
  • Routage
  • Statique à la source (entête consommé
    progressivement)
  • Wormhole

12
Myrinet cartes dinterface
  • Matériel
  • 66MHz cpu (LANai)
  • 1 Mbyte SRAM
  • 3 DMA (lien entrée, lien sortie, mémoire du
    host)
  • Interface au bus PCI
  • Logiciel
  • LANai Control Program (LCP)
  • Performance (BIP/Myrinet)
  • 6 microsecondes latence
  • 127 Mbytes/sec bande passante

13
SCI(Scalable Coherent Interface)
  • Réseau à capacité dadressage
  • Adressage des mémoires distantes
  • Lecture/écriture distante sans interruption du
    processeur distant
  • Support matériel pour mémoire partagée

Emmanuel Cecchet (Sirac, INRIA Rhône-Alpes)
14
SCI caractéristiques techniques
  • Scalable Coherent Interface
  • Matériel standard (PC, station Unix, )
  • Architecture en anneau et/ou commutateur
  • Evolutif jusquà 64 Knœuds
  • Bande passante de 500 Mo/s (4 Gb/s) full-duplex
  • Pas de cohérence sur PCI (bus dentrées/sorties)

Emmanuel Cecchet (Sirac, INRIA Rhône-Alpes)
15
SCI performances
  • Latence 2.5 ms (écriture de processus à
    processus)
  • Débit 70 Mo/s
  • Verrou lt 10 ms (fetchadd)

16
Comms remarques préliminaires
  • Règle des 80/80
  • 80 des messages sont de taille inférieure à 256
    octets
  • 80 du trafic provient de messages dune taille
    supérieure à 8KB
  • Nouvelles approches
  • Latence faible pour les petits messages
  • Bande passante importante pour les gros messages
  • Coût des protocoles traditionnels

17
Communications système
  • Evolutions technologiques
  • Coûts logiciels des protocoles

18
Comm. en contexte utilisateur
  • Recherches académiques
  • Active Messages (Berkeley)
  • Illinois Fast Messages (Urbana)
  • U-Net (Cornell)
  • MPC (Paris6, Versailles)
  • BIP (Lyon)
  • Interface de bas-niveau
  • Cibles pour les supports dexécution
  • Standard industriel VIA
  • Participation des industriels
  • Etendre le spectre des applications

Processus
OS
19
VIA Virtual Interface Architecture
VI Consumer
Host
VI User Agent (libvia)
VI Kernel Agent (Slow)
User-Level (Fast)
Descriptor Read, Write
Open, Connect, Map Memory
Undetermined
Doorbells
RequestsCompleted
NIC
VI-Capable NIC
20
Giganet Cartes VIA
21
  • Commutateurs
  • Cartes dinterface
  • Administration du réseau
  • cLAN pour Windows
  • cLAN pour Linux

22
Supports dexécution parallèle
  • Avantages pour les utilisateurs
  • Abstractions de haut niveau
  • Portabilité des applications
  • Efficacité !

Applications
Interface de programmation (API)
Support dexécution //
Systèmes dexploitation
Architectures parallèles et distribuées
23
Le multithreading quel(s) intérêt(s) ?
Introduction et rappels
24
Rappel les processus lourds
  • Caractéristiques
  • Entité active directement supportée par lOS
  • Flot dexécution
  • Espace dadressage privé
  • Ressources systèmes
  • Exécution séquentielle
  • Coût de gestion élevé
  • Allocation des ressources
  • Appels systèmes

25
Processus lourds (bis)
  • Ressources kernel données user

Espace utilisateur
Processus
Processus
Processus
Ordonnanceur
Noyau
26
Threads Motivations
  • Difficulté de programmation
  • Fil dexécution unique
  • ? une seule chose à la fois !
  • Partage de données laborieux
  • Performances
  • Opérations de base coûteuses
  • Recouvrement des opérations dE/S difficiles

27
Simplicité de programmation
  • Objectif
  • Mener plusieurs activités indépendantes au sein
    dun processus
  • Exemples
  • Simulations
  • Serveurs de fichiers
  • Systèmes dexploitation (!)
  • Seule solution (?)
  • Automate à états finis implanté  à la main 
  • (sauvegardes détats)

28
Structure dun OS monolytique
  • Exemple
  • Séquence infinie dopérations courtes
  • Ordre et fréquence des scrutations ?

for () if(networkMsgIn()) getNetworkMsg() i
f(kbdReady()) getKey() if(diskBlockReady())
handleDiskBlock()
29
Systèmes multiprogrammés
  • Exécution indépendante des activités
  • Concurrence entre les différents traitements

for () wait for key stroke getKey()
for () wait for network msg getNetworkMsg()

for () wait for disk block handleDiskBlock(
)
30
Processus serveur classique
  • Sérialisation des requêtes
  • Pas de recouvrement des E/S
  • Exploitation SMP délicate
  • Prise en compte de priorités ?

client
serveur
OS
OS
31
Sur lefficacité des E/S
  • Caractéristiques du serveur de fichiers
  • Tps de traitement dune requête 15ms
  • Tps supplémentaire pour laccès disque 75ms
    (pour 1/3 des requêtes)
  • Débit sans/avec recouvrement des E/S
  • Sans recouvrement
  • 25 requêtes/seconde
  • Avec recouvrement
  • 33.33 requêtes/seconde (33)

32
Les processus légers
  • Principe
  • Détacher flot dexécution et ressources
  • Introduits dans divers langages systèmes
  • Programmation concurrente
  • Recouvrement des E/S
  • Exploitation des architectures SMP

thread
ressources
33
Caractéristiques de base
  • Thread pile contexte
  • Partage de ressources
  • Code, tas, espace dadressage
  • Fichiers ouverts
  • Table des traitants de signaux
  • Opérations de base performantes
  • Création, destruction
  • Synchronisation, commutation de contextes
  • Création dun processus léger
  • Adresse de fonction à exécuter paramètres

34
Performance des threads
  • Opérations critiques
  • Création/destruction (gestion mémoire)
  • Changement de contexte (temps-partagé)
  • Synchronisation (mode utilisateur)
  • Programme dévaluation
  • Création dune activité (processus, thread)
    synchronisation (terminaison de lactivité)

OS/Processeur Processus Thread noyau Thread utilisateur PM2
Linux 2.2/PII 450 0.540 0.130 - 0.006
Solaris 2.7/PII 350 8.622 0.214 0.160 0.009
35
Repères historiques
  • Lancêtre les coroutines
  • Entrelacement explicite des exécutions
  • Langages Simula (67), Modula2 (82)
  • Primitives clés create resume
  • Les threads dans les systèmes
  • Cthread (Mach) -gt DecThread -gt PThread (90)
  • Chorus, Solaris (87), winNT, IRIX, Linux, etc.
  • Les threads dans les langages
  • Ada (83), Java, etc.
  • C //, Eiffel //, etc.

36
Le multithreading quel(s) intérêt(s) ?
Premier contact
37
Linterface POSIX-Threads
  • Interface de programmation standard pour Unix
  • Portabilité des applications
  • Solaris, IRIX, HP-UX, Linux, etc.
  • Fonctionnalités
  • Création/destruction de threads
  • Synchronisation
  • Ordonnancement, priorités
  • Signaux
  • Etc.

38
Exemple création
  • Création dun nouveau thread
  • Éventuels attributs dans la structure attr
  • Exécution de start_func avec le paramètre arg
  • pid est lidentificateur du thread créé

int pthread_create( pthread_t pid, pthread_att
r_t attr, void (start_func)(void
), void arg)
39
Attente de fin dexécution
  • Attente de la terminaison du thread pid
  • Récupération de son code de retour status
  • On peut contourner ce mécanisme en  détachant 
    les threads

int pthread_join( pthread_t pid, void
status)
int pthread_detach( pthread_t pid)
40
 Hello World! 
  • include ltstdio.hgt
  • include ltpthread.hgt
  • void func(void arg)
  • printf(Thread x says s\n, pthread_self(),
    arg)
  • return NULL
  • int main(void)
  • pthread_t pid
  • pthread_create(pid, NULL, func, Hello
    World!)
  • printf(This is the main thread\n)
  • pthread_join(pid, NULL)
  • return 0

41
Attributs
  • Ensemble fixé de caractéristiques
  • Utilisé à linitialisation
  • Threads, verrous, variables de condition, etc.
  • Threads
  • Priorité
  • Pile taille, emplacement
  • Détaché oui/non
  • Type dordonnancement
  • Verrous
  • Inversion de priorités, récursivité

42
Attributs exemple
  • include ltstdio.hgt
  • include ltpthread.hgt
  • void handle_request(void arg)
  • int main(void)
  • pthread_attr_t attr
  • for()
  • fd accept(sock, )
  • pthread_attr_init(attr)
  • pthread_attr_setdetachstate(attr,
    PTHREAD_CREATE_DETACHED)
  • pthread_create(NULL, attr, handle_request,
    fd)

43
Exemple bis pile
  • À manipuler avec précaution !
  • Quelle taille de pile choisir ?
  • Comment prévenir/détecter les débordements ?

pthread_attr_t attr pthread_attr_init(attr)
pthread_attr_setstacksize(attr,
1281024) pthread_create(NULL, attr, func,
NULL)
44
Le standard OpenMP
  • Interface pour écrire des applications
    multithreads portables (sur SMP)
  • Directives de compilation (C, C, Fortran)
    routines
  • Objectif simplicité portabilité
  • Constructeurs fabricants de logiciels etc.
  • Modèle de programmation
  •  Fork-Join 
  • Parallélisation des boucles (pragma omp)

45
Le multithreading quel(s) intérêt(s) ?
Partage mémoire efficace
46
Les threads et la mémoire
  • Chaque thread possède sa propre pile
  • Variables locales  privées  (? visibilité)
  • Les threads partagent lespace dadressage
  • Variables globales
  • Tas (malloc)
  • Variables locales (piles) également !
  • Intérêt
  • Communications par pointeurs !
  • Parallélisation de programmes séquentiels aisée ?

47
Problèmes de réentrance
  • Exemple simple

int glob 0 void inc(void arg) int
i for(i0 ilt100 i) glob int
main(void) pthread_create(t1, NULL, inc,
NULL) pthread_create(t2, NULL, inc,
NULL) pthread_join(t1, NULL)
pthread_join(t2, NULL) printf(glob d\n,
glob)
Résultat ?
48
Explication
  • glob nest pas forcément une opération atomique
  • Scénario dexécution concurrente par 2 threads

Mov _at_glob, r1 charger Inc r1
incrémenter Mov r1, _at_glob enregistrer
Mov r1, _at_glob
49
Outils pour la synchronisation
  • Exclusion mutuelle les verrous
  • Synchronisations plus complexes
  • Variables de condition (cf moniteurs de Hoare)
  • pthread_cond_wait
  • pthread_cond_signal, pthread_cond_bcast

int glob 0 void inc(void arg) for(i0
ilt100 i) pthread_mutex_lock(mutex) glob
pthread_mutex_unlock(mutex)
50
Code réentrant
  • code demeurant correct lorsquil est exécuté
    simultanément par plusieurs threads
  • Exemples typiques
  • Fonction nutilisant que des variables locales
  • Code protégé par un verrou
  • Quid du code que lon écrit pas soi-même ?
  • Malloc, free, , la bibliothéque standard
  • Fonctions  MT-safe 
  • Option D_REENTRANT
  • Certains prototypes changent

51
Importance de la synchro.
  • Cohérence séquentielle de la mémoire ?
  • Compilateurs/Optimiseurs
  • Instructions réordonnées
  • Processeurs modernes
  • Ecritures réordonnées
  • On ne peut pas supposer lordre des écritures
  • Primitives de synchronisation
  • Agissent comme des  barrières mémoire 

52
Variables spécifiques
  • Pb comment gérer les variables globales
     privées 

int my_x void g(void) my_x void
f(void) my_x do_compute() g()
53
Variables spécifiques
  • Principe
  • Variable accessible à partir dune clé
  • Allocation globale (souvent à linitialisation)
  • pthread_setspecific(clé, valeur)
  • pthread_getspecific(clé) -gt valeur
  • Exemple la variable errno
  • Fichier errno.h

ifdef _REENTRANT define errno
(__errno_location()) else extern int
errno endif
54
A propos defficacité
  • Les threads sont-ils toujours meilleurs que MPI
    sur architectures SMP ?
  • Solution  processus communicants
  • Communications pénalisantes (copies)
  • Surcoût en utilisation de ressources
  • Recouvrement plus difficile
  • Solution  processus légers 
  • Synchronisations additionnelles
  • Accès aux variables spécifiques coûteux

55
Le multithreading quel(s) intérêt(s) ?
Ordonnancement des threads
56
Multithreading utilisateur
  • Deux ordonnanceurs indépendants

User Space
OS Kernel
57
Multithreading noyau
  • Un seul ordonnanceur

User Space
OS Kernel
58
Multithreading mixte
  • Deux ordonnanceurs coopérants

User Space
OS Kernel
Note Quid des appels systèmes bloquants ?
59
Ordonnancement non-préemptif
  • Le processus cède la main
  • Lorsquil se bloque
  • Lorsquil meurt
  • Avantages
  • Peu de commutations de contextes
  • Atténuation des problèmes de réentrance
  • Inconvénients
  • Partage non-équitable des ressources
  • Risque de famines

60
Ordonnancement préemptif
  • Une horloge force les commutations
  • Avantages
  • cf. inconvénients du non-préemptif
  • Inconvénients
  • cf. avantages du non-préemptif
  • En général
  • Threads noyaux ? préemptif
  • Threads utilisateurs ? non-préemptif

61
Choix de lordonnancement
  • Niveau dordonnancement
  • pthread_attr_setscope()
  • PTHREAD_SCOPE_SYSTEM
  • PTHREAD_SCOPE_PROCESS
  • Classes dordonnancement
  • pthread_attr_setschedpolicy()
  • SCHED_FIFO
  • SCHED_RR
  • SCHED_OTHER

62
Le multithreading quel(s) intérêt(s) ?
Recouvrement des Entrées/Sorties
63
Recouvrement des E/S
  • Au lieu de

Espace utilisateur
Espace noyau
Matériel
64
E/S et ordonnancement
  • Threads noyaux OK
  • Threads utilisateurs
  • Appel bloquant -gt blocage du processus entier
  • Threads mixtes
  • Idem au bout dun certain nombre !
  • Solutions ?
  • Appels toujours non-bloquants (polling)
  • Appels effectués par des threads dédiés
  • Support système spécifique

65
Scheduler Activations
  • Introduit par Anderson et al. 91
  • Idée la coopération entre les deux
    ordonnanceurs est bidirectionnelle
  • Lordonnanceur utilisateur utilise des appels
    systèmes
  • Lordonnanceur noyau utilise des upcalls!
  • Upcalls
  • Informe lapplication des événements noyaux
  • Activations
  • Autant dactivations en exécution que de
    processeurs
  • Contrôlées par le noyau
  • Principe mis en œuvre dans Solaris

66
MultithreadingDistribué
Principe et Enjeux
67
Principe
  • Introduire les threads dans les applications
    distribuées

réseau
68
Enjeux
  •  Bénéfices  escomptés
  • Recouvrement naturel des communications
  • Meilleur support du parallélisme à grain fin
  • Uniformisation de la configuration
  • machines monoprocesseur/machines SMP
  • Virtualisation de larchitecture
  • threads processeurs virtuels
  • cible pour des compilateurs (ex HPF)
  • équilibrage de charge générique et transparent
  • Meilleure réactivité au réseau
  • Exécution distribuée de langages multithreads

69
Virtualisation
  • Objectif
  • Machine constituée de centaines de processeurs
    virtuels
  • Intérêts
  • Applications sadaptant à la configuration
  • Passage à léchelle (scalability)
  • Équilibrage de charge possible par migration de
    threads
  • Équilibrage dynamique
  • Régulateur indépendant de lapplication !

70
Virtualisation contraintes
  • Exécution indépendante à la localisation
  • Problème des E/S délicat
  • Communications par mémoire partagée
  • Mémoire virtuellement partagée nécessaire
  • Compatible avec les threads !
  • Difficile sur architecture hétérogène
  • Architecture hétérogène
  • Migration des threads prohibitive

71
Meilleure réactivité au réseau
  • Illustration MPI et les communications
    asynchrones

MPI_Isend
MPI_recv
MPI_test
Processus A
Processus B
72
MultithreadingDistribué
Quel modèle de programmation ?
73
Approche par juxtaposition
  • Principe pas de modèle !
  • Simplement utiliser conjointement
  • Une bibliothèque de communication (ex MPI)
  • Une bibliothèque de multithreading
  • Problèmes
  • Conceptuels
  • Pas de visibilité globale des threads
  • Sémantique des communications ?
  • Techniques
  • Compatibilité entre les bibliothèques
  • Travail dintégration spécifique -gt non
    réutilisable

74
Threads communicants
  • Principe
  • Envoi de message entre threads
  • Modèle  MPI-like 
  • Modèle  Acteurs 
  • Nommage
  • Nommage global des threads
  • Ports de communication
  • Exemples
  • Chant (M. Haines, ICASE)
  • Athapascan-0b (J. Briat, INRIA Grenoble)

75
Modèle Pthreads étendu
  • Principe
  • Threads primitives étendues
  • Create/Join à distance
  • Synchronisations distribuées
  • Particularités
  • Nommage global des threads
  • Restriction du modèle Pthreads
  • Exemples
  • Chant (M.Haines, ICASE),Rthreads (M. Zahn,
    Allemagne)

76
Modèle Pthreads distribué
  • Principe
  • Adaptation complète (?) de Pthreads
  • Threads mémoire virtuellement partagée
  • Transparence
  • Cohérence assurée lors des défauts de pages
  • Restriction sur les E/S
  • Extensions
  • Cohérences mémoires relâchées
  • Exemple
  • DSM-Threads (F. Mueller, Berlin)

77
Modèle dérivé des RPC
  • Principe
  • Appel de procédure à distance (A. Birell)
  • Extension du concept aux threads
  • Création de threads pour exécuter les procédures
  • Désignation globale des services
  • Numéro ? fonction
  • Souches (stubs) pour la transmission des
    paramètres
  • Exemples
  • Nexus (I. Foster, Argonne), PM2

78
MultithreadingDistribué
Intégration des threadset des communications
79
Progression des communications
  • Problème
  • Comment assurer la progression des communications
    ?

réseau
80
Scrutation 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 ?

81
Scrutation 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
82
MultithreadingDistribué
Lenvironnement PM2
83
Premières réflexions sur PM2
  • Parallel Multithreaded Machine (R. Namyst)
  • Virtualisation de larchitecture
  • Régulateurs génériques de charge (Y. Denneulin)
  • Plateformes usuelles (COW, NOW), machines
    parallèles
  • Distribution du logiciel, assistance,
    documentation-(
  • InterPRC Stratagème (C. Roucairol)
  • Applications irrégulières
  • Optimisation combinatoire
  • Algèbre linéaire creuse (J. Roman)
  • Ordonnancement, régulation
  • Fortement irrégulière placement migration

84
Projet PM2 (95-xx)
  • Objectif ambitieux virtualisation
  • Indépendance de la machine cible (processeurs)
  • Degré de parallélisme important (processus)
  • Parler de traitement / processus
  • mécanismes de décomposition parallèle
  • Propositions
  • Mécanisme de décomposition
  • Appel de procédure à distance léger (LRPC)
  • Support des activités
  • Processus légers (threads)
  • Régulateur dynamique de charge
  • Placement Migration

85
Appel de procédure à distance
PM2
PM2
  • Différentes déclinaisons
  • Synchrone
  • Attente différée
  • Asynchrone
  • Nos concurrents...
  • Nexus RSR
  • Athapascan appels de service

86
Hello World!
include ltpm2.hgt unsigned SAMPLE void
sample_func(void) char msg128 pm2_unpack_byt
e(SEND_CHEAPER, RECV_CHEAPER, msg,
128) pm2_rawrpc_waitdata() printf(s\n,
msg) void main(int argc, char argv) int
moduleMAX_MODULES, nb_modules pm2_rawrpc_regis
ter(SAMPLE, sample_func) pm2_init(argc, argv,
2, module, nb_modules) if(pm2_self()
les_modules0) pm2_rawrpc_begin(module1,
SAMPLE, NULL) pm2_pack_byte(SEND_CHEAPER,
RECV_CHEAPER, Hello World!, 128) pm2_rawrpc_e
nd() pm2_kill_modules(module,
nb_modules) pm2_exit()
87
Threaded Hello world!
  • Création dun thread
  • Obligatoirement par pm2_thread_create
  • positionnement dun certain nombre dattributs
  • héritage du droit de faire unpack

... void thread_func(void arg) char
msg128 pm2_unpack_byte(SEND_CHEAPER,
RECV_CHEAPER, msg, 128) pm2_rawrpc_waitdata()
printf(s\n, msg) void sample_func(void)
pm2_thread_create(thread_func, NULL) ...
88
Mobilité des activités
  • Migration de processus légers

PM2
PM2
  • Pourquoi ?
  • Régulation de charge
  • Localité des données
  • Comment ?
  • Transfert du contexte
  • Programmes SPMD

89
PM2 architecture logicielle
Applications
HPF, C
Régulation
C//, Java
Interface de programmation (RPC, migration,
allocation iso-adresse)
Marcel PM2
Madeleine
Unix (10 versions)
Architecture (grappes, machines parallèles)
  • Légende
  • Marcel noyau de processus légers
  • Madeleine module de communication

90
Marcel des processus légers
  • Multiprogrammation spécialisée pour PM2
  • Sous-ensemble de POSIX extensions
  • Support pour la migration
  • Sérialisation des piles de threads
  • Allocation des piles (Iso-Malloc, Antoniu99)
  • Gestion mémoire optimisée (cache de piles)
  • Deux niveaux de threads (noyau et utilisateur)
  • Support des machines SMP
  • Efficacité proche du niveau utilisateur
  • Exploitation des Scheduler Activations sous Linux
  • Appels systèmes bloquants (Danjean00)

91
Marcel Implantation SMP
  • Taille du pool de threads noyaux
  • Automatique / option en ligne de commande
  • Ordonnancement
  • Round-Robin sur chaque LWP
  • Placement sur les LWP paramétrable

marcel_attr_init(attr) marcel_attr_setschedpolic
y(attr, MARCEL_SCHED_FIXED(2)) marcel_create(pi
d, attr, func, arg) ...
92
Marcel performances
  • Comparatif avec dautres bibliothèques

OS/Processeur Processus Thread kernel Thread user Marcel
Linux 2.2 / PII 450 0.540 0.130 - 0.006
Solaris 2.7/ PII 350 8.622 0.214 0.160 0.009
  • Performances brutes (meilleur cas)

Opération Version  mono  Version  SMP 
Chgt contexte 125 ns 212 ns
Création seule 536 ns 1 us
Création termin. 833 ns 3 us
Arbre de threads 1.232 ms 6.986 ms
93
Madeleine objectifs
  • Supports des différents protocoles
  • Système (TCP, MPC)
  • Haut-niveau (MPI, PVM)
  • Bas-niveau (BIP, SISCI, VIA,)
  • Protocoles multi-paradigmes
  • VIA message-passing, remote DMA
  • SCI shared memory, DMA
  • SBP tampons statiques
  • Protocoles multi-modes
  • BIP messages courts, longs

94
Madeleine communications
LRPC, Migration
Madeleine
Interface de programmation
Couche de portabilité
MPI, PVM, TCP, UDP, BIP, SISCI, VIA, SHMEM
95
Packing - Unpacking
  • Commandes
  • Mad_pack(cnx, buffer, len, pack_mode,
    unpack_mode)
  • Mad_unpack(cnx, buffer, len, pack_mode,
    unpack_mode)
  • Modes

Send_SAFER
Send_CHEAPER
Send_LATER
Receive_EXPRESS
Receive_CHEAPER
96
Emission modes dempaquetage
Send_SAFER
Send_LATER
Send_CHEAPER
Pack
Modification
?
End_packing
Version transmise
97
Réception mode de déballage (1)
  • RECV_EXPRESS

Unpack
Tampon
Après Unpack
Données disponibles
End_packing
98
Réception mode de déballage (2)
  • RECV_CHEAPER

Unpack
Tampon
Après Unpack
Données disponibles ???
End_packing
Données disponibles
99
Exemple Protocole BIP/Myrinet
Processus A
Processus B
Réseau
100
Madeleine sur BIP/Myrinet
  • Communication contexte utilisateur (L. Prylli)
  • Zéro copie
  • Contrôle de flux pour les petits messages

Madeleine/BIP
Latence 8 µs Débit 125 Mo/s Migration PM2
52 µs
101
Madeleine résultats
  • Performances en latence
  • 6 µs sur SISCI/SCI
  • 8 µs sur BIP/Myrinet
  • Migration PM2
  • 24 µs sur SISCI/SCI
  • 52 µs sur BIP/Myrinet
  • Performance en bande passante
  • 125 Mo/s sur BIP/Myrinet

World record
102
Madeleine dautres utilisations
  • Bus CORBA haute performance
  • Collaboration avec Alcatel-INRIA
  • Communications ORB efficaces
  • Zéro copie avec un ORB?
  • Intégration thread et communication (réactivité)
  • Support du multiprotocoles
  • MPI-Madeleine
  • Collaboration avec L. Prylli (LIP)
  • Implémentation MPI
  • Intégration thread et communication (réactivité)
  • Support du multiprotocoles

103
Compilation/exécution dun programme PM2
  • Fabrication dun profil
  • Paramétrage de lenvironnement
  • make xconfig
  • (pm2, debug, madeleine, protocole, marcel,
    mono-smp)
  • Géneration dune flavor
  • Sélection du profil
  • setenv PM2_FLAVORmon_profil
  • Compilation du programme
  • make
  • Choix dune configuration
  • pm2conf myri0 myri1 myri2
  • Exécution du programme
  • pm2load programme arg1 arg2 argn

104
DSM-PM2 mémoire partagée et multithreading
  • Generic, configurable
  • Support for multiple consistency models
  • Multi-protocol support for a given consistency
    model
  • User interface
  • protocol selection/specification
  • initial distribution of DSM pages
  • Thread migration
  • Integrated in consistency protocols
  • Support for adaptive protocols
  • page migration vs. thread migration

105
Compilation HPF/C sur PM2
  • Equilibrage dynamique dans HPF/C (C. Pérez)
  • Modification des exécutifs des compilateurs
  • Module générique déquilibrage de charge

Simulation de flamme
106
Compilation et PM2 (suite)
  • Projet Hyperion (New Hampshire)
  • Machine virtuelle Java distribuée
  • Thread Java calqués sur les threads PM2
  • Mémoire partagée reposant sur DSM-PM2
  • Grappes de PC
  • Projet Paris (Rennes)
  • Utilisation de Madeleine (Y. Jégou)
  • MOME, DSM pour un compilateur HPF
  • Projet NANOS (Barcelone)
  • Environnement pour machines SMP à lorigine
  • Portage sur PM2 et DSM-PM2
  • OpenMP

107
Lancer de rayons // (PM2)
  • Transfert technologique (TTN ProHPC)
  • Société AGEMOB
  • Rendu 3D réaliste de mobilier
  • Serveur de calcul pour des chaines de
    distribution
  • Projet MOB3D LIP AGEMOB fabricants de
    meuble
  • Calcul rapide dune image réaliste sur réseau de
    stations
  • POV-Ray (Persistance Of Vision Ray-tracer)
  • Domaine public, portabilité (Unix, NT)
  • Assez largement utilisé dans la communauté
  • PM2POVRAY
  • Application parallèle exploitant des grappes de
    SMP

108
Principe de PM2POV-Ray
  • Scène répliquée sur chaque machine
  • Découpage de limage en threads
  • Régulation de charge
  • Distribution cyclique des threads sur les
    machines
  • Equilibrage dynamique par migration

109
Conclusions
  • Efficacité et portabilité
  • Bon compromis obtenu pour PM2
  • Des collaborations
  • Principalement pour des compilateurs et
    bibliothèques
  • Stages DEA-DESS, thèse
  • Disponible sur Internet
  • http//www.pm2.org
  • Collaborations industrielles
  • Microsoft, Alcatel
  • Aérospatiale-Matra (caches Web)
Write a Comment
User Comments (0)
About PowerShow.com