-SimGrid (3.20) NOT RELEASED YET (Release target: June 21. 2018 10:07 UTC)
+SimGrid (3.22) NOT RELEASED (Release Target: December 21. 2018, 22:23 UTC)
-TRACE
- - Change --cfg=tracing/msg/vm to --cfg=tracing/vm as virtual machine
- behavior tracing is no longer limited to MSG
+Fixed bugs:
+ - #261: Document the parameters of parallel execution's constructor
-MSG
- - The deprecation of MSG is ongoing. A lot of functions are now simple
- wrappers on the C API of S4U. All these wrappers (and their S4U counterparts
- can be found in src/msg/msg_legacy.cpp).
+----------------------------------------------------------------------------
-S4U:
- - Introduced new function simgrid::s4u::Host::get_actor_count. This function
- returns the number of actors running on a specific host.
+SimGrid (3.21) October 3. 2018
+
+The Restarting Documentation (TRD) Release.
+
+Documentation:
+ - Convert the user manual to Sphinx for improved usability.
+ Unstable version now hosted on https://simgrid.frama.io/simgrid
+ Many glitches remain; stay tuned.
+ - Restrict the Doxygen reference API to the installed header files.
+ (documenting all internals this way is overkill + doxygen scales badly)
+ - New tutorial on S4U (highly inspired from the old MSG one, but with
+ a git repository to fork as a starting point, and a docker image)
+ - Started but not finished a SMPI tutorial inspired from the JLPC'14 one.
+ - The Developper manual is still to be converted (not compiled until then)
+ - Some parts are still missing in this conversion (such as the
+ platform and deployment sections) while others were blindly converted
+ and would need more love (such as the configuration flags).
+ Things will certainly further improve in the future releases.
+
+S4U new features:
+ - Fully reimplement auto_restart mechanism that was utterly broken
+ (fix #22, #131 and #281 that were all very related)
+ - Implement semaphores (fix #303 and #291)
+ - When creating an actor from a function and its parameters,
+ move-only parameters are not allowed anymore, as it would prevent
+ the actor to be restartable if its parameters are consumed on run.
+ - s4u::Io: IOs go asynchronous as activities. New methods in s4u::Storage:
+ - io_init(sg_size_t, s4u::Io::OpType) to create a READ or WRITE asynchronous
+ IO operations that can be started, waited for, or canceled as a regular
+ activity.
+ - read_async(sg_size_t) and write_async(sg_size_t) which are wrappers on
+ io_init() + start()
+
+Tracing:
+ - Rename 'power' and 'power_used' variables into 'speed' and 'speed_used'
+ - New host variable: 'core_count'
-Plugins:
- - Allow to run the Link energy plugin from the command line with
- --cfg=plugin:link_energy
- - Rename Energy plugin into host_energy
- - Rename Load plugin into host_load
+XBT:
+ - Remove xbt_os_thread_specific features
+ - Remove portability wrapper to condition variables
+ - Remove xbt_os_thread_yield()
-simix:
- - Add parameter --cfg=simix/breakpoint to raise a SIGTRAP at given time.
- - kill simix::onDeadlock() that was somewhat dupplicating s4u::on_deadlock()
- - Improve performance when handling timeouts of simix synchros.
+SMPI:
+ - MPICH collective selector now mimics MPICH 3.3b
+ - OpenMPI collective selector now mimics OpenMPI 3.1.2 (default "tuned" setting)
+ - MPI_Init(NULL,NULL) is now allowed
+ - smpi/wtime option now injects time in gettimeofday or clock_gettime calls
+ - Command-line arguments should now be handled properly in Fortran simulations
+ - MPI Attributes and related callbacks should work in Fortran
+ - Apps using C + Fortran should now work
+ - MPI_* calls now check for non MPI_SUCCESS return values and emit warnings
+ - Support MPI_Error_String
+
+Java:
+ - Due to an internal bug, Msg.run() must now be your last line.
+ We hope to fix it in a future release, and we are sorry for the inconvenience.
+
+Fixed bugs:
+ - #22: Process autorestart seem to only work with CAS01 cpus
+ - #56: Feature request: dynamic SMPI replay
+ - #93: simgrid should not eat --help
+ - #111: How to change the loopback link characteristics?
+ - #116: Platform cluster radical
+ - #117: Platform cluster/host order
+ - #129: Replay_multiple on steroid
+ - #131: Java : autostart does not work
+ - #143: Setting a breakpoint at a given time
+ - #235: Network energy models should be integrated
+ - #264: Add ptask L07 resource tracing
+ - #271: Dynamic and manual replay of SMPI traces
+ - #279: Breakpoints option uses time deltas instead of absolute time
+ - #281: Daemonized actor no longer daemonized after an auto-restart
+ - #282: TIT convertor erase traces when using absolute path in the trace list file
+ - #285: segfault when a s4u actor kills itself with msg process tracing activated
+ - #286: Pajé traces are not exposing the number of cores
+ - #287: Command-line parsing should stop when encountering '--'
+ - #288: MPI_Init(NULL, NULL)
+ - #289: Improve documentation of Actor::on_destruction and this_actor::on_exit()
+ - #290: Method to check if a mailbox has a message ready to be consumed
+ - #291: [s4u] semaphores do not seem available yet
+ - #294: Alltoall collective implementation of mpich
+ - #295: Starting a Host as OFF is not supported
+ - #296: DTD too permissive
+ - #299: Add a s4u barrier example
+
+----------------------------------------------------------------------------
+
+SimGrid (3.20) Released June 24. 2018
+
+The proxy snake_case() release.
+
+S4U:
+ - The whole API is now using snake_case() instead of mixing it with camelCase.
+ Compatibility wrappers in place for one year.
+ - We took the opportunity to increase the consistency of the API.
+ Please report any remaining glitches.
+ - New function simgrid::s4u::Host::get_actor_count:
+ Returns the number of actors running on a specific host.
SMPI:
- - SMPI is now tested with ~45 proxy apps from various sources, with none or
- only minor patching needed : check github.com/simgrid/SMPI-proxy-apps
+ - SMPI is now tested with ~45 proxy apps from various sources, with none or
+ only minor patching needed: check https://github.com/simgrid/SMPI-proxy-apps
- Replay: The replay file has been re-written in C++.
- Replay: Tags used for messages sent via MPI_Send / MPI_Recv are now
supported. They are stored in the trace and used when replayed.
- Basic support of MPI_Cancel. Robustness not guaranteed.
- Support of MPI_Win_allocate_shared, MPI_Win_shared_query, MPI_Comm_split_type
(only for MPI_COMM_TYPE_SHARED).
- - New option : smpi/privatize-libs, to add external shared libs to be privatized
+ - New option: smpi/privatize-libs, to add external shared libs to be privatized
by SMPI. They will be copied locally and loaded separately by each process.
Example --cfg=smpi/privatize-libs:"libgfortran.so.3;libscalapack.so".
- - Tracing : add tracing for MPI_Start, Startall, Testall, Testany
- - Interception of getopt, getopt_long and getopt_long_only calls to avoid issues
- with internal index optind with multiple processes. Only works if MPI_Init has
+ - Tracing: add tracing for MPI_Start, Startall, Testall, Testany
+ - Interception of getopt, getopt_long and getopt_long_only calls to avoid issues
+ with internal index optind with multiple processes. Only works if MPI_Init has
already been called.
- - Fortran : SMPI builds a mpi.mod file which should allow use of "use mpi"
+ - Fortran: SMPI builds a mpi.mod file which should allow use of "use mpi"
syntax without preprocessing tricks.
+TRACE
+ - Change --cfg=tracing/msg/vm to --cfg=tracing/vm as virtual machine
+ behavior tracing is no longer limited to MSG
+ - TIT (Time Independent Traces): We finally support tags. Unfortunately,
+ this means that traces now need to be updated or re-obtained; both Irecv
+ and Isend lines in your traces have now in total 5 mandatory fields:
+ <rankid> <command> <to/from rankid> <tag> <size>
+ To update your traces, it suffices to add a 0 for the tag here.
+ - TIT now also supports waiting for a distinct request via MPI_Wait.
+ Wait/Test now wait for a specific request, not just the last one that was
+ issued. This unfortunately means another update, because we need to
+ identify which request you want to wait for. We do this via the
+ triplet (sender, receiver, tag), which needs to be added:
+ <rankid> <command> <sender> <receiver> <tag>
+ - Actions are now in lower case (e.g., "allReduce" becomes "allreduce").
+ New script simgrid_convert_TI_traces.py: upgrade your TI traces.
+
+MSG
+ - The deprecation of MSG is ongoing (but this should not impact you).
+ Many MSG functions are now simple wrappers on the C API of S4U. If
+ you wish to convert your code to S4U, find the S4U counterparts of
+ your MSG calls in src/msg/msg_legacy.cpp.
+ - MSG can still be used, but won't evolve anymore.
+
+Plugins:
+ - Allow to run the Link energy plugin from the command line with
+ --cfg=plugin:link_energy
+ - Rename Energy plugin into host_energy
+ - Rename Load plugin into host_load
+
+simix:
+ - Add parameter --cfg=simix/breakpoint to raise a SIGTRAP at given time.
+ - kill simix::onDeadlock() that was somewhat dupplicating s4u::on_deadlock()
+ - Improve performance when handling timeouts of simix synchros.
+
XBT:
- Config: the C API is now deprecated (will be removed in 3.23), and
the C++ API has been slightly improved.
- - Fix several build issues on OSX.
Other:
+ - Fix several build issues on OSX.
- Move simgrid_config.h to simgrid/config.h (old header still working)
Fixed bugs:
- #150: Inconsistent event names in SMPI replay
- #258: daemonized actors hang after all non-daemonized actors have completed
- #267: Linker error on unit_tmgr
- - #269: SMPI : tracing of MPI_Wait/all/any broken
- - SMPI : Fix various crashes with combined use of MPI_PROC_NULL and MPI_IGNORE_STATUS
+ - #269: SMPI: tracing of MPI_Wait/all/any broken
+ - SMPI: Fix various crashes with combined use of MPI_PROC_NULL and MPI_IGNORE_STATUS
----------------------------------------------------------------------------
Virtual Machines
- Live migration is getting moved to a plugin. Dirty page tracking is
the first part of this plugin. This imply that VM migration is now
- only possible if one this function is called :
+ only possible if one this function is called:
- C/MSG: MSG_vm_live_migration_plugin_init()
- C/C++: sg_vm_live_migration_plugin_init()
- Java: Msg.liveMigrationInit()
SMPI
- New algorithm to privatize globals: dlopen, with dynamic loading tricks
- New option: smpi/keep-temps to not cleanup temp files
- - New option : smpi/shared-malloc-blocksize . Relevant only when global shared
+ - New option: smpi/shared-malloc-blocksize . Relevant only when global shared
mallocs mode is used, allows to change the size of the fake file used
(default 1MB), to potentially limit the number of mappings for large runs.
- Support for sparse privatized malloc with SMPI_PARTIAL_SHARED_MALLOC()
- Fortran ifort and flang compilers support
- - New RMA calls supported (experimental) :
+ - New RMA calls supported (experimental):
- MPI_Win_allocate, MPI_Win_create_dynamic, MPI_Win_attach
- MPI_Win_detach, MPI_Win_set_info, MPI_Win_get_info
- MPI_Win_lock_all, MPI_Win_unlock_all, MPI_Win_flush
* smpirun script should be (much) faster for large deployments.
- * SMPI tracing : fixed issue with poor matching of send/receives.
+ * SMPI tracing: fixed issue with poor matching of send/receives.
- * Replay : Fix broken waitall
+ * Replay: Fix broken waitall
New functions and features
* MSG_parallel_task_execute_with_timeout, to timeout computations.
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.
+ - 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
- 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
+ - 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/).
+ - 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
- 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 applications on a given platform. User can specify the start time of each instance. This should also allow replay + actual applications to run.
* Bug fixes
- - [#17799] : have mpi_group_range_incl and mpi_group_range_excl better test some corner cases
+ - [#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
* 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.
+ - 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.
one node.
* Collective communication algorithms should not crash if used with
improper number of nodes and report the error.
- * SMPI now partially supports MPI_Topologies : MPI_Cart_create, MPI_Cart_shift,
+ * SMPI now partially supports MPI_Topologies: MPI_Cart_create, MPI_Cart_shift,
MPI_Cart_rank, MPI_Cart_get, MPI_Cart_coords, MPI_Cartdim_get,
MPI_Dims_create, MPI_Cart_sub are supported.
* New interface to use SMPI programmatically (still depends on MSG for
- some parts, see examples/smpi/smpi_msg_masterslave) :
+ some parts, see examples/smpi/smpi_msg_masterslave):
- SMPI_app_instance_register(const char *name, xbt_main_func_t code,
int num_processes)
- SMPI_init()
- SMPI_finalize();
* Global variables privatization in MPI executables is now performed at runtime
with the option smpi/privatize_global_variables (default:no).
- Limitations : Linux/BSD only, with mmap enabled. Global variables inside
+ Limitations: Linux/BSD only, with mmap enabled. Global variables inside
dynamic libraries loaded by the application are not privatized (static
linking with these libraries is advised in this case)
- allows to select one in particular with --cfg=smpi/coll_name:algorithm
- allows to use the decision logic of OpenMPI(1.7) or MPICH(3.0.4) by setting
--cfg=smpi/coll_selector:(mpich/ompi)
- * Support for new functions : MPI_Issend, MPI_Ssend, Commutative operations in
+ * Support for new functions: MPI_Issend, MPI_Ssend, Commutative operations in
Reduce
* Add a --cfg:tracing/smpi/internals option, to trace internal communications
happening inside a collective SMPI call.
by a SD_TASK_COMM_E2E typed task. This rate depends on both the nominal
bandwidth on the route onto which the task is scheduled and the amount of
data to transfer.
- To divide the nominal bandwidth by 2, the rate then has to be :
+ To divide the nominal bandwidth by 2, the rate then has to be:
rate = bandwidth/(2*amount)
* Compute tasks that have failed can now be rescheduled and executed again
(from their beginning)
action_free ~> action_unref
action_change_state ~> action_state_set
action_get_state ~> action_state_get
- - Change model methods into functions :
+ - Change model methods into functions:
(model)->common_public->action_use ~> surf_action_ref
* Implement a generic resource; use it as ancestor to specific ones
* After a (long ?) discussion on simgrid-devel, we have decided that the
convention we had on units was stupid. That is why it has been decided
to move from (MBits, MFlops, seconds) to (Bits, Flops, seconds).
- WARNING : This means that all previous platform files will not work as
+ WARNING: This means that all previous platform files will not work as
such with this version! A warning is issued to ask users to update
their files. [AL]
A conversion script can be found in the contrib module of the CVS, under
* REVOLUTION 1: The SimGrid project has merged with the GRAS project
lead by Martin Quinson. As a consequence SimGrid gains a lot in
portability, speed, and a lot more but you'll figure it out later.
- SimGrid now comprises 3 different projects : MSG, GRAS and SMPI.
+ SimGrid now comprises 3 different projects: MSG, GRAS and SMPI.
I wanted to release the new MSG as soon as possible and I have
broken GRAS, which is the reason why, for now, only MSG is fully
functional. A laconic description of these projects is available
* REVOLUTION 3: I have tried to change a little as possible the API of
MSG but a few things really had to disappear. The main differences
- with the previous version are :
+ with the previous version are:
1) no more m_links_t and the corresponding functions. Platforms are
directly read from a XML description and cannot be hard-coded
anymore. The same format is used for application deployment