4 The process parameters are: initial_load [neighbors...]
9 There are two receiving channels per host: control for information
10 messages, and data for load transfers.
15 Each process is made of 3 threads: a receiver thread, a computing
16 thread, and a load-balancer thread.
22 | wait for a message to come, either on data channel, or on ctrl channel
23 | push received message in a buffer of received messages
24 | -> ctrl messages on the one side
25 | -> data messages on the other side
28 The loop terminates when a "finalize" message is received on each
35 | if we received some real load, get it (data messages)
36 | if there is some real load to send, send it
37 | if we own some load, simulate some computing on it
39 send CLOSE on data for all neighbors
40 wait for CLOSE on data from all neighbors
42 The loop terminates when process::still_running() returns false.
43 (read the source for full details...)
45 * Load-balancing thread
49 | call load-balancing algorithm
51 | receive ctrl messages
53 send CLOSE on ctrl for all neighbors
54 wait for CLOSE on ctrl from all neighbors
56 The loop terminates when process::still_running() returns false.
57 (read the source for full details...)
61 * definition of load on heterogeneous hosts?
62 * how to detect convergence?
63 : No need to detect convergence. Computation stops when there
65 * how to manage link failures?