Bulk Synchronous Parallel ML

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
Bulk Synchronous Parallel ML
Informations
Développé par 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-Est Créteil Val-de-Marne
Écrit en OCamlVoir et modifier les données sur Wikidata
Environnement GNU/Linux, Unix
Type Bibliothèque logicielle
Licences GNU LGPL 2.1
Site web https://traclifo.univ-orleans.fr/BSML

BSML est une bibliothèque logicielle pour OCaml. Elle donne accès aux paramètres BSP (en) 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 type int).

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é où est la valeur de type 'a sur le processeur i.

Modules

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 de mkpar)

val proj : 'a par -> int -> 'a

Utilitaires

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 vecteur v. 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

  1. Gaétan Hains, Algorithmes et programmation parallèles. Théorie avec BSP et pratique avec OCaml, Collection références sciences, Ellipses, Paris 2018.

Voir aussi

Liens externes