Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix changelog [ci-skip]
[simgrid.git] / ChangeLog
index 52bbec7..7ee375d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+SimGrid (3.31.1) NOT RELEASED YET (v3.32 expected June 21. 2022, 09:13 UTC)
+
+S4U:
+  - Added the xbt_enforce macro. This has the same syntax as xbt_assert. The only difference is that an AssertionError
+    exception is thrown if the condition is not satisfied, instead of calling abort().
+
+Python:
+  - Added the following bindings / examples:
+    - Comm (now 100% covers the C++ interface):
+      - Comm.dst_data_size, Comm.mailbox, Comm.sender, Comm.start_time, Comm.finish_time
+      - Comm.state_str [examples: examples/python/comm-failure/, examples/python/comm-host2host/]
+      - Comm.remaining [examples: examples/python/comm-host2host/, examples/python/comm-suspend/]
+      - Comm.set_payload_size [example: examples/python/comm-host2host/]
+      - Comm.set_rate [example: examples/python/comm-throttling/]
+      - Comm.sendto, Comm.sendto_init, Comm.sendto_async [example: examples/python/comm-host2host/]
+      - Comm.start, Comm.suspend, Comm.resume [example: examples/python/comm-host2host/]
+      - Comm.test_any [example: examples/python/comm-testany/]
+      - Comm.wait_until [example: examples/python/comm-waituntil/]
+    - Engine:
+      - Engine.host_by_name [example: examples/python/comm-host2host/]
+      - Engine.mailbox_by_name_or_create [example: examples/python/comm-pingpong/]
+         - Engine.set_config
+    - Mailbox: Mailbox.ready [example: examples/python/comm-ready/]
+       - Ptask [example: examples/python/exec-ptask/]:
+         - this_actor.exec_init
+         - this_actor.parallel_execute
+         - Exec.suspend
+         - Exec.wait_for
+  - Added an AssertionError exception that may be thrown in case of error. For instance, creating tow hosts with the
+    same name will now throw this exception instead of killing the interpreter.
+
+Platform description & visualization:
+  - More robust sanity checks for platforms, to reject unallowed topologies with
+    a proper error message.
+  - One new C++ platform example, supernode.cpp. A Python script (supernode.py)
+    demonstrates how we can generate a nice graphical representation of the
+       platform.
+
+General: 
+  - Modified the host_by_name functions:
+    - Now, they return only hosts, not VMs, and in a much more efficient way.
+       - If one wants to find a VM by name, he now needs to know the host on
+       which it runs and call vm_by_name (or manually iterate over the list of hosts)
+
+Tools:
+  - Enhancements to the graphicator tool:
+       - Allow to dump the platform topology as a CSV file representing the edges
+         of the graph (in addition to the DOT format).
+       - Fix graphicator for "cluster" topologies (e.g. fat-tree, dragonfly).
+
+Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
+ (FG: issues on Framagit; GH: issues on GitHub)
+ - FG#105: "Variable penalty should not be negative!" with in-flight messages and bandwidth profiles
+ - FG#109: Application time reported by --cfg=smpi/display-timing:yes is wrong
+ - FG!109: Trigger new engine solve upon host events such as host on/off
+ - FG#110: Wait_any does not trigger new model solve when host events occur
+ - FG#111: Wrong execution time in rare cases when using multicore
+
 ----------------------------------------------------------------------------
 
 ----------------------------------------------------------------------------
 
