- Bulk Synchronous Parallel ML
-
Bulk Synchronous Parallel ML Développeur Laboratoire d'Informatique Fondamentale d'Orléans (LIFO) de l'Université d'Orléans, Laboratory of Algorithms, Complexity and Logic (LACL) de l'Université Paris XII Environnements GNU/Linux, Unix Type Bibliothèque logicielle Licences GNU LGPL 2.1 Site web http://frederic.loulergue.eu/research/bsmllib/ modifier BSML est une bibliothèque logicielle pour Objective Caml. Elle donne accès aux paramètres BSP de l'architecture sous-jacente, en particulier au nombre de processeurs p de la machine parallèle (accessible par le biais de
bsp_p
de typeint
).Sommaire
Architecture
Type vecteur parallèle
Le type
'a Bsml.par
représente un vecteur parallèle de taille p contenant des objets de type'a
.Il est noté < v0,...,vp − 1 > où vi est la valeur de type
'a
sur le processeur i.Modules
- Bsml : contient les primitives de la bibliothèque et les fonctions de calcul du temps d'exécution
- Stdlib : contient les fonctions de la bibliothèque standard
- Base : contient des fonctions parallèles usuelles
- Comm : contient les fonctions parallèles de communication
- Sort : contient des fonctions parallèles de tri
- Back : assure la compatibilité avec les versions antérieures de la bibliothèque
- Tools : contient des fonctions séquentielles usuelles
- Skeleton : contient des fonctions de manipulation des structures réparties
- Array : manipulation de tableaux répartis
- List : manipulation de listes réparties
Primitives
Primitive de parallélisation :
mkpar
val mkpar : (int -> 'a) -> 'a par
Primitive d'application parallèle :
apply
val apply : ('a -> 'b) par -> 'a par -> 'b par
Primitive de communication globale :
put
val put : (int -> 'a) par -> (int -> 'a) par
Primitive de projection :
proj
(duale demkpar
)val proj : 'a par -> int -> 'a
Utilitaires
- bsml fournit une boucle interactive.
- bsmlc produit un fichier bytecode interprété par bsmlrun.
- bsmlopt produit un exécutable en code natif.
Syntaxe alternative
À partir de sa version 0.5, BSML propose une syntaxe alternative visant à améliorer la lisibilité des programmes. Cette syntaxe permet d'exécuter des instructions de manière locale sur chaque processeur, elle fournit une abstraction des primitives et simplifie l'accès aux valeurs locales de chaque processeur.
On utilise la syntaxe
<< >>
pour représenter une section locale, le code entre chevrons étant exécuté localement. Cette construction retourne un vecteur parallèle constitué des p exécutions locales.(* réplication d'une valeur v non-parallèle sur chaque processeur *) << v >>
La syntaxe
$v$
, disponible à l'intérieur des sections locales, donne accès à la composante locale du vecteurv
. On peut accéder au numéro de processeur local (depuis une section locale) à l'aide de la variable$this$
.(* vecteur parallèle où chaque processeur stocke son numéro *) << $this$ >> (* application d'une fonction f non-parallèle à chaque composante d'un vecteur parallèle v *) << f $v$ >> (* application d'une fonction f parallèle à chaque composante d'un vecteur parallèle v *) << $f$ $v$ >>
Notes et références
Voir aussi
- Objective Caml, le langage d'implémentation de BSML
- (en) Modèle BSP
Liens externes
- (en) Site officiel
- (en) Manuel de BSML 0.4
- (fr) Site d'Objective Caml
- (en) Manuel d'Objective Caml 3.11
Catégories :- Logiciel libre sous licence LGPL
- Logiciel pour Unix
- Programmation concurrente
- Calcul parallèle
- Langage fonctionnel
Wikimedia Foundation. 2010.