Réunion de projet CARAML 19 février 2004 au LIFO

Présents: Frédéric Gava, Frédéric Loulergue, Xavier Leroy, Gaétan Hains, Armelle Merlin, Mostafa Bamha.

Xavier Leroy INRIA

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

Frédéric Loulergue et Frédéric Gava, LACL

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.

Mostafa Bamha LIFO (travail avec Matthieu Exbrayat LIFO)

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

Armelle Merlin LIFO (travail commun avec Gaétan Hains LIFO)

Mélange des formalismes CCS (algèbre de processus) et BSP

On part de CCS (O, a.P, P|Q, P+Q, P\a) et on ajoute un constructeur data-parallèle de processus qui est indexé dans le cas général par la grappe (ou sous-grappe) sur laquelle il s'exécute: un ensemble de processeurs. Règles de transition, bisimulation, forme simplifiée sans produits parallèles. Sur ces formes simplifiées qui représentent des systèmes de transition on définit une notion de coût. Le coût d'une transition représente le temps BSP d'exécution d'un processus. Les coûts sont dans un semi-anneau vectoriel avec structure à la BSP mais paramétré par le choix d'un semi-anneau scalaire (non-vectoriel). Problème: l'entrelâcement des événements parallèles doit se traduire dans les coûts. Détail difficile: composition séquentielle de ces coûts. Adaptation au contexte grid: multiples grappes. Applications à venir: protocoles grid et sécurité des droits d'accès dans un système parallèle.

Travail entre le LIFO (ENSI-Bourges) et le CEA: version multiprocesseur du système SELinux

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.