![Page 1: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/1.jpg)
Bulk Synchronous Parallel Bulk Synchronous Parallel ML: implémentation ML: implémentation
modulaire et prévision de modulaire et prévision de performancesperformances
Stage de David BillietStage de David BillietEncadrement:Encadrement:
Frédéric Loulergue & Frédéric GavaFrédéric Loulergue & Frédéric Gava
Université Paris 12 Val de MarneUniversité Paris 12 Val de Marne
Laboratoire d’Algorithmique, Laboratoire d’Algorithmique, Complexité et LogiqueComplexité et Logique
![Page 2: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/2.jpg)
ContexteContexte
Cadre général : Programmation fonctionnelle
parallèle Déterministe, sans blocage Prévision de performances (BSP)
Le projet Caraml (2002-2004, ACI Le projet Caraml (2002-2004, ACI Grid)Grid)
![Page 3: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/3.jpg)
PréliminairesPréliminaires
![Page 4: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/4.jpg)
Bulk Synchronous Bulk Synchronous ParallelismParallelism Machine BSP : Machine BSP : p p paires processeur-memoire paires processeur-memoire
+ réseau+ unité de synchronisation globale+ réseau+ unité de synchronisation globale Execution BSP : séquence de super-étapes:Execution BSP : séquence de super-étapes:
T(s) = (maxT(s) = (max00i<i<pp w wii) + h) + hgg + + ll
![Page 5: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/5.jpg)
La bibliothèque BSMLlibLa bibliothèque BSMLlib
Pour Objective CamlPour Objective Caml Un programme parallèle = Un programme parallèle =
Programme séquentiel habituel + Programme séquentiel habituel + operations sur une structure parallèleoperations sur une structure parallèle
Vecteurs parallèles de taille Vecteurs parallèles de taille pp: : par par Accès aux paramètres BSP : Accès aux paramètres BSP :
bsp_pbsp_p,, bsp_g bsp_g,, bsp_l bsp_l
![Page 6: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/6.jpg)
Les primitives BSMLlib Les primitives BSMLlib (1)(1)
mkparmkpar: (int->: (int->) -> ) -> par par
mkpar f = <(f 0), … , (f (p-1))>mkpar f = <(f 0), … , (f (p-1))>
apply: apply: (() par -> ) par -> par -> par -> par par
apply <fapply <f00,…f,…fp-1p-1> <v> <v00,…,v,…,vp-1p-1>=>=
<(f <(f00 v v00),…,(f),…,(fp-1p-1 v vp-1p-1)>)>
projection: projection: atat
![Page 7: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/7.jpg)
Les primitives BSMLlib Les primitives BSMLlib (2)(2)
type type option = None | Some of option = None | Some of
putput: (int: (int option) par option) par(int(int option) paroption) par
put put = =
NoneNone Some Some vv22
NoneNone NoneNone
NoneNone NoneNone Some Some vv55
NoneNone
NoneNone Some Some vv33
NoneNone NoneNone
Some Some vv11
Some Some vv44
NoneNone NoneNone
00 11 22 33NoneNone NoneNone NoneNone Some Some
vv11
Some Some vv22
NoneNone Some Some vv33
Some Some vv44
NoneNone Some Some vv55
NoneNone NoneNone
NoneNone NoneNone NoneNone NoneNone
00 11 22 33
![Page 8: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/8.jpg)
Travail effectuéTravail effectué
![Page 9: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/9.jpg)
Objectifs du travailObjectifs du travail
ExistantExistant: implémentation basée sur MPI: implémentation basée sur MPI
Implémentation modulaire pour faciliter Implémentation modulaire pour faciliter la mise en œuvre et les évolutionsla mise en œuvre et les évolutions
Utiliser d’autres bibliothèques de Utiliser d’autres bibliothèques de communication: MPI, PVM, TCPIP, PUBcommunication: MPI, PVM, TCPIP, PUB
Outil pour la prévision de performances: Outil pour la prévision de performances: programme de benchmark des programme de benchmark des paramètres BSPparamètres BSP
![Page 10: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/10.jpg)
Nouvelle organisation Nouvelle organisation du noyau de la BSMLlib du noyau de la BSMLlib
Noyau (contenant seulement les Noyau (contenant seulement les primitives) générique (module primitives) générique (module foncteur) prenant en argument un foncteur) prenant en argument un module de communicationmodule de communication
Module de communication:Module de communication: pidpid nprocsnprocs sendsend
![Page 11: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/11.jpg)
Modules CommModules Comm
MPI: MPI: Utilisant MPI_AlltoallvUtilisant MPI_Alltoallv Send/receive avec carré latinSend/receive avec carré latin
PVM: PVM: avec carré latinavec carré latin traitement particulier de la sortie traitement particulier de la sortie
standardstandard TCPIP: TCPIP:
carré latin carré latin pur Ocaml avec threadspur Ocaml avec threads
![Page 12: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/12.jpg)
Le programme Le programme bmslprobebmslprobe
Détermine les paramètres BSPDétermine les paramètres BSP Principe:Principe:
pp le nombre de processeurs est connu le nombre de processeurs est connu détermine la vitesse détermine la vitesse rr des processeurs des processeurs
(opérations sur les flottants)(opérations sur les flottants) communications avec messages de communications avec messages de
taille croissante (h-relation croissante): taille croissante (h-relation croissante): méthode des moindres carrés pour méthode des moindres carrés pour obtenir obtenir gg et et LL
![Page 13: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/13.jpg)
Une expérience (1)Une expérience (1) Le programme: produit scalaireLe programme: produit scalairelet 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
![Page 14: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/14.jpg)
Une expérience (2)Une expérience (2)
![Page 15: Encadrement: Frédéric Loulergue & Frédéric Gava Université Paris 12 Val de Marne](https://reader036.vdocuments.fr/reader036/viewer/2022072016/56813206550346895d985a4a/html5/thumbnails/15.jpg)
ConclusionsConclusions
Travail incorporé Travail incorporé dans la future BSMLlib 0.3dans la future BSMLlib 0.3 dans la première version dedans la première version de
Departmental Metacomputing ML (DMML)Departmental Metacomputing ML (DMML)
Travail présenté (par F. Gava) au Travail présenté (par F. Gava) au workshop Implementation of workshop Implementation of Functional Languages (IFL’04) 8-10 Functional Languages (IFL’04) 8-10 septembre 2004septembre 2004