-SimGrid (3.29.1) NOT RELEASED YET (v3.30 expected December 21. 2021, 15:59 UTC)
+S4U:
+ - kill signal Comm::on_completion that was not working anyway.
+ - Expose signals Activity::on_suspend and Activity::on_resume
+
+SimGrid (3.31) March 22. 2022.
+
+The ненасильство release. We stand against war.
+
+Against the agression by a sick system that forces peoples to take arms against each other.
+
+MC:
+ - Rework the internals, for simpler and modern code. This shall unlock many future improvements.
+ - You can now define plugins onto the DFS explorer (previously called SafetyChecker), using the
+   declared signals. See CommunicationDeterminism for an example.
+ - Support mutex, semaphore and barrier in DPOR reduction
+ - Seems to work on Arm64 architectures too.
+ - Display a nice error message when ptrace is not usable.
+ - New test suite, imported from the MPI Bugs Initiative (MBI). Not all MBI generators are integrated yet.
+ - Remove the ISP test suite: it's not free software, and it's superseeded by MBI.
+
+SMPI:
+ - fix for FG#100 by ensuring small asynchronous messages never overtake larger
+   ones, conforming to the standard.
+ - replay: fix waitall behaviour to avoid forgetting requests and leaking
+   their handles.
+ - tracing: ensure that we dump the TI traces continuously during execution and
+   not just at the end, reducing memory cost and performance hit.
+ - Update OpenMPI collectives selection logic to match current one (4.1.2)
+ - Add a coherence check for collective operation order and root/MPI_Op
+   coherence. Potentially costly so not activated unless smpi:pendantic is set
+   or -analyze is given.
+
+S4U:
+ - New signal: Engine::on_simulation_start_cb()
+ - Introduce a new execution mode with this_actor::thread_execute(). This simulate
+   the execution of a certain amount of flops by multiple threads ran by a host. Each
+   thread executes the same number of flops, given as argument. An example of this new
+   function can be found in examples/cpp/exec-threads.
+ - Reimplementation of barriers natively.
+   Previously, they were implemented on top of s4u::Mutex and s4u::ConditionVariable.
+   The new version should be faster (and can be used in the model-checker).
+ - Actor::get_restart_count(): Returns the number of reboots that this actor did.
+
+MSG:
+ - MSG_barrier_destroy now expects a non-const msg_barrier parameter.
+
+New plugin: the Chaos Monkey (killing actors at any time)
+ - Along with the new simgrid-monkey script, it tests whether your simulation
+   resists resource failures at any possible timestamp in your simulation.
+ - It is mostly intended to test the simgrid core in extreme conditions,
+   but some users may find it interesting too.
+
+Models:
+ - New solver for parallel task: BMF.
+   - More realistic sharing of heterogeneous resources compared to the fair
+   bottleneck solver used by ptask_L07.
+   - Implement the BMF (Bottleneck max fairness) fairness.
+   - Improved resource sharing for parallel tasks with sub-flows (parallel
+     communications between same source and destination inside the ptask).
+   - Parameters:
+     - "--cfg=host/model:ptask_L07 --cfg=host/solver:bmf": enable the ptask
+        model with BMF solver.
+     - "--cfg=bmf/max-iterations: <N>": maximum number of iterations performed
+        by BMF solver (default: 1000).
+     - "--cfg=bmf/precision: <N>": numerical precision used when computing
+        resource sharing (default: 1e-12).
+   - This model requires Eigen3 library. Make sure Eigen3 is installed to use BMF.
+
+General:
+  - Modifications of the Profile mechanism, with some impact on users
+    - Addition of a new (S4U) method to init profiles from generic functions to improve versatility
+    - Fix initial behaviour of state_profiles
+    - Modify periodicity to behave like a period, and not like a loop delay
+
+XBT:
+ - Drop xbt_dynar_shrink().
+
+Python:
+ - Made the following bindings static (previously member functions):
+   - Actor: Actor.kill_all(), Actor.by_pid()
+   - Host: Host.by_name(), Host.current(), Host.on_creation_cb()
+   - Mailbox: Mailbox.by_name()
+ - Added the following bindings:
+     - this_actor.warning()
+     - Mailbox.put_init() [example: examples/python/comm-waitallfor/]
+     - Comm.detach() [example: examples/python/comm-waitallfor/]
+     - Comm.wait_for() [example: examples/python/comm-waitfor/]
+     - Comm.wait_any_for()
+     - Comm.wait_all_for() [example: examples/python/comm-waitallfor/]
+     - Mutex [example: examples/python/synchro-mutex/]
+     - Barrier [example: examples/python/synchro-barrier/]
+     - Semaphore [example: examples/python/synchro-semaphore/]
+
+Build System:
+ - Remove target "make uninstall" which was incomplete and no longer maintained.
+
+Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
+ (FG: issues on Framagit; GH: issues on GitHub)
+ - FG#57: Mc SimGrid should test whether ptrace is usable
+ - FG#87: Smpi scripts fail with spaces in paths
+ - FG#100: [SMPI] Order of the message matching is not guaranteed
+ - FG#101: LGPL 2.1 is deprecated license
+ - FG#104: "make uninstall" not up-to-date
+ - GH#151: Missing mutexes for DPOR.
+
+----------------------------------------------------------------------------
+
+SimGrid (3.30) January 30. 2022.
+
+The Sunday Bloody Sunday release.
 
 Main user-visible changes:
 
 Main user-visible changes:
