Processus
programme en cours d'exécution
contient
espace d'adressage
code
données
ressources système
fil de contrôle
unité d'allocation
mémoire
ressources
descripteurs de fichiers
entrées-sorties
Threads
unité d'ordonnancement
permet concurrence
au sein d'un processus
applications
côté serveur
threads statiques
serveur de terminaux
threads dynamiques
serveur de fichiers
côté client
requêtes
concurrentes
asynchrones
nécessaires
multicœurs
"many-cores"
implémentation
mode noyau
opérations = appels système
+
ordonnancement facile
recouvrement E/S
gestion des événements
-
portabilité
efficacité
abstraction à 2 niveaux - visible
mode utilisateur
bibliothèque
+
changement de contexte très rapide
contrôle de l'ordonnancement
portabilité
-
blocage d'un thread bloque processus
oronnancement threads invisible de l'OS
combinaison ?
fibres
threads noyau
threads matériels
ordonnancement
quantum de temps
qq ms à qq 10s ms
préemptif ou non ?
noyau ou espace utilisateur ?
Mémoire virtuellement partagée
propriétés fondamentales
architecture NUMA
abstraction de partage d'information
données internes au processus
consistence
n'a de sens que relativement à un modèle
accès généraux lectures/écritures
consistence atomique
toutes opérations apparaissent
atomiques
séquentielles
ordre correspond au temps-réel
même sur tous processeurs
très coûteux
consistence séquentielle
relâche contrainte temps réel
écriture = multicast
consistence causale
relâche contrainte ordre identique sur tous processeurs
garantit seulement causalité
écriture = envoi
lecture = réception
consistence de processeur
seules écritures venant d'un même processeur doivent être vues dans le même ordre
implémentation facile
consistence de mémoire lente
seules écritures par même processeur à même @ doivent être vues dans l'ordre
mise à jour locale visible immédiatement
propagation lente
accès spécifiques (de synchronisation)
protection par sémaphore
exclusion mutuelle
demande intervention programmeur
consistence faible
barrière de synchronisation
consistence de relâchement
accès exclusif entre
aquisition (S)
relâchement (S)
section critique
consistence d'entrée
chaque variable partagée
est associée à une variable de synchronisation
réplication
voir cours sur tolérance aux pannes
classification
implémentation
logiciel
matériel
accès direct à la mémoire distante
hybride
organisation des données
non-structurées
structurées
objets
structures de données
granularité
mot
bloc de cache
page
structure de données
objet
modèle de consistence
protocole de cohérence
écrire invalide
écrire met à jour
responsabilité de gestion
centralisée
distribuée
statique
dynamique
facteurs de performance
granularité
surcoût de transfert d'un bloc
rapport lectures/écritures
localité du programme
tendance dans langages pour la haute performance
Partitionned Global Address Space
High End Computing
vers plus de productivité
adaptation de la mémoire virtuellement partagée
affinité entre régions mémoire et threads
accès explicite aux autres régions mémoire
distribution explicite
données
calculs
synchronisation
barrières
sections critiques
cohérence mémoire
PGAS_Tutorial_sc2003.pdf
Yelick.pdf
langages
Co-array Fortran
considéré pour standard Fortran 2008
Unified Parallel C
Titanium
basé sur Java
X10 (IBM)
basé sur Java
extension à l'inférence de type
plusieurs styles de programmation
vue globale
OpenMP
MPI
OpenMP+MPI
X10Cluster2009.pdf