Bulk Synchronous Parallel ML: implémentation modulaire et prévision de performances
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne PowerPoint PPT Presentation


  • 50 Views
  • Uploaded on
  • Presentation posted in: General

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 :

Download Presentation

Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Encadrement fr d ric loulergue fr d ric gava universit paris 12 val de marne

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

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)


Pr liminaires

Préliminaires


Bulk synchronous parallelism

Bulk Synchronous Parallelism

  • Machine BSP : p paires processeur-memoire + réseau+ unité de synchronisation globale

  • Execution BSP : séquence de super-étapes:

  • T(s) = (max0i<p wi) + hg + l


La biblioth que bsmllib

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

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

Les primitives BSMLlib (2)

type  option = None | Some of 

put: (int option) par(int option) par

put =


Travail effectu

Travail effectué


Objectifs du travail

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

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

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

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

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


Une exp rience 2

Une expérience (2)


Conclusions

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


  • Login