Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
rename the 'releases' branch to 'stable'
[simgrid.git] / ChangeLog
index e747902..dd9552b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-SimGrid (3.20) NOT RELEASED YET (Release target: June 21. 2018 10:07 UTC)
+SimGrid (3.23) NOT RELEASED (Release Target: June 21. 2019, 15:54 UTC)
+
+XBT:
+ - Drop xbt_dict_dump.
+
+Fixed bugs:
+ - #326: Valgrind-detected error for join() when energy plugin is activated
+
+----------------------------------------------------------------------------
+
+SimGrid (3.22) April 1. 2019
+
+The Easter Chrismas Release (this one is somewhat late).
+
+Python:
+ - We are excited to introduce the SimGrid/S4U interface to your neighborhood
+ - Not complete yet: asynchronous activities (amongst others) are still missing
+ - Still ongoing: the interface may change in the future. We need more
+   testers! Please report any glitches.
+ - No new project using Java should start now. Please switch to Python.
+
+General:
+ - Some of the internal cleanups may lead to speed improvements:
+   - The hard limitation on the amount of simulated actors with
+     Java+Mac was removed. Now, the  available memory is the only limit.
+   - Our refcounting was tidyied, leading to 10% speedups in some cases.
+ - We are still working on making our code robust to the actor kills
+   and hosts' churn. Things are improving, but it's not perfect yet.
+ - Replaced our own code to display a backtrace (that was forking addr2line)
+   with the Boost.Stacktrace library.
+   You won't see your backtraces without this optional dependency.
+ - Bump cmake dependency to 3.5 (provided by Ubuntu 16.04).
+ - Stop setting random seed with srand() at initialization.
+
+XML
+ - In <host> and <peer>, 'availability_file' is now 'speed_file'.
+   XML file version remains 4.2 since old files are still compatible.
+
+Java:
+ - Process termination which was broken at version 3.21 has been repaired.
+ - Expose host load plugin: loadInit, getCurrentLoad, getComputedFlops, getAvgLoad
+ - Hide the examples into examples/deprecated. New users should use Python.
+
+MSG:
+ - Drop MSG_process_create_from_stdfunc() from the API.
+   This C++ function was a pimple in the C API, made necessary at some
+   point by the Java bindings. This is fixed now.
+ - Hide the examples into examples/deprecated. New users should use S4U.
+ - MSG_process_create and MSG_process_attach now crash if the host used
+   to run this process is off.
+ - Fix the protype of MSG_process_on_exit()
+   Now use (int,void*) callbacks instead of (void*,void*) ones.
+   The implementation was ways too messy to actually work, I guess.
+
+SMPI:
+ - Change the way SMPI_SAMPLE_* macros work to avoid invalidating cache
+   too often and provide more accurate timings.
+ - Add -gdb, -lldb, and -vgdb shortcuts to help debug MPI codes with smpirun
+ - MPI_Alltoallw support
+ - Partial MPI nonblocking collectives implementation: MPI_Ibcast, MPI_Ibarrier,
+   MPI_Iallgather, MPI_Iallgatherv, MPI_Ialltoall, MPI_Ialltoallv, MPI_Igather,
+   MPI_Igatherv, MPI_Iscatter, MPI_Iscatterv, MPI_Ialltoallw.
+ - MPI_Request_get_status, MPI_Status_set_cancelled, MPI_Status_set_elements
+   support
+ - Basic implementation of generalized requests (SMPI doesn't
+   allow MPI_THREAD_MULTIPLE) : MPI_Grequest_complete, MPI_Grequest_start
+
+XBT:
+ - Drop sg_cmdline. Please use xbt_cmdline instead.
+ - Drop the C xbt_os_mutex_t; Use the C++11 std::mutex.
+ - Drop the C xbt_os_sem_t; Use the C++ xbt::OsSemaphore.
+   OsSemaphore is implemented in a portable way with C++11 threads.
+   This should allow much more threads to be created at the same time,
+   allowing Mac and Java users to simulate many more actors.
+ - Implement the 'thread' factory with std::thread instead of xbt ones.
+   It is not possible to set the stack size with threads anymore, but
+   -fsplit-stack is the way to go nowadays when using threads.
+ - Drop the xbt_os_thread_t module (now unused)
+ - Drop xbt_ex_display(), use simgrid::xbt::log_exception() instead.
+ - Drop xbt_str_join_array().
+ - Drop cunit, use Catch2 instead.
+
+Kernel:
+ - Many cleanups in the kernel::activity namespace. This was long
+   overdue, and shall open the path to many future endeavors.
+
+Fixed bugs:
+ - #132: Java: a process can not shut down its own host
+ - #220: S4U: detached send causes exception if sender terminates soon after sending
+ - #261: Document the parameters of parallel execution's constructor
+ - #300: [s4u] BarrierPtr is missing
+ - #314: SMPI args internal cleanup
+ - #316: Fix a bug related to the CPU utilization of multi-core VM
+ - #318: Invalid trace file when using option --cfg=tracing/smpi/display-sizes:yes
+ - #324: S4U: Attempting to create an actor on turned off host segfaults instead of throwing
+ - #325: Turning off a host has different behavior on sleeping actors and computing actors
+
+----------------------------------------------------------------------------
+
+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'
+
+XBT:
+ - Remove xbt_os_thread_specific features
+ - Remove portability wrapper to condition variables
+ - Remove xbt_os_thread_yield()
+
+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 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
+   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
+   already been called.
+ - 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
-
-S4U:
- - Introduced new function simgrid::s4u::Host::get_actor_count. This function
-   returns the number of actors running on a specific host.
+ - 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
@@ -19,17 +250,12 @@ simix:
  - kill simix::onDeadlock() that was somewhat dupplicating s4u::on_deadlock()
  - Improve performance when handling timeouts of simix synchros.
 
