Home My Page Projects SimGrid
Summary Activity Forums Tracker Lists Docs News SCM Files

Project Filelist for SimGrid

File Release Notes and Changelog

Release Name: 3.12

Release Notes
The Facelift Release. Major changes:

 * Many interface glitches addressed, everywhere.
   - Require g++-4.7, Java 7 and boost 1.48
   - Builds on Linux, OS X, Windows and FreeBSD
   - See ChangeLog for renamed functions and options.

 * Energy plugin: major cleanups/rewrites.
   http://simgrid.org/tutorials/simgrid-energy-101.pdf

 * Model-Checker progresses toward production use:
   - More robust (now runs in a separate process).
   - More efficient (with snapshots' memory compaction).
   - More usable (execution paths replayed out of MC)
   http://simgrid.org/tutorials/simgrid-mc-101.pdf

 * SMPI improvements:
   - Better standard coverage  - SMP-aware collectives
   - InfiniBand model          - Early support for RMA
   - Replay: Dynamic selector  - MVAPICH2 selector
   http://simgrid.org/tutorials/simgrid-smpi-101.pdf

Upcoming v3.13 will introduce new interfaces, toward SimGrid 4.
Change Log
 Build System
  * Require g++ v4.7 at least to not speak prehistorical C++.
  * Require Boost 1.48 (for signal2 component).
  * Java must be version 7 at least when activated.
  * Builds on Windows again (including Java bindings).
  * Tracing is now always enabled (no way to turn it out)
  * Remove GTNetS. It was not working anyway.
  * Various cleanups in the cmake scripts.
  * Move headers around to sort them out on installed systems:
    - instr/instr.h  -> simgrid/instr.h
    - instr/jedule/* -> simgrid/jedule
    - simdag/datatypes.h was removed
    - simdag/simdag.h -> simgrid/simdag.h
    - msg/datatypes.h was removed
    - msg/msg.h -> simgrid/msg.h

 cMSG:
 * Interface improvement:
   - Rename MSG_host_is_avail(h) to MSG_host_is_on(h)
   - Sanitize the interface in MSG_task_ module:
     - Merge two functions that were close enough but misleading:
       set_compute_duration(t)      -> set_flops_amount(t)
       get_remaining_computation(t) -> get_flops_amount(t)
     - set_data_size(t) -> set_bytes_amount(t)
       get_data_size(t) -> get_bytes_amount(t)
   - Massive cleanups in the functions related to the energy
     - MSG_host_get_pstate_number() -> MSG_host_get_nb_pstates()
   - New: MSG_host_get_pstate()
 * New example:
   - msg/energy/onoff: switching hosts on and off
 jMSG:
 * Interface improvement:
   - Rename Host.isAvail() to Host.isOn()
   - Rename Process.currentProcess() to Process.getCurrentProcess()
   - Rename Task.setDataSize() to Task.setBytesAmount()
   - Merge Task.getRemainingDuration() and Task.getComputeDuration() into Task.getFlopsAmount()
 * Bug fixes:
   - #18874: Actually allows the GC to reclaim tasks

 SIMIX:
 * New functions
   - SIMIX_process_throw: raises an exception in a remote process
 * Refactoring: Separate sub-modules
   - libsmx: the public interface, as libc in a real system
   - popping: the strange dance that converts a user request into a kernel handling
   - smx_context_*: the virtualization mechanisms that embed the user code
   - smx_*: the handling of each simcalls
 * Interface cleanup:
   - simcall_host_set_power_peak_at -> simcall_host_set_pstate
 * Rename smx_action_t into smx_synchro_t, making explicit that these
   things are used to synchronize processes with their environment.
   For example, a communication is a sort of synchronization involving
   the communicating processes (that may block until the exchange) and
   the platform. The same can be said from computations, etc.
 * Bug fixes:
   - #18888: segfault when a process ends before its kill_time

 SMPI:
 * New functions
   - Onesided early support for : MPI_Win_(create, free, fence,
     get_name, set_name, get_group), MPI_Get, MPI_Put, MPI_Accumulate,
     MPI_Alloc_mem, MPI_Free_mem.
   - MPI_Keyval*, MPI_Attr* functions, as well as MPI_Comm_attr*, MPI_Type_attr* variants (C only, no Fortran support yet)
   - MPI_Type_set_name, MPI_Type_get_name
   - MPI_*_c2f and MPI_*_f2c functions
   - MPI_Info_* functions (beware, get_nthkey may not follow the insertion order)
   - MPI_Pack, MPI_Unpack and MPI_Pack_size functions
   - Activate a lot of new tests from the mpich 3 testsuite
 * Features
   - Constant times can be injected inside MPI_Wtime and MPI_Test through options smpi/wtime and smpi/test
   - InfiniBand network model added : Based on the works of Jerome Vienne
     http://mescal.imag.fr/membres/jean-marc.vincent/index.html/PhD/Vienne.pdf
   - When smpi/display_timing is set, also display global simulation time and application times
   - Have smpirun, smpicc and friends display the simgrid git hash version on --git-version
 * Collective communications
   - SMP-aware algorithms are now dynamically handled. An internal
     communicator is created for each node, and an external one to handle
     communications between "leaders" of each node
   - MVAPICH2 (1.9) collective algorithms selector : normal and SMP
     algorithms are handled, and selection logic is based on the one used
     on TACC's Stampede cluster (https://www.tacc.utexas.edu/stampede/).
   - Support for Rabenseifner Reduce/Allreduce algorithms (https://fs.hlrs.de/projects/par/mpi//myreduce.html)
 * Replay
   - Replay now uses algorithms from wanted collective selector
   - Replay can be used with SMP-aware algorithms
   - Memory occupation of replay should now be contained (temporary buffers allocated in collective algorithms should be shared between processes)
   - Replay can now replay several traces at the same time (check examples/smpi/replay_multiple example), to simulate interactions between several applicatio$
 * Bug fixes
   - [#17799] : have mpi_group_range_incl and mpi_group_range_excl better test some corner cases
   - Correctly use loopback on fat-tree clusters
   - Asynchronous small messages shouldn't trigger deadlocks anymore
 * Energy/DVFS cleanup and improvement
   - smpi_set_host_power_peak_at() -> smpi_set_host_pstate()
   - new: smpi_get_host_pstate()
 SURF
  * Bug fixes
   - "Full" network optimization flag was broken since Surf++
   - Better handling of precision flags in maxmin
   - Fix bug causing sometimes "Impossible" errors
   - Properly pass cluster properties to included hosts
  * Improvement of the Energy plugin.
    - Always update the consumption before returning that value
    - New property: watt_off to denote the dissipation when the host is off
    - New functions getWattMinAt and getWattMaxAt to retrieve the
      dissipation of pstates that we are not currently at.
  * Java: class NetworkLink renamed to Link
  * New function: simcall_process_get_kill_time()
  * Massive rename s/workstation/host/
    - That's intrusive, but that's good for the project consistency. Sorry.
    - Change config option "workstation/model" into "host/model"
 XBT
  * New functions
   - Add a xbt_heap_update function, to avoid costly xbt_heap_remove+xbt_heap_insert use
   - Add a xbt wrapper for simcall_mutex_trylock (asked in [#17878])
   - Add two new log appenders : rollfile and splitfile. Patch by Fabien Chaix.
   - xbt_dirname and xbt_basename for non-POSIX systems
 MC
  * The model checker now runs as a separate process.
  * The model checker runs must now be launched with the new simgrid-mc program.
  * Record/Replay: the MC can display a textual representation of a path in the
    execution graph. It can then be replayed outside of the model checker.