Présents: Frédéric Gava, Frédéric Loulergue, Xavier Leroy, Gaétan Hains, Armelle Merlin, Mostafa Bamha.
Développements sur ocaml
Le projet INRIA ESTIME a utilisé CamlP3L pour faire du couplage de composants de code numérique (Roberto DiCosmo et Pierre Weis).
Développements sur BSML
Développements sur MSPML (Minimaly synchronous Parallel ML) adaptation de BSML à un concept de désynchronisation comme les horloges structurelles:
Application au GRID: on propose un système à deux niveaux. Chaque grappe est programmée en BSML et l'ensemble est traité par MSPML. Justification pratique: une barrière sur un système multi-sites est déraisonnable. => DPML (Departmental Metacomputing ML).
mkdpt : (int -> 'a) -> 'a
dpar
applydpt : ('a -> 'b) -> 'a dpar -> 'b dpar
get (int ->
int -> bool) par dpar -> 'a par dpar -> (int -> int -> 'a option) par
dpar
dont le premier argument spécifie en chaque
processeur ceux de qui il demande des données. On a aussi des
variables globales représentant la grille complète
dm_p : (unit -> int) (combien de grappes dans la grille)
dm_bsp_p : int -> int (quelle taille pour quelle grappe).
Plus les opérations du niveau BSML dont put:
put : (int
-> 'a option) par -> (int -> 'a option) par
Possibilité d'implantation avec la bibliothèque Madeleine de Bougé et al.
Avancement du sous-projet PDBML (parallel data-base ML).
Possibilité d'exécuter une requête sur plusieurs grappes de PC. Hypothèse de bijection entre les processeurs et les disques. Service GLOBUS disponible sur chaque grappe. On va découper la requête globale en sous-requêtes pour chaque site, le résultat pouvant être ensuite déplacé d'un site à un autre.
Un fichier info.db contient toute l'information sur la répartition des tables entre grappes et entre processeurs des grappes. Un analyseur lit info.db et génère le plan d'exécution. Ce plan procède d'abord par la détermination du degré optimal de parallélisme. Ensuite le choix exact des processeurs. Le résultat de la requête est stocké sur les disques des processeurs choisis pour l'exécution.
Heuristique actuelle: une requête simple a des résultats placés sur une unique grappe (son calcul se fait sur une seule grappe). Dans le cas de requêtes complexes, on traite une opération à la fois sur une grappe donnée. Les tables intermédiaires peuvent se déplacer entre les sites mais ne sont pas découpées entre les sites.
Jusqu'à maintenant une table intermédiaire devait être complétée avant de passer à l'opération suivante. On étudie une approche plus efficace où les opérations peuvent être pipelinées. Cela devient possible si (et seulement si) le nombre de processeur optimal n'est pas maximal et laisse donc des processeurs libres pour les opérations suivantes. Tout ceci est géré par des histogrammes de taille des tables (combien de tuples ayant chaque valeur de l'attribut de jointure/ select ...).
On part de CCS (O, a.P, P|Q, P+Q, P\a) et on ajoute un constructeur
data-parallèle de processus
Formalisation de SELinux (recherche US): matrice de
droits d'accès + formule de logique temporelle -> model checker pour
vérifier des propriétés induites par une politique d'accès (matrice).
Formalisation d'une version parallèle de cela (Toinard, Courtieu, Hains),
lien avec l'algèbre BSP-CCS de Merlin ci-dessus, travail en cours.
Travail entre le LIFO (ENSI-Bourges) et le CEA: version multiprocesseur
du système SELinux