]> AND Private Git Repository - loba.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Documentation updates.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Thu, 10 Feb 2011 17:52:44 +0000 (18:52 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Thu, 10 Feb 2011 17:52:44 +0000 (18:52 +0100)
NOTES
TODO

diff --git a/NOTES b/NOTES
index fbb82a3d0c8ebd49e545b783e84e708b6a5f93a5..079372baac3ce02e80d468461d9dfddf9fcafaec 100644 (file)
--- 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 6fa956a28f5a40cf7cf417289b59f44e9c2338a1..f97b39d204395c464a8809cda6183862738c292a 100644 (file)
--- 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)