The Summer Release, also known as the "OMG! They Killed Kenny!" version
Java and Ruby:
* Bindings now constitute their own package, separated from the main one.
Rationale: reduce our maintenance nightmare by reducing the module coupling
They will soon be released on their own on gforge.
* In the meanwhile:
svn co svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/simgrid-java
svn co svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/simgrid-ruby
GRAS: It is not considered as stable anymore, but experimental. Sorry.
* It's not quite deprecated for now because we have no replacement,
but it may soon become the case.
SMPI
* New MPI functions supported: MPI_Comm_disconnect, MPI_Comm_get_name
* Fortran: New user-level cache variable to store the rank of the running
process. This improves performance by an order of magnitude.
* C: New coccinelle script to automatically locate and modify global and
local static variables.
* Improved SMPI network model with a sender-side gap to account for multiple
parallel sends.
MSG
* New function MSG_comm_get_status(). MSG_comm_test() and MSG_comm_testany()
only say if a communication is finished, no matter whether it succeeded or
failed. You can call MSG_comm_get_status() to know the status of a finished
communication.
* New function MSG_task_dsend() to send a task and detach it. When a
communication is detached, you are never notified of its success or failure
and the memory is released automatically once it is finished. This function
is useful when you don't care about the end nor the success of a
communication.
* Change the prototypes of action replay. Sorry for inconvenience,
but this is really more efficient this way (and to adapt your code,
you just have to fix the initialization, that shouldn't be too long)
* Kill the braindead MSG_task_refcount_dec() function. I guess nobody
ever managed to do anything useful with it.
* New function MSG_comm_testany(). Similarly to MSG_comm_waitany(), it
takes a dynar of communications. It returns immediately and gives the
index of a finished communication (if any).
* New example: a basic implementation of the Chord P2P algorithm.
SURF
* New model for multi-core CPUs. You can now use the core attribute to
precise the number of cores of a host. This is a basic model. Every
process running on the host receives at most the power provided in
the DTD (throughput<=power). Total throughput of process cannot exceed
power * num_cores.
* New peer tag. This peer tag creates a tiny AS comprising a host and a
router linked by an up-link and a down-link (possibly asymmetrical).
This kind of pattern allows to easily build last-mile model style platforms.
Aggregating such patterns in a rule-based AS is thus the technique of
choice for modeling large peer-to-peer/volunteer computing/cloud platforms.
* New model for Vivaldi routing. We transformed the Vivaldi network model
into a Vivaldi routing model (based on the rule-based model). This allows to
combine Vivaldi based latencies with last-mile platforms.
SIMIX
* Added a check for NaN of IEEE754 infinite in the double entries of
the smx_user.c file
* Introduce a new context factory "raw", highly inspirated from the
ucontext factory, but using manually crafted functions in assembly to
do the work in an efficient manner.
* Allow to change the used context factory at run time, not only at
compilation time. Use --cfg=contexts/factory:raw for maximal speed.
* Add an option --cfg=contexts/stacksize:N to set the stack size of the user
contexts at runtime (only with raw contexts or ucontexts).
* Completely rewrote this module to allow parallel execution of user
processes. Use --cfg=contexts/nthreads:N to execute user processes
with N parallel threads (the default is 1, meaning no parallelism).
* Allow to decide dynamically between sequential and parallel modes.
When nthreads > 1, you can use --cfg=contexts/threshold:P to run the user
processes in parallel only when their number is greater than or equal to P
(the default is 2).
* Added a check for NaN of IEEE754 infinite in the double entries of
the smx_user.c file
XBT
* New command line option: if you pass --cfg=verbose-exit:0, SimGrid
won't output the state of processes when interrupted with Ctrl-C
* Add a new function xbt_dynar_to_array that transforms a dynar into a
NULL-terminated array. This may solve backward compatibility issues
due to the change to return type of SD_simulate. See also:
http://lists.gforge.inria.fr/pipermail/simgrid-user/2010-December/002206.html
* Add new macros with variable number of arguments.
- in xbt/log.h: XBT_DEBUG, XBT_VERB, XBT_INFO, etc.
- in xbt/asserts.h: xbt_assert
- in xbt/cunit.h: xbt_test_{add,fail,assert,log}
- in xbt/ex.h: THROWF and RETHROWF.
Define XBT_USE_DEPRECATED if you want to use the old numbered macros like
INFO1, INFO2, etc.
* Change xbt_die() to accept a format string with arguments, just like printf.
* New data structure: xbt_lib_t, like a dict but more general and with better
memory handling.
INSTR
* New configuration options
Options triva/categorized and triva/uncategorized can be used to generate
graph configuration files for Triva visualization tool.
* Configuration option tracing/platform is renamed to tracing/categorized
* XBT logging makes tracing error checks easier, new root log hierarchy: instr
* New TRACE_user_link_variable interface:
User provides the name of the link and the tracing variable to attach to it
* the declaration of tracing categories must be done after the environment
creation
* simpler tracing interface, just one way to declare categories
TRACE_category or TRACE_category_with_color, it is up to you
* links in the trace file are again identified by their names
* trace contains the full platform hierarchy exactly as declared using the ASes
* Options tracing/msg/[task|process]:1 groups the process by hosts
for both cases, tasks and processes must have names that are unique during the simulation
these options generate traces that are suited to gantt-charts, such as the space-time view of Paje
* The experimental option tracing/msg/volume is deprecated
its functionality may be reincorporated if needed
* Buffering
The tracing generates a trace file with unordered timestamped events,
because of the way the core simulator (surf) works. A script available
at the tools directory (fix-paje-trace.sh) can be used to put the events
in order. We have changed the tracing so it can generate ordered timestamped
events in the final trace, but depending on the simulator (and how much time
is simulated) that can lead to a huge memory utilization. It is deactivated
by default, but it can be activated using the --cfg=tracing/buffer:1 switch.
Build Infrastructure
* Define a SIMGRID_VERSION macro in simgrid_config.h.
- We are trying hard to keep the API stable, but it may happen that
some things change (we're a research project after all, not a
nuclear plant operating system). If such things should happen, you
could rely on that macro to adapt.
- current value: 30600 for 3.06.00, aka 3.6
* Define macro MAKE_SIMGRID_VERSION(major, minor, patch) to help building
a number that can be compared with SIMGRID_VERSION.
* Add a build option -Denable_debug (set to ON by default): when set to OFF,
assertions and verbose/debug logging events are disabled at compile time.
-- Tue Jun 21 08:57:43 CEST 2011 Da SimGrid team <simgrid-devellists.gforge.inria.fr>