From: Arnaud Giersch Date: Thu, 10 Feb 2011 17:52:44 +0000 (+0100) Subject: Documentation updates. X-Git-Tag: v0.1~148 X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/commitdiff_plain/88ba6cd5952a9a7a58a8a0d9c5ae0691a1fdc5e1?ds=inline Documentation updates. --- diff --git a/NOTES b/NOTES index fbb82a3..079372b 100644 --- a/NOTES +++ b/NOTES @@ -1,23 +1,65 @@ -Process parameters: +Process parameters +================== - initial_load [neighbors...] +The process parameters are: initial_load [neighbors...] -Communications: - - two channels per host: control and data +Communications +============== + +There are two receiving channels per host: control for information +messages, and data for load transfers. Process model +============= + +Each process is made of 3 threads: a receiver thread, a computing +thread, and a load-balancer thread. + +* Receiver thread + --------------- + + Loop + | wait for a message to come, either on data channel, or on ctrl channel + | push received message in a buffer of received messages + | -> ctrl messages on the one side + | -> data messages on the other side + +- + + The loop terminates when a "finalize" message is received on each + channel. + +* Computing thread + ---------------- + + Loop + | if we received some real load, get it (data messages) + | if there is some real load to send, send it + | if we own some load, simulate some computing on it + +- + send CLOSE on data for all neighbors + wait for CLOSE on data from all neighbors + + The loop terminates when process::still_running() returns false. + (read the source for full details...) + +* Load-balancing thread + --------------------- - while (there is something to do) { - compute some task; - get received tasks; - compute load balancing; - send tasks to neighbors; - } + Loop + | call load-balancing algorithm + | send ctrl messages + | receive ctrl messages + +- + send CLOSE on ctrl for all neighbors + wait for CLOSE on ctrl from all neighbors - * Open Questions : - - definition of load on heterogeneous hosts? - - how to detect convergence? - : No need to detect convergence. Computation stops when there - nothing more to do. + The loop terminates when process::still_running() returns false. + (read the source for full details...) - - how to manage link failures? +Open questions +============== + * definition of load on heterogeneous hosts? + * how to detect convergence? + : No need to detect convergence. Computation stops when there + nothing more to do. + * how to manage link failures? diff --git a/TODO b/TODO index 6fa956a..f97b39d 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,3 @@ -* faire un autre thread pour les envois d'infos - -> c'est stupide d'attendre la fin des calcules s'il y en a beaucoup - surtout en bookkeeping... - * review receive with timeout. * verify bookkeeping version. @@ -11,6 +7,8 @@ * add options -j/-J : minimum number of iterations? +* add options -f/-F : termination based on flops achieved? + * add a variant to (not) change neighbor load information at send? * implement loba_* algorithms (start with some trivial one)