- - The SimDag API for the simulation of the scheduling of Directed Acyclic 
-    Graphs has been dropped. It was marked as deprecated for a couple of years. 
-    We finally complete the implementation of what has been called SimDag++ 
-    internally, i.e., porting the different features of SimDag on top of S4U. 
-    The new way to simulate the execution of dependent activities directly by 
-    maestro (without any other actor) is details in the examples/cpp/dag-* series
-    of examples. 
- - The removal of SimDag led us to also remove the export to Jedule files that 
-   was tightly coupled to SimDag. The instrumentation of DAG simulation is still 
-   possible through the regular instrumentation API based on the Paje format. 
-   
+ - The SimDag API for the simulation of the scheduling of Directed Acyclic
+   Graphs has been dropped. It was marked as deprecated for a couple of years.
+   We finally complete the implementation of what has been called SimDag++
+   internally, i.e., porting the different features of SimDag on top of S4U.
+   The new way to simulate the execution of dependent activities directly by
+   maestro (without any other actor) is details in the examples/cpp/dag-* series
+   of examples.
+ - The removal of SimDag led us to also remove the export to Jedule files that
+   was tightly coupled to SimDag. The instrumentation of DAG simulation is still
+   possible through the regular instrumentation API based on the Paje format.
+ - We also dropped the old and clumsy Lua bindings to create platforms in a
+   programmatic way. It can be done in C++ in a much cleaner way now, which
+   motivates this suppression.
+
 S4U:
 S4U:
+ - Introduce on_X_cb() functions for all signals, to attach a new
+   callback to the signal X. The signal variables are now hidden and
+   only these functions should be used.
+   Rationale: this enables the usual deprecation scheme where functions
+   remain for 4 releases if we need to modify the signals, while the
+   current code with the signal variables directly visible prevents any
+   smooth transition.
  - New function: Engine::run_until(date), to split the simulation.
  - New signal: Activity::on_veto, to detect when an activity fails to start.
  - New function: Engine::run_until(date), to split the simulation.
  - New signal: Activity::on_veto, to detect when an activity fails to start.
+ - Signal change: Comm::on_start(Comm&, bool) has been replaced by
+   Comm::on_send and Comm::recv. These two signals respectively correspond to
+   when the sending or receiving side of a Comm is ready. They are raised at
+   the same locations as the former Comm::on_start signal.
  - New function: Engine::track_vetoed_activities() to interrupt run()
    when an activity fails to start, and to keep track of such activities.
    Please see the corresponding example for more info.
  - New function: Engine::track_vetoed_activities() to interrupt run()
    when an activity fails to start, and to keep track of such activities.
    Please see the corresponding example for more info.
- - Introduce on_X_cb() functions for all signals, to attach a new
-   callback to the signal X. The signal variables are now hidden and
-   only these functions should be used.
-   Rational: this enables the usual deprecation schema where functions
-   remain for 4 releases when we need to modify the signals, while the
-   current code with the signal variables directly visible prevent any
-   smooth transition.
+ - New functions: s4u::Comm::{sendto_init, set_source, set_destination} to enable
+   the use of vetoers with direct host-to-host communications. Both source and
+   destination have to set for a comm to start. Each call to these setters check
+   if all vetoes are satisfied. When it is the case, the comm starts. A use case of
+   these functions is given in examples/cpp/dag-scheduling.
+ - New functions: {Exec, Io}::update_priority allow you to modify the priority of
+   these kinds of activities during their execution. Behavior is detailed in
+   examples/cpp/io-priority/.
 
 SMPI:
  - Dynamic costs for MPI operations: New API to allow users to dynamically
 
 SMPI:
  - Dynamic costs for MPI operations: New API to allow users to dynamically
- change injected costs for MPI_Recv, MPI_Send and MPI_Isend operations.
- Alternative for smpi/or, smpi/os and smpi/ois configuration options.
+   change injected costs for MPI_Recv, MPI_Send and MPI_Isend operations.
+   Alternative for smpi/or, smpi/os and smpi/ois configuration options.
+ - Fix some issues with the replay mechanism.
+
+XBT:
+ - Function xbt::Extendable::get_data() is now templated with the type of the
+   pointee. Untyped function is deprecated. Use get_data<void>() if you still
+   want to retrieve void*.
 
 Documentation:
  - New section: "SimGrid MPI calibration of a Grid5000 cluster"
 
 Documentation:
  - New section: "SimGrid MPI calibration of a Grid5000 cluster"
