Arnaud Giersch [Wed, 12 Jan 2011 12:58:26 +0000 (13:58 +0100)]
Do not call flush automatically in communcator::send...
... and insert appropriate calls in process methods.
The goal is here to destroy achieved communications as soon as
possible, and avoid a bug in SimGrid 3.5 that make the simulation
very slow when there are many communications.
Arnaud Giersch [Thu, 6 Jan 2011 15:59:57 +0000 (16:59 +0100)]
Use a separate thread to handle incoming messages.
Incoming messages were taken into account very late,
because of the following scheme:
...
* do something (compute, load-balance, ...)
...
* receive some message
* create a new asynchronous receive communication
Here, we cannot have received any new message, even
if the sender was ready a long time ago, since the
transfer only started when we created the new communication.
Thus, we start a new iteration.
The solution is to implement a separate thread to handle incoming
messages asynchronously. Those messages are put in a queue to be
consumed later.
Arnaud Giersch [Tue, 21 Dec 2010 16:26:44 +0000 (17:26 +0100)]
Deadlock fix, and other changes.
Fix a deadlock occuring when there was no load anymore in the system.
Each remaining process had nothing to compute, nor to send to their
neighbors, and were blocked waiting for an incoming message.
The fix consists in:
* adding a shared global variable total_load_running, the sum of loads
currently in the system ; and
* ensuring this variable is always up-to-date ; and
* making processes terminate if total_load_running is null.
The use of a global variable is not satisfactory, but it is good
enough for now.
It is also verified, at the end of the simulation, that
total_load_running is null.
Other important changes in this commit are:
* process::receive() now consumes all pending messages (it used to
consume only one).
* The iteration number is only incremented when there is something to
compute (load > 0.0).
Arnaud Giersch [Wed, 15 Dec 2010 17:10:07 +0000 (18:10 +0100)]
Add load balancing algorithm selection facility.
Plus...
* add named_object_list templates
* first tests with MSG_set_function in MY_launch_application
* some preliminary work for topology selection
* rename loba_least_loaded -> loba_simple
* some minor cleanups
Arnaud Giersch [Tue, 14 Dec 2010 18:22:16 +0000 (19:22 +0100)]
Wip++...
* sort hosts by name in hostdata
* remove old "Calculs" binding
* add some stuff for automatic deployment
* add cluster1000.xml
* rename application.xml -> deployment.xml