OVERALL CHANGES:
* Port to windows.
We still experience issues on this platform, but we believe that at
least MSG is usable.
GRAS API BREAKAGE (for simplification purpose, sorry):
* the gras_msgtype_by_name is not used anymore. Instead of
gras_msg_send(toserver, gras_msgtype_by_name("request"), &request);
you can write (and must)
gras_msg_send(toserver, "request", &request);
- If you still want to pass a gras_msgtype_t to the function (to cache
the type and avoid the lookup time), use the gras_msg_send_() variant.
- Impacted functions:
gras_cb_register, gras_cb_unregister, gras_msg_send, gras_msg_wait,
gras_msg_rpccall, gras_msg_rpc_async_call, gras_msg_wait_ext
* The callbacks are now expected to return 0 when everything went well
(just like the main() function)
GRAS new features and improvements:
* New module mechanism where user code can use per process globals [Mt]
This is similar to gras_userdata_*() functions, but for libraries. It
factorize some code developped over and over in the examples and AMOK.
It has still to be documented and used (only amok/peermanagement is
converted for now).
* Fix a vicious bug in the TCP buffering mechanism which leaded to message
loss when they were small enough to fit into the buffer and sent quickly
enough so that they can all get received in one shoot.
* gras_datadesc_by_name and gras_msgtype_by_name: now raise an exception
if not found. Use the *_or_null() variant for the old semantic.
* In gras_msg_handle, do not discard messages without callback.
They are probably messages to be explicitly awaited later (ie, proofs of
mis-synchronization in userland since they are sent before being awaited)
No big deal usually.
* gras_socket_meas_send/recv: semantic changed!
The numerical arguments used to be (1) the total amount of data to send
and (2) msg_size. This was changed to (1) msg_size and (2) amount of
messages. This was need for the fool willing to send more than MAXINT
bytes on quite fat pipes.
AMOK:
* Do really rename the hostmanagement module to peermanagement. [Mt]
Ie, rename functions from amok_hm_* to amok_pm_*. This breaks the API,
but this is rather new and this was documented in the module
documentation (poor excuses, I admit)
* Bandwidth measurement semantic changed! This follows the changes to
gras_socket_meas_send/recv explained above.
SIMDAG:
* A sequential mode has been added to the workstations. When a workstation
is in sequential mode, it can execute only one task, and the other tasks
are waiting in a FIFO. [Christophe Thiery]
SURF:
* The KCCFLN05 workstation model now handles parallel tasks. It is the
model for SIMDAG. [Christophe Thiery]
* Bug fix in the maxmin solver: Some values were close to 0 instead of
equal to 0, which caused some bad behaviors in
saturated_constraint_set_update. I now use a threshold mechanism like in
surf. [AL]
XBT:
* When running manually src/testall, you select specific units [Mt]
testall is the result of our cunit mechanism, and should replace all
the scripty thingy around since bash don't run easily on billware.
* A mallocator system has been added. [Christophe Thiery]
Mallocators allow you to recycle your unused objects instead of freeing them
and allocating new ones.
Documentation update:
* FAQ reworking + New FAQs:
- "Valgrind spits tons of errors!" [Mt]
- "How to repport bugs" [Mt]
- "Cross-compiling a Windows DLL of SimGrid from Linux" [Mt]
- "What is the difference between MSG, SimDag, and GRAS?" [Mt]
- Communication time measurement within MSG [AL]
- I experience weird communication times when I change the latency [AL]
* GRAS tutorial [Mt]
It contains:
- an introduction to the framework and to the used communication model
- an initiatic tour introducing the most proheminent features:
o Part 1: Bases
. Lesson 0: Installing GRAS
. Lesson 1: Setting up your own project
o Part 2: Message passing
. Lesson 2: Exchanging simple messages
. Lesson 3: Passing arguments to the processes (in SG)
. Lesson 4: Attaching callbacks to messages
. Lesson 5: Using globals in processes
. Lesson 6: Logging information properly
. Lesson 7: Using internal timers
. Lesson 8: Handling errors through exceptions
. Lesson 9: Exchanging simple data
. Lesson 10: Remote Procedure Calling (RPC)
. Lesson 11: Explicitly waiting for messages
. Recapping of message passing features in GRAS
- A HOWTO section containing:
o HOWTO design a GRAS application
More are due, of course. They will come latter. In the meanwhile, you can
check the examples which are still here.
-- Da SimGrid team <simgrid-devellists.gforge.inria.fr> Fri Mar 16 21:11:46 CET 2007