@@ -43,10 +231,13 @@ Python:
    contexts revealed unstable, specially starting with pybind11 v2.8.0.
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
    contexts revealed unstable, specially starting with pybind11 v2.8.0.
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
- (FG: issues on Framagit; GF: issues on GForge; GH: issues on GitHub)
+ (FG: issues on Framagit; GH: issues on GitHub)
  - FG#95: Wrong computation time for multicore execution after pstate change
  - FG#97: Wrong computation time for ptask+multicore+pstates
  - FG#95: Wrong computation time for multicore execution after pstate change
  - FG#97: Wrong computation time for ptask+multicore+pstates
+ - FG#98: SMPI offline simulation is inconsistent with the online simulation
+          (deadlocks / message truncation)
  - FG#99: Weird segfault when not sealing an host
  - FG#99: Weird segfault when not sealing an host
+
 ----------------------------------------------------------------------------
 
 SimGrid (3.29) October 7. 2021
 ----------------------------------------------------------------------------
 
 SimGrid (3.29) October 7. 2021
@@ -56,7 +247,6 @@ The "Ask a stupid question" release.
 We wish that every user ask one question about SimGrid to celebrate.
 On Mattermost, Stack Overflow or using the issues tracker.
 
 We wish that every user ask one question about SimGrid to celebrate.
 On Mattermost, Stack Overflow or using the issues tracker.
 
-
 New modeling features:
  - Non-linear resource sharing, modeling resources whose performance heavily degrades with contention:
    - The total capacity may be updated dynamically through a callback
 New modeling features:
  - Non-linear resource sharing, modeling resources whose performance heavily degrades with contention:
    - The total capacity may be updated dynamically through a callback
@@ -114,11 +304,12 @@ ns-3 model:
  - Make wifi creation compatible with ns-3 version 3.34 too.
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
  - Make wifi creation compatible with ns-3 version 3.34 too.
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
- (FG: issues on Framagit; GF: issues on GForge; GH: issues on GitHub)
+ (FG: issues on Framagit; GH: issues on GitHub)
+ - FG#77: Search feature of doc is broken (update sphinx theme version)
  - FG#78: Multiple fixes for SMPI replay:
     - TI tracing of allotallv/w was outputting wrong values
     - MPI_LOGICAL in fortran is actually 32 bits wide, and not 8.
  - FG#78: Multiple fixes for SMPI replay:
     - TI tracing of allotallv/w was outputting wrong values
     - MPI_LOGICAL in fortran is actually 32 bits wide, and not 8.
- - FG#77: Search feature of doc is broken (update sphinx theme version)
+
 ----------------------------------------------------------------------------
 
 SimGrid (3.28) July 14. 2021
 ----------------------------------------------------------------------------
 
 SimGrid (3.28) July 14. 2021
@@ -236,7 +427,7 @@ Simix:
  - Legacy functions deprecated in this release: SIMIX_get_clock(), SIMIX_run().
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
  - Legacy functions deprecated in this release: SIMIX_get_clock(), SIMIX_run().
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
- (FG: issues on Framagit; GF: issues on GForge; GH: issues on GitHub)
+ (FG: issues on Framagit; GH: issues on GitHub)
  - FG#47: Complete and fix tests from teshuite/s4u/activity-lifecycle
  - FG#64: Configuring smpi/IB-penalty-factors
  - FG#67: Running computation concurrently with MPI_Iallreduce
  - FG#47: Complete and fix tests from teshuite/s4u/activity-lifecycle
  - FG#64: Configuring smpi/IB-penalty-factors
  - FG#67: Running computation concurrently with MPI_Iallreduce
@@ -340,7 +531,7 @@ C binding and interface:
    available as sg_actor_start_() and sg_actor_create_().
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
    available as sg_actor_start_() and sg_actor_create_().
 
 Fixed bugs (FG#.. -> FramaGit bugs; FG!.. -> FG merge requests)
- (FG: issues on Framagit; GF: issues on GForge; GH: issues on GitHub)
+ (FG: issues on Framagit; GH: issues on GitHub)
  - FG#37: Parallel tasks are limited to 1 core per host
  - FG#62: Running "smpirun -replay" on large networks
  - FG!46: Fix a few potential memory leaks in SMPI colls
  - FG#37: Parallel tasks are limited to 1 core per host
  - FG#62: Running "smpirun -replay" on large networks
  - FG!46: Fix a few potential memory leaks in SMPI colls