SimGrid (3.25.1) UNRELEASED (target: March 20 2020 or v3.26 on 3/26/20)
Important user-visible changes:
-- Surf precision default value is now 1e-9, instead of 1e-5. This was changed as
- several users had difficult to understand issues when using high bandwidth or
- small latency events. The new value was already the default for SMPI and
- should not cause too much performance hit. It can change some simulation
- timings if simulation was skipping a lot of small events (which was actually
- an issue of said simulation). The value can still be changed back using
- --cfg=surf/precision:1e-5
+ - SimGrid now requires a compiler with C++14 support.
+ Sibling projects should upgrade their FindSimgrid.cmake
+ - Surf precision default value is now 1e-9, instead of 1e-5. This was changed as
+ several users had difficult to understand issues when using high bandwidth or
+ small latency events. The new value was already the default for SMPI and
+ should not cause too much performance hit. It can change some simulation
+ timings if simulation was skipping a lot of small events (which was actually
+ an issue of said simulation). The value can still be changed back using
+ --cfg=surf/precision:1e-5.
+ - On some network models (L07, CM02, LV08), an implicit loopback link is created
+ for local communication. Default bandwidth was 500MBps and latency was 15µs,
+ which was rather bad. Default values have been changed to 10GBps and 0 latency.
+ Options network/loopback-lat and network/loopback-bw have been added to adapt
+ these values if needed. Network and routing models already providing separate
+ loopbacks (clusters and such) are not impacted by this change.
+ - SMPI now adds 16 bytes of header to each message sent, in order to simulate
+ metadata that are added to each MPI message by MPI libraries (tag,
+ src/dest, and communicator information). This may change simulation times
+ for very small message sizes, but should be more realistic.
+
+New features:
+ - New routing 'WiFi' that makes it easier to specify a wifi network zone.
+ - New plugins: wifi_energy and link_load. See the associated examples.
+ - New examples: wifi networks, and communication suspend.
General:
-- LTO is now enabled for Intel/clang compilers.
-- LTO behavior on GCC can be parametrized using LTO_EXTRA_FLAG in cmake.
- Setting it to "auto" will use all available cores, while setting it to n will
- use n cores to speedup link step (usage: cmake -DLTO_EXTRA_FLAG=4).
+ - LTO is now enabled for Intel/clang compilers.
+ - LTO behavior on GCC can be parameterized using LTO_EXTRA_FLAG in cmake.
+ Setting it to "auto" will use all available cores, while setting it to n will
+ use n cores to speedup link step (usage: cmake -DLTO_EXTRA_FLAG=4).
+ - Remove obsolete option --cfg=contexts/parallel-threshold.
+ - Further improve the documentation.
-C interface:
+S4U:
+ - the on_exit() of each actor is also executed when the simulation deadlocks.
+ - New functions: s4u::Activity:: suspend(), resume() and is_suspended()
+ An example is provided for s4u::Comm but it should work with Exec and Io.
+
+SMPI:
+ - Update proxy apps coverage of new ECP apps: 60+ apps now tested nightly on
+ https://framagit.org/simgrid/SMPI-proxy-apps
+ - MPI/IO: supports names starting with "./"
+ - Fortran: many MPI/IO bindings, support for MPI_UB/LB, C MPI_INT/FLOAT/DOUBLE
+ datatypes.
+ - smpicc/cxx/ff/f90 now will actually perform definition checks at link time. When
+ building shared libraries, this may cause issues, so environment variable
+ SMPI_NO_UNDEFINED_CHECK can be added to disable this.
+
+C binding and interface:
+ - The return type of the sg_actor_on_exit() callbacks is now 'void'
+ (int value was previously ignored)
- Many MSG tests were converted to the new S4U's interface in C, that
was extended for that.
-Fixed bugs (FG#.. -> framagit bugs; FG!.. -> framagit merge requests):
+Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
+ (FG: issues on Framagit; GF: issues on GForge; GH: issues on GitHub)
- FG#41: Add sg_actor_create C interface
- FG#43: xbt::random needs some care
- FG#48: The Impossible Did Happen (yet again)
+ - FG#50: Suspending an actor executed at the current timestamp fails
+ - FG#52: Zero-seconds timeout : "That's in the past already"
+ - FG#54: How to suspend a comm?
+ - FG!22: Stochastic Profiles
- FG!24: Documentation and fix for xbt/random
+ - FG!35: Add a modeling hint for parallel links in doc
+ - FG!36: [xbt/random] Read/Write the state of the RNG
+ - FG!42: Link cumulated load plugin
+ - FG!44: Test condition variable wait_until+notify_all
+ - GF#18137: Allow different stack sizes?
+ - GH#128: Parallelization of simulation with --cfg=contexts/nthreads
- GH#139: Allow pthread creation in SMPI
+ - GH#336: Packet-level simulation using SMPI?
+ - GH#346: [SMPI] error while loading shared libraries: libsimgrid.so
+ - GH!337: Fix link_energy plugin for wifi platforms
+ - GH!339: Add Mailbox set_receiver method to python binding
+ - GH!344: Cast hugepages macros parameters to int64
----------------------------------------------------------------------------
The Palindrom Day Release.
Important user-visible changes:
-- Improve the Python usability (stability and documentation).
- - A nasty synchronization bug was ironed out, see also below.
- - Python's doc was organized as a separate tree, now integrated with C++.
- - C bindings of S4U were not part of the doc.
- - The C++ doc was also improved as methods are now split by theme.
-- Further deprecate MSG: you now have to pass -Denable_msg=ON to cmake.
- - This is mandatory to use the Java bindings.
- - OFF by default; The plan is to completely remove MSG by 2020Q4 or 2021Q1.
-- SimDAG++: Automatic dependencies on S4U activities (experimental)
- - Some features are already implemented but not all of them
- - Cannot block an activity until it's scheduled on a resource
- - No heterogeneous wait_any() that would mix Exec/Comm/Io activities.
- - See examples/s4u/{io,exec,comm}-dependent for what's already there.
-
-
+ - Improve the Python usability (stability and documentation).
+ - A nasty synchronization bug was ironed out, see also below.
+ - Python's doc was organized as a separate tree, now integrated with C++.
+ - C bindings of S4U were not part of the doc.
+ - The C++ doc was also improved as methods are now split by theme.
+ - Further deprecate MSG: you now have to pass -Denable_msg=ON to cmake.
+ - This is mandatory to use the Java bindings.
+ - OFF by default; The plan is to completely remove MSG by 2020Q4 or 2021Q1.
+ - SimDAG++: Automatic dependencies on S4U activities (experimental)
+ - Some features are already implemented but not all of them
+ - Cannot block an activity until it's scheduled on a resource
+ - No heterogeneous wait_any() that would mix Exec/Comm/Io activities.
+ - See examples/s4u/{io,exec,comm}-dependent for what's already there.
General:
-- Upgrade documented Java dependency to Java 8 (earlier versions don't work).
-- Drop support for Viva/Triva (old visualization tools), hence removed
- TRACE_get_node_types() and TRACE_get_edge_types() functions.
+ - Upgrade documented Java dependency to Java 8 (earlier versions don't work).
+ - Drop support for Viva/Triva (old visualization tools), hence removed
+ TRACE_get_node_types() and TRACE_get_edge_types() functions.
Python:
-- Require pybind11 version 2.4.
-- Greatly improve locking during context switches with Python.
- - Declaring Python callbacks to this_actor::on_exit is now working.
- - No more tests are failing currently, even on win32.
+ - Require pybind11 version 2.4.
+ - Greatly improve locking during context switches with Python.
+ - Declaring Python callbacks to this_actor::on_exit is now working.
+ - No more tests are failing currently, even on win32.
S4U:
-- Actor: Merge signals on_migration_start/end into on_host_change
-- Actor: Rename migrate() into set_host()
-- Disk: Allow users to get the read and write nominal bandwidth values
-- Exec: Implement wait_for(timeout)
-- Io: Implement wait_for(timeout)
+ - Actor: Merge signals on_migration_start/end into on_host_change
+ - Actor: Rename migrate() into set_host()
+ - Disk: Allow users to get the read and write nominal bandwidth values
+ - Exec: Implement wait_for(timeout)
+ - Io: Implement wait_for(timeout)
XML:
-- Parse errors now raise a simgrid::ParseError that you may want to catch.
+ - Parse errors now raise a simgrid::ParseError that you may want to catch.
Kernel:
-- In simgrid::kernel::resource::Model, the methods next_occuring_event*() have
- been renamed to fix a spelling error. As usual, the previous definitions are
- kept with a deprecation warning. However, to avoid runtime errors, it is now
- forbidden to override these deprecated methods in a derived class. Please use
- the new names immediately if you need to override them.
+ - In simgrid::kernel::resource::Model, the methods next_occuring_event*() have
+ been renamed to fix a spelling error. As usual, the previous definitions are
+ kept with a deprecation warning. However, to avoid runtime errors, it is now
+ forbidden to override these deprecated methods in a derived class. Please use
+ the new names immediately if you need to override them.
XBT:
-- Remove unused parameter 'free_ctn' for xbt_dict_set() and xbt_dict_set_ext().
-- Drop unused functions for dicts and dynars: xbt_dict_cursor_get_elm,
- xbt_dict_get, xbt_dict_get_elm, xbt_dict_get_ext, xbt_dict_get_key,
- xbt_dict_remove, xbt_dict_reset, xbt_dynar_compare, xbt_dynar_dump,
- xbt_dynar_foreach_ptr, xbt_dynar_free_data, xbt_dynar_free_voidp,
- xbt_dynar_init, xbt_dynar_insert_at_as, xbt_dynar_merge,
- xbt_dynar_remove_n_at, xbt_dynar_replace, xbt_dynar_search, xbt_dynar_set.
-- New module: random, providing classical random numbers generators.
+ - Remove unused parameter 'free_ctn' for xbt_dict_set() and xbt_dict_set_ext().
+ - Drop unused functions for dicts and dynars: xbt_dict_cursor_get_elm,
+ xbt_dict_get, xbt_dict_get_elm, xbt_dict_get_ext, xbt_dict_get_key,
+ xbt_dict_remove, xbt_dict_reset, xbt_dynar_compare, xbt_dynar_dump,
+ xbt_dynar_foreach_ptr, xbt_dynar_free_data, xbt_dynar_free_voidp,
+ xbt_dynar_init, xbt_dynar_insert_at_as, xbt_dynar_merge,
+ xbt_dynar_remove_n_at, xbt_dynar_replace, xbt_dynar_search, xbt_dynar_set.
+ - New module: random, providing classical random numbers generators.
SMPI:
-- New option : "smpi/auto-shared-malloc-thresh" which sets a value for
- allocations' size above which they are considered "shared" by default (as if
- they were performed through SMPI_SHARED_MALLOC macros).
- Default = 0 = disabled feature.
- Note : malloc, calloc and free are now overriden by smpicc/cxx by default.
- This can cause some troubles if codes are already overriding these. If this
- is the case, defining SMPI_NO_OVERRIDE_MALLOC in the compilation flags can
- help, but will make this feature unusable.
-- Input check is now performed much more consistently and outputs precise
- warnings for each error found
-- New supported calls : MPI_File_set_view, MPI_File_get_view
-- MPI I/O now only supports disks, as storage is discontinued.
-- MPI I/O allows opening files without specifying absolute path
-- Note : SMPI configuration options are now initialized by smpi_init_options()
- call, which should be called if SMPI is not being used through smpirun.
+ - New option : "smpi/auto-shared-malloc-thresh" which sets a value for
+ allocations' size above which they are considered "shared" by default (as if
+ they were performed through SMPI_SHARED_MALLOC macros).
+ Default = 0 = disabled feature.
+ Note : malloc, calloc and free are now overriden by smpicc/cxx by default.
+ This can cause some troubles if codes are already overriding these. If this
+ is the case, defining SMPI_NO_OVERRIDE_MALLOC in the compilation flags can
+ help, but will make this feature unusable.
+ - Input check is now performed much more consistently and outputs precise
+ warnings for each error found
+ - New supported calls : MPI_File_set_view, MPI_File_get_view
+ - MPI I/O now only supports disks, as storage is discontinued.
+ - MPI I/O allows opening files without specifying absolute path
+ - Note : SMPI configuration options are now initialized by smpi_init_options()
+ call, which should be called if SMPI is not being used through smpirun.
Fixed bugs (FG#.. -> framagit bugs; FG!.. -> framagit merge requests):
- FG#9: Python bindings crashing
(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.
+ - Started but not finished an 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
- Rename Energy plugin into host_energy
- Rename Load plugin into host_load
-simix:
+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.
* This is (mainly) a backward compatible change: v4 are valid v4.1 files
- <zone> can be used as a synonym for the now deprecated <as>
- <zoneRoute> can be used as a synonym for the now deprecated <asroute>
- - <bypassZoneRoute> an be used as a synonym for the now deprecated <bypassAsRoute>
+ - <bypassZoneRoute> can be used as a synonym for the now deprecated <bypassAsRoute>
- <actor> can be used as a synonym for the now deprecated <process>
- state_file and avail_file periodicity is now easier to express
(check the documentation) the old behavior should still work.
TRACE:
* Two new tracing options for adding comments to trace file so you
can track your experiments (see --help-tracing for details).
- * New option to generate a impoverished trace file (--cfg=tracing/basic:1)
+ * New option to generate an impoverished trace file (--cfg=tracing/basic:1)
* Adding the SimGrid version that generated the trace file as a comment.
* Instrumenting other MSG functions (MSG_task_isend_with_matching and MSG_task_dsend)
* Fix to avoid key clashes on Paje links
MSG but a few things really had to disappear. The main differences
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
+ directly read from an XML description and cannot be hard-coded
anymore. The same format is used for application deployment
description. The new format is described in the documentation.
Have a look in tools/platform_generation. There is a tiny script