-SMPI:
- - 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.
-
 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:
@@ -37,7 +263,8 @@ 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
+ - #269: SMPI: tracing of MPI_Wait/all/any broken
+ - SMPI: Fix various crashes with combined use of MPI_PROC_NULL and MPI_IGNORE_STATUS
 
 ----------------------------------------------------------------------------
 
@@ -194,7 +421,7 @@ SimGrid (3.18) Released December 24 2017
  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()
@@ -345,12 +572,12 @@ SimGrid (3.16) Released June 22. 2017.
  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
@@ -511,9 +738,9 @@ SimGrid (3.14) Released December 24. 2016
 
  * 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.
@@ -535,7 +762,7 @@ SimGrid (3.14) Released December 24. 2016
  * VM I/O related things:
    - Ignored parameter of vm_create: core_nb, disk_path and disk_size.
    - Unimplemented save/restore methods
- * MSG_as_router_get_property_value() was redundent with
+ * MSG_as_router_get_property_value() was redundant with
    MSG_environment_as_get_property_value().
    - Removed MSG_as_router_*propert*() functions
    - Added MSG_environment_as_set_property_value() for consistency
@@ -629,7 +856,7 @@ SimGrid (3.13) stable; urgency=low
      flops that a <host>, <peer>, <cluster> or <cabinet> can deliver per second.
    - In <trace_connect>, attribute kind="POWER" is now kind="SPEED".
    - In <host> and <link>, attributes availability and state are gone.
-     It was redundent with state and availability traces, and with peak values.
+     It was redundant with state and availability traces, and with peak values.
    - In <cluster>, attributes availability_file and state_file are gone.
      It was too complex and unused.
    - Kill <gpu>. Was not doing anything.
@@ -765,7 +992,7 @@ SimGrid (3.12) stable; urgency=low
 
  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
@@ -774,13 +1001,13 @@ SimGrid (3.12) stable; urgency=low
    - 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
@@ -788,7 +1015,7 @@ SimGrid (3.12) stable; urgency=low
    - 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
@@ -814,7 +1041,7 @@ SimGrid (3.12) stable; urgency=low
   * 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.
@@ -915,18 +1142,18 @@ SimGrid (3.11) stable; urgency=low
    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)
 
@@ -1001,7 +1228,7 @@ SimGrid (3.10) stable; urgency=low
    - 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.
@@ -1212,7 +1439,7 @@ SimGrid (3.8) stable; urgency=low
    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)
@@ -2288,7 +2515,7 @@ SimGrid (3.3.2) stable; urgency=low
       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
@@ -2719,7 +2946,7 @@ SimGrid (3.1) stable; urgency=high
   * 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
@@ -3180,7 +3407,7 @@ SimGrid (2.90) unstable; urgency=low
   * 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
@@ -3195,7 +3422,7 @@ SimGrid (2.90) unstable; urgency=low
 
   * 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