Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do not expose Activity::set_remaining publicly.
[simgrid.git] / ChangeLog
index 2684e57..bebb7f5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-SimGrid (3.30.1) NOT RELEASED YET (v3.31 expected March 20. 2022, 15:33 UTC)
+SimGrid (3.32.1) not released yet (target december 22)
+
+S4U:
+ - Activity::set_remaining() is not public anymore. Use for example
+   Comm::set_payload_size() to change the size of the simulated data.
+
+----------------------------------------------------------------------------
+
+SimGrid (3.32) October 3. 2022.
+
+The Wiedervereinigung release. Germany was reunited 32 years ago.
+
+General:
+ - SimGrid now requires a compiler with C++17 support to compile the lib.
+   Our public headers still allow the user code to be compiled in C++14.
+ - Support graphviz v3 and ns-3 v3.36 (older versions are still supported).
+ - Tested with clang (v11, v13, v14 and v16), gcc (v7 to v13) and IntelCC v2022.2
+
+S4U:
+ - API evolutions:
+   - kill signal Comm::on_completion that was not working anyway.
+   - Expose signals Activity::on_suspend and Activity::on_resume
+   - New macro xbt_enforce(): similar to xbt_assert(), but throws an AssertionError
+     instead of calling abort().
+   - New: s4u::Exec::get_thread_count()
+ - Various cleanups around virtual machines:
+   - host_by_name() and friends now only return hosts. VMs are now excluded.
+   - It is now impossible to search a VM by name globally.
+     You can only search VM by name on a given PM, so either you know
+     the PM on which your VM runs and you can search by name, or you need
+     to manually iterate over all PMs to search this VM.
+   - The s4u::VirtualMachine constructor is now deprecated.
+     Please use s4u::Host::create_vm() instead.
+   - Rename s4u::VirtualMachine::on_creation() to on_vm_creation() to
+     avoid confusion with s4u:Host::on_creation() that is inherited.
+     Also s4u::VirtualMachine::on_destruction -> on_vm_destruction().
+ - Bug fixes:
+   - One-sided communications (Comm::sendto) can now be detached,
+     and should now be more resilient to network and host faults.
+
+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 two hosts with the same name will now throw this exception
+   instead of killing the interpreter.
+
+SMPI:
+ - Implement MPI_File_get_type_extent(), MPI_File_s/get_atomicity() and
+   MPI_File_get_byte_offset()
+ - Intercept getpid() calls to return the simulated ones.
+ - Fix various bugs in MPI IO.
+
+Platform description & visualization:
+ - More robust sanity checks for platforms, to reject forbidden topologies with
+   a proper error message.
+ - New platform example: supernode.cpp and supernode.py.
+   The Python version generates a nice graphical representation of the platform.
+ - Bug fixes around fat-tree topologies.
+ - Allow to dump the platform topology as a CSV file representing the graph edges
+   with platform_graph_export_csv() (similar to the DOT export).
+ - Fix graphicator for "cluster" topologies (e.g. fat-tree, dragonfly).
+
+Models:
+ - Fix a bug when using ptasks with multicores (FG!111).
+
+Model-Checker:
+ - First bits of sthread, that intercepts pthread operations at runtime.
+   The intend is to use it together with simgrid-mc, but it is TBD.
+ - Sync MBI generators with upstream changes.
+ - Various cosmetics, small bug fixes and inner refactorings
+
+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#110: Wait_any does not trigger new model solve when host events occur
+ - FG#111: Wrong execution time in rare cases when using multicore
+ - FG!98: Re-enable the tests for legacy stochastic profiles
+ - FG!109: Trigger new engine solve upon host events such as host on/off
+ - FG!116: SMPI/replay: Fix issue with recv of size =0
+
+----------------------------------------------------------------------------
+
+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.
 
 MC:
  - Rework the internals, for simpler and modern code. This shall unlock many future improvements.
- - You can now define plugins onto SafetyChecker (a simple DFS explorer), using the declared signals.
-   See CommunicationDeterminism for an example.
+ - 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.
  - 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.
- - Remove the ISP test suite: it's not free software, and it's superseeded by MBI
+ - 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
 
 SMPI:
  - fix for FG#100 by ensuring small asynchronous messages never overtake larger
@@ -17,31 +125,81 @@ SMPI:
  - 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)
  - 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()
 
 S4U:
  - New signal: Engine::on_simulation_start_cb()
- - Reimplementation of barriers natively. 
-   Previously, they were implemented on top of s4u::Mutex and s4u::ConditionVariable. 
+ - 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).
    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)
 
 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 users may find it interesting too.
+ - 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().
 
 
 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
 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.
 
 ----------------------------------------------------------------------------
  - GH#151: Missing mutexes for DPOR.
 
 ----------------------------------------------------------------------------
@@ -128,7 +286,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