module Make:
Very often used functions
val replicate : 'a -> 'a Bsml.par
replicate x gives a parallel vector with the value x on each
process.
val parfun : ('a -> 'b) -> 'a Bsml.par -> 'b Bsml.par
parfun f <x0,...,x(p-1)> = <f x0,...,f x(p-1)>
val parfun2 : ('a -> 'b -> 'c) -> 'a Bsml.par -> 'b Bsml.par -> 'c Bsml.par
Same thing as parfun but with a function of arity 2, 3 or
4.
val parfun3 : ('a -> 'b -> 'c -> 'd) ->
'a Bsml.par -> 'b Bsml.par -> 'c Bsml.par -> 'd Bsml.par
val parfun4 : ('a -> 'b -> 'c -> 'd -> 'e) ->
'a Bsml.par -> 'b Bsml.par -> 'c Bsml.par -> 'd Bsml.par -> 'e Bsml.par
val apply2 : ('a -> 'b -> 'c) Bsml.par -> 'a Bsml.par -> 'b Bsml.par -> 'c Bsml.par
Same thing as apply but with aa function of arity 2, 3 or
4.
val apply3 : ('a -> 'b -> 'c -> 'd) Bsml.par ->
'a Bsml.par -> 'b Bsml.par -> 'c Bsml.par -> 'd Bsml.par
val apply4 : ('a -> 'b -> 'c -> 'd -> 'e) Bsml.par ->
'a Bsml.par -> 'b Bsml.par -> 'c Bsml.par -> 'd Bsml.par -> 'e Bsml.par
val mask : (int -> bool) -> 'a Bsml.par -> 'a Bsml.par -> 'a Bsml.par
val applyat : int -> ('a -> 'b) -> ('a -> 'b) -> 'a Bsml.par -> 'b Bsml.par
applyat n f1 f2 v applies function f1 at process n and f2 otherwise
val applyif : (int -> bool) -> ('a -> 'b) -> ('a -> 'b) -> 'a Bsml.par -> 'b Bsml.par
val procs : int list
procs is the list of the process numbers
val this : int Bsml.par
this is the parallel vector such as each process hold its
number
val bsml_print : ('a -> unit) -> int -> 'a Bsml.par -> unit Bsml.par
bsml_print print_element pid element prints the value of
element at process pid using the printer
print_element
val parprint : ('a -> unit) -> 'a Bsml.par -> unit Bsml.par
parprint print v print the parallel vector
v using the
printer
print, one line per process, each line beginning with
the number of the process. For example,
(parprint print_int
(this())) will give the following for 4 processes:
0: 0
1: 0
2: 0
3: 0
val get_one : 'a Bsml.par -> int Bsml.par -> 'a Bsml.par
get <x0,...,xp-1> <i0,...,ip-1> evaluates to
<xi_0,...,xi_p-1>. The process numbers are considered
module p
val get_list : 'a Bsml.par -> int list Bsml.par -> 'a list Bsml.par
The order of the elements of the result list is the same as
the order of the process numbers in the argument list.
val put_one : (int * 'a) Bsml.par -> 'a list Bsml.par
Each process holds a pair (dst,v) where dst is the number of
the process of destination and v the value to send. If dst
is not a valid process number, it is ignored. The result list is
ordered by source process.
val put_list : (int * 'a) list Bsml.par -> 'a list Bsml.par
Each process holds an association liste of pairs (dst,v)
where dst is the number of the process of destination and
v the value to send. If dst is not a valid process
number, it is ignored. If there are two pairs with the same
key, only the first is considered.