The "Easter in Cargese" release. Also known as (major changes):
* the "se habla Java, Ruby 話せます, fala-se Lua (and deaf-friendly)"
~> bindings were greatly improved
~> new tracing infrastructure for better visualization introduced
* the "Welcome to configury modernity" release.
~> we switched from autotools to cmake, and improved our cdash
A more detailled list of changes follow (full detail in svn log).
Java Bindings: Various Cleanups
* (install java-gcj-compat-dev on debian-like to use them)
* Remove put/get: no need to export deprecated interface in Java
Use send/receive instead.
* Cleanup the examples and add a README per directory
* Remove example autoDestination (that's the only way to go now)
* Remove example explicitDestination (was a plain copy of basic)
* Make JniException a runtime exception, so that there is no need to
declare the fact that you may encounter such a beast. I guess that
nobody will ever want to survive such error.
* Create specific errors for each MSG case of failure:
host failure, transfer failure, timeout, task cancelled
* Cleanup the exceptions that may get thrown by each function
* Other internal cleanups in Java bindings. Performance still bad :/
Ruby and Lua Bindings: create them
* (install ruby1.8-dev/liblua5.1-0-dev on debian-like to use them)
* That's new and great, you should try them out.
Same functionalities than Java bindings, only even less polished
SimDag:
* Kill the useless "rate" argument of SD_task_get_execution_time()
Everyone used to provide -1 as a value, it was not used, and the
semantic of a possible use wasn't even clear.
* SD_SCHED_NO_COST: Constant to use as cost in SD_task_schedule()
either as comm costs or compute costs to mean that there is no
such thing for that specific task.
* Add a SD_task_set_name() function
* Fix SD_task_unschedule() on typed tasks
* Fix SD_task_get_execution_time() to return seconds, not flop*sec
* In DAX loader, accept useless 'level' attributes to <job> since
LIGO DAGs have them (seem to be to ease graphical representation).
MSG:
* Add an example masterslave_mailbox.c using send/receive and not
the deprecated put/get interface.
* Kill the MSG_paje_output() function. It's a noop since 2 years.
* Kill MSG_WARNING and MSG_FATAL return codes: they were not used
anywere in source.
* Rename MSG_TIMEOUT_FAILURE into MSG_TIMEOUT for sake of logic
(declare MSG_USE_DEPRECATED to still have the old name)
* Add a MSG_task_set_data() function
* About trace replay (see examples/msg/actions):
- implement barrier
- Allow to work with splitted trace files for each process
Give the specific trace file as argument of each process,
and call MSG_action_trace_run(NULL)
You can still have one merged file for all processes.
- Fix implementation of collective operations
* Allow task_execute() on 0-sized tasks (closes 10063)
SMPI:
* This is the first release of SimGrid where SMPI is not considered
beta anymore (even if some corners should still be improved)
* Port over the new SIMIX_network submodule (internal refactoring)
* Basic support to log events as with SMPE (use --cfg=SMPE:1)
* Implement more missing elements of the standard:
- MPI_COMM_SELF
- MPI_MAXLOC MPI_MINLOC + all associated datatype MPI_DOUBLE_INT,
MPI_FLOAT_INT, etc.
- MPI_Address() MPI_Get_count() MPI_Type_free() MPI_Type_extent()
MPI_Scan() MPI_Get_processor_name()
- Added implementation of missing case for Alltoall (warning: it's
*not* the bruck variant from OpenMPI; based on Alltoallv instead)
- SMPI_MPI_Gather() SMPI_MPI_Gatherv() SMPI_MPI_Scatterv()
SMPI_MPI_Reduce_scatter() SMPI_MPI_Allgather()
SMPI_MPI_Allgatherv()
* Bug fixes include:
- MPI_Waitsome() was broken
- Allow relative includes in smpicc
- Command line cfg argument 'reference_speed' was ignored...
- Some functions did not properly lead to auto-benching of user code
- smpicc passes -O2 by default (just like openmpi one)
SIMIX:
* add SIMIX_action_suspend() and SIMIX_action_resume() functions
* Bug fixes about timeouts during communications
* add SIMIX_message_sizes_output() as a pimple to write to file the
amount of messages per size. Use gnuplot to get histogram.
Pimple because that's the only user-visible function of simix,
defined directly in xbt.h (irk, sorry)
* About semaphores:
- Add a SIMIX_sem_get_capacity() function
- Fix interactions with processe resume/suspende
- release_forever() was stupidly broken
- Fix SIMIX_display_process_status() for processes in a semaphore
- Make SIMIX_sem_block_onto() user-visible
* Refactoring context stuff:
- Use pseudo-OOP for better modularity
- reimplement SIMIX_process_kill() without process_schedule() so
that the latter can take as invariant that it is called from
maestro.
- Merge context_start into context_new for sake of simplicity
SURF:
* Add a Vivaldi network model, coded live during SUD'10 ;)
* Rename configuration variables to start a hierarchy:
o cpu_model -> cpu/model
o network_model -> network/model
o workstation_model -> workstation/model
* New configuration variables:
o network/bandwidth_factor: correction to bandwidth
o network/latency_factor: correction to latency
o netwotk/weight_S: correction to the weight of competing streams
* Add a long description to the models, that users can see with such
argument on the command line: --cfg=cpu/model:help
* --help-models display the long description of all known models
XBT:
* config: add the ability to set a default value after registration
Does not override any previously set value (e.g. from cmd line)
* dict: allow to have integer key and data.
When so, you need to use the following functions
void xbt_dicti_set(xbt_dict_t dict, uintptr_t key, uintptr_t data);
uintptr_t xbt_dicti_get(xbt_dict_t dict, uintptr_t key);
void xbt_dicti_remove(xbt_dict_t dict, uintptr_t key);
In contrary to regular dicts, the key is not malloced before copy.
Mixing scalar and regular elements in the same dict is not tested
(but may work).
* Allow to use xbt_dynar_shrink() to expend the dynar instead
Tracing for Visualization:
* SimGrid is now instrumented in order to generate a trace file for
visualization analysis: to use it, need to compile SimGrid with the
"tracing" option enabled, and instrument the program using SimGrid with
TRACE_start, TRACE_category, TRACE_msg_set_task_category and TRACE_end
(among other functions).
* The instrumentation only traces the platform utilization for now
* Documentation to use the tracing functions and how to analyze the
traces with the Triva tool is written.
* More information about: SimGrid FAQ (in the section Tracing Simulations
for Visualization)
Build system:
* We moved to cmake as default build system. Autotools support will
be dropped soon. Check the FAQ for more info about how to use it.
* Greatly improved our cdash/ctest interactions
Check http://cdash.inria.fr/CDash/index.php?project=Simgrid
* Added memory checking tests with valgrind; lot of memleak fixing.
This may be the first release of SimGrid with so few memory issues
* Added code coverage tests.
Our coverage is still improvable, but at least we see it on cdash.
-- Da SimGrid team <simgrid-devellists.gforge.inria.fr> Wed, 28 Apr 2010 28 17:11:16 +0100