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
38 | sleep a bit if we are looping too fast
40 send CLOSE on data for all neighbors
41 wait for CLOSE on data from all neighbors
43 The loop terminates when process::still_running() returns false.
44 (read the source for full details...)
46 * Load-balancing thread
50 | call load-balancing algorithm
52 | sleep (min_lb_iter_duration)
53 | receive ctrl messages
55 send CLOSE on ctrl for all neighbors
56 wait for CLOSE on ctrl from all neighbors
58 The loop terminates when process::still_running() returns false.
59 (read the source for full details...)
63 * definition of load on heterogeneous hosts?
64 * how to detect convergence?
65 : No need to detect convergence. Computation stops when there
67 * how to manage link failures?