module Network:sig
..end
Network implementation.
Different network implementations are provided, depending on whether
Network.Same
)Network.Poly
)Network.Mono
)type
worker
val create_worker : ?port:int -> string -> worker
create_worker s
creates a new worker located on machine s
.
Raises Invalid_argument
if s
is not a valid machine.
val declare_workers : ?port:int -> ?n:int -> string -> unit
declare_workers s
declares n
workers on machine s
(when n
is not given, it defaults to 1).
Number n
does not necessarily coincide with the number of
available cores of machine s
.
s
could be a machine hostname or an IP number.
If port
is not given, it is set to the default port number
(see below).
val set_default_port_number : int -> unit
Sets the default port number. If not called, the default port number is 51000.
val set_pong_timeout : float -> unit
set_pong_timeout t
sets the upper time limit t
for receiving a
pong message from a worker (since last ping message), before
we declare the worker unreachable. If not specified, it
defaults to 5 seconds.
val set_ping_interval : float -> unit
set_ping_interval t
sets the interval between consecutive ping
messages. If not specified, it defaults to 10 seconds.
typeworker_type =
?port:int -> unit -> unit
The type of forthcoming worker implementations.
Port number is given by port
; default value is 51000
and can
be changed using function set_default_port_number
above.
type
computation_status =
| |
Running |
| |
Done |
| |
Dead |
A worker is distinguished from the master in two possible ways:
Worker.compute
below is explicitely called by the
user program.module Same:sig
..end
Contrary to module Same
above, master and workers are no more
executing the same code. Submodule Master
(resp. Worker
)
provides functions to implement the master (resp. the workers).
Arguments for functions master
, map
, etc. are thus split between
these two submodules.
module Poly:sig
..end
When master and workers are not compiled with the same version of Ocaml, only strings can be passed, hence the monomorphic API below. It is the responsability of user to encode/decode values.
As of now, there is no derived API in this module.
module Mono:sig
..end