150 likes | 243 Views
Bulk Synchronous Parallel ML: implémentation modulaire et prévision de performances Stage de David Billiet. Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne Laboratoire d’Algorithmique, Complexité et Logique. Contexte. Cadre général :
E N D
Bulk Synchronous Parallel ML: implémentation modulaire et prévision de performancesStage de David Billiet Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne Laboratoire d’Algorithmique, Complexité et Logique
Contexte Cadre général : • Programmation fonctionnelle parallèle • Déterministe, sans blocage • Prévision de performances (BSP) Le projet Caraml (2002-2004, ACI Grid)
Bulk Synchronous Parallelism • Machine BSP : p paires processeur-memoire + réseau+ unité de synchronisation globale • Execution BSP : séquence de super-étapes: • T(s) = (max0i<p wi) + hg + l
La bibliothèque BSMLlib • Pour Objective Caml • Un programme parallèle = Programme séquentiel habituel + operations sur une structure parallèle • Vecteurs parallèles de taille p: a par • Accès aux paramètres BSP : bsp_p, bsp_g, bsp_l
Les primitives BSMLlib (1) • mkpar: (int->a) -> a parmkpar f = <(f 0), … , (f (p-1))> • apply: (a->b) par -> a par -> b parapply <f0,…fp-1> <v0,…,vp-1>= <(f0 v0),…,(fp-1 vp-1)> • projection: at
Les primitives BSMLlib (2) type option = None | Some of put: (int option) par(int option) par put =
Objectifs du travail • Existant: implémentation basée sur MPI • Implémentation modulaire pour faciliter la mise en œuvre et les évolutions • Utiliser d’autres bibliothèques de communication: MPI, PVM, TCPIP, PUB • Outil pour la prévision de performances: programme de benchmark des paramètres BSP
Nouvelle organisation du noyau de la BSMLlib • Noyau (contenant seulement les primitives) générique (module foncteur) prenant en argument un module de communication • Module de communication: • pid • nprocs • send
Modules Comm • MPI: • Utilisant MPI_Alltoallv • Send/receive avec carré latin • PVM: • avec carré latin • traitement particulier de la sortie standard • TCPIP: • carré latin • pur Ocaml avec threads
Le programme bmslprobe • Détermine les paramètres BSP • Principe: • p le nombre de processeurs est connu • détermine la vitesse r des processeurs (opérations sur les flottants) • communications avec messages de taille croissante (h-relation croissante): méthode des moindres carrés pour obtenir g et L
Une expérience (1) • Le programme: produit scalaire let inprod_array v1 v2 = let s = ref 0. in for i = 0 to (Array.length v1)-1 do s:=!s+.(v1.(i)*.v2.(i)); done; !s let inprod_list v1 v2 =List.fold_left2 (fun s x y -> s+.x*.y) 0. v1 v2 let inprod seqinprod v1 v2 = let localinprod = Bsmlbase.parfun2 seqinprod v1 v2 in Bsmlcomm.fold_direct (+.) localinprod
Conclusions • Travail incorporé • dans la future BSMLlib 0.3 • dans la première version deDepartmental Metacomputing ML (DMML) • Travail présenté (par F. Gava) au workshop Implementation of Functional Languages (IFL’04) 8-10 septembre 2004