Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[appveyor] temporary commit to see what's going on on the robot
[simgrid.git] / ChangeLog
index ca48b9e..847444c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-SimGrid (3.11) NOT RELEASED; urgency=low
-
- TENTATIVE RELEASE GOALS for 3.11:
- * Switch to tesh.pl, and kill the now unused parts of xbt that seem fragile
- * Clean up CMake files (may need a full rewrite).
-   Non exhaustive list of subgoals:
-   - Use genuine cmake mechanisms and variables when available,
-     instead of reinventing the wheel.
-   - Correctly determine system and architecture (e.g. x32).
-   - Correctly determine compiler type and version (e.g. clang).
-   - Correctly set compiler flags according to compiler type and version.
-   - Correctly set compiler flags for C++, Java, and Fortran compilers too.
-   - Use git to generate the dist archive.  Either use git-archive to
-     generate the tarball, or keep using cmake -E tar, but use git-ls-files
-     to get the list of files to pack.
-   - For Java, add an option to enable/disable the inclusion of the native
-     libraries in the jar file, and avoid to duplicate these files.
-
- TOOLS:
+SimGrid (3.13) UNRELEASED; urgency=low
+
+ -- $date Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+
+SimGrid (3.12) stable; urgency=low
+
+ The Facelift Release.
+
+ Build System
+  * Require g++ v4.7 at least to not speak prehistorical C++.
+  * Require Boost 1.48 (for signal2 component).
+  * Java must be version 7 at least when activated.
+  * Builds on Windows again (including Java bindings).
+  * Tracing is now always enabled (no way to turn it out)
+  * Remove GTNetS. It was not working anyway.
+  * Various cleanups in the cmake scripts.
+  * Move headers around to sort them out on installed systems:
+    - instr/instr.h  -> simgrid/instr.h
+    - instr/jedule/* -> simgrid/jedule
+    - simdag/datatypes.h was removed
+    - simdag/simdag.h -> simgrid/simdag.h
+    - msg/datatypes.h was removed
+    - msg/msg.h -> simgrid/msg.h
+
+ cMSG:
+ * Interface improvement:
+   - Rename MSG_host_is_avail(h) to MSG_host_is_on(h)
+   - Sanitize the interface in MSG_task_ module:
+     - Merge two functions that were close enough but misleading:
+       set_compute_duration(t)      -> set_flops_amount(t)
+       get_remaining_computation(t) -> get_flops_amount(t)
+     - set_data_size(t) -> set_bytes_amount(t)
+       get_data_size(t) -> get_bytes_amount(t)
+   - Massive cleanups in the functions related to the energy
+     - MSG_host_get_pstate_number() -> MSG_host_get_nb_pstates()
+   - New: MSG_host_get_pstate()
+ * New example:
+   - msg/energy/onoff: switching hosts on and off
+ jMSG:
+ * Interface improvement:
+   - Rename Host.isAvail() to Host.isOn()
+   - Rename Process.currentProcess() to Process.getCurrentProcess()
+   - Rename Task.setDataSize() to Task.setBytesAmount()
+   - Merge Task.getRemainingDuration() and Task.getComputeDuration() into Task.getFlopsAmount()
+ * Bug fixes:
+   - #18874: Actually allows the GC to reclaim tasks
+
+ SIMIX:
+ * New functions
+   - SIMIX_process_throw: raises an exception in a remote process
+ * Refactoring: Separate sub-modules
+   - libsmx: the public interface, as libc in a real system
+   - popping: the strange dance that converts a user request into a kernel handling
+   - smx_context_*: the virtualization mechanisms that embed the user code
+   - smx_*: the handling of each simcalls
+ * Interface cleanup:
+   - simcall_host_set_power_peak_at -> simcall_host_set_pstate
+ * Rename smx_action_t into smx_synchro_t, making explicit that these
+   things are used to synchronize processes with their environment.
+   For example, a communication is a sort of synchronization involving
+   the communicating processes (that may block until the exchange) and
+   the platform. The same can be said from computations, etc.
+ * Bug fixes:
+   - #18888: segfault when a process ends before its kill_time
+
+ 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.
+   - 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
+   - MPI_Info_* functions (beware, get_nthkey may not follow the insertion order)
+   - MPI_Pack, MPI_Unpack and MPI_Pack_size 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
+     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/).
+   - Support for Rabenseifner Reduce/Allreduce algorithms (https://fs.hlrs.de/projects/par/mpi//myreduce.html)
+ * Replay
+   - Replay now uses algorithms from wanted collective selector
+   - Replay can be used with SMP-aware algorithms
+   - 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
+   - Correctly use loopback on fat-tree clusters
+   - Asynchronous small messages shouldn't trigger deadlocks anymore
+ * Energy/DVFS cleanup and improvement
+   - smpi_set_host_power_peak_at() -> smpi_set_host_pstate()
+   - new: smpi_get_host_pstate()
+ SURF
+  * Bug fixes
+   - "Full" network optimization flag was broken since Surf++
+   - Better handling of precision flags in maxmin
+   - Fix bug causing sometimes "Impossible" errors
+   - Properly pass cluster properties to included hosts
+  * Improvement of the Energy plugin.
+    - Always update the consumption before returning that value
+    - New property: watt_off to denote the dissipation when the host is off
+    - New functions getWattMinAt and getWattMaxAt to retrieve the
+      dissipation of pstates that we are not currently at.
+  * Java: class NetworkLink renamed to Link
+  * New function: simcall_process_get_kill_time()
+  * Massive rename s/workstation/host/
+    - That's intrusive, but that's good for the project consistency. Sorry.
+    - Change config option "workstation/model" into "host/model"
+ XBT
+  * 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.
+   - xbt_dirname and xbt_basename for non-POSIX systems
+ MC
+  * The model checker now runs as a separate process.
+  * The model checker runs must now be launched with the new simgrid-mc program.
+  * Record/Replay: the MC can display a textual representation of a path in the
+    execution graph. It can then be replayed outside of the model checker.
+
+ -- Mon Oct 12 06:02:41 CEST 2015 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+
+SimGrid (3.11) stable; urgency=low
+
+ The Class Release.
+
+ Tools:
  * Normalizing pointers addresses tool for better diff between logs
 
- EXAMPLES:
+ Examples:
  * Add cloud examples using new VMs
    - examples/msg/cloud/two_tasks_vm.tesh
    - examples/msg/cloud/simple_vm.tesh
    - examples/java/cloud/cloud.tesh
    - examples/java/cloud/migration/migration.tesh
+ * Add java surf examples:
+   - examples/java/surfPlugin/surf_plugin.tesh
+   - examples/java/reservationSurfPlugin/reservation_surf_plugin.tes
+   - examples/java/surfCpuModel/surf_cpu_model.tesh
+ * Add SMPI+MSG example:
+   - examples/smpi/smpi_msg_masterslave/
+
+ TeshSuite:
+ * Add tests:
+   - msg process test
+   - msg task destroy cancel test
+   - msg_host on/off test
+ * Move all tests in testsuite to teshsuite (adding tesh files)
+ * Restructure teshsuites
+   - one folder for each kind of test
+ * Restructure AddTests.cmake
+   - unify tests names
+   - structure the order of tests (with sections)
 
  MSG:
  * Add virtual machine
    - creation of a VM on a PM
    - migration of a VM from a PM to another PM
+ * New functions
+   - MSG_process_join(msg_process_t process, double timeout)
+   - msg_bar_t MSG_barrier_init(unsigned int count)
+   - int MSG_barrier_wait(msg_bar_t barrier)
+   - void MSG_barrier_destroy(msg_bar_t barrier)
+   - msg_as_t MSG_environment_as_get_by_name(const char * name)
+ * New option "msg/debug_multiple_use" to help debugging when a task is used
+   several times
+ * MSG IO
+   - Improvements and finalization of MSG_storage, MSG_file APIs and their
+     documentation
+   - Increase code coverage in test suites
+   - Bug fixes
 
- SIMCALLS:
- * Simcalls are now generated by a python script
-   - generate files include by simgrid
-   - check that all the functions exists and propose prototypes
+ SIMIX:
+ * Protect context stacks against stack overflow. The number of protected memory
+   pages allocated on the top of each stack (1 by default) can be configured
+   with the new command line option --cfg=contexts/guard_size:<value>.
+ * Simcalls are now generated by a python script that
+   - generates files included by SimGrid
+   - checks that all the functions exist, and proposes prototypes
  * Clean simcalls
    - remove sem_destroy, file_set_data, comm_destroy, vm_set_state,
      host_set_data, host_get_data
+ * New simcalls
+   - simcall_process_join(smx_process_t process, double timeout)
+ * Fix bug where sleeping processing could not be suspended.
+
  SURF:
  * Translate surf models from C to C++
    - Generic classes for all models: Model, Resource, Action
-   - A generic interface for each kind of model (cpu, network, storage
-     workstation, workstationvm)
+   - A generic interface for each kind of model (CPU, Network, Storage
+     Workstation, WorkstationVM)
    - C bindings
  * Translate surf routings from C to C++
  * Add callbacks using sigc++ or boost::signals2
    - Add callback functions for resource creation/destruction
-   - Add callback finctions for action state change
+   - Add callback functions for action state change
    - Handle Energy as a plugin
- * Replace swag by boost::intrusive 
- * Add new routing model for torus clusters
+ * Replace swag by boost::intrusive
+ * Add new routing models for clusters. For documentation, see
+   http://simgrid.gforge.inria.fr/simgrid/latest/doc/platform.html#pf_cluster
+   - tori, with topology="TORUS" and topo_parameters="ndim1,ndim2,...,ndimn"
+     parameters for cluster tag
+   - Fat trees, with topology="FAT_TREE" and
+     topo_parameters="h;m1,...,mh;w1,...,wh;p1,...,ph" parameters for cluster tag
+   - see examples/platforms/torus_cluster.xml and
+     examples/platforms/fat_tree_cluster.xml
  * More documentation
 
  SMPI:
- * hostfiles support host:nb_processes construct to deploy several processes on
-   one node
+ * Hostfiles support host:nb_processes construct to deploy several processes on
+   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,
+   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) :
+   - 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
+   dynamic libraries loaded by the application are not privatized (static
+   linking with these libraries is advised in this case)
+
+ Tracing:
+ * Options defined in XML work correctly now.
+
+ Java:
+ * New cmake option, enable_lib_in_jar, to control whether native libraries are
+   copied into simgrid.jar or not (ON by default).  Use this option if you want
+   to reduce the size of the installed simgrid.jar, *and* the native libraries
+   are kept installed elsewhere.
+ * Surf binding with SWIG (code generated in maintainer mode only):
+   - plugin to handle callbacks
+   - CPU model only for the moment
 
  Build System:
  * Supernovae build mode is definitively removed. It was used to improve
    inlining and inter-module optimizations. It is nowadays superseded by
    link-time optimizations commonly available in compilers.
- * Update ns3 find lib
+ * Update ns-3 find lib. Bindings for ns-3 should work again now.
  * Add boost dependency for surf++
+ * Add new macro for tests
+   - ADD_TESH(name <tesh_args>)
+   - ADD_TESH_FACTORIES(name "thread;ucontext;raw" <tesh_args>)
 
- -- $date Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ XBT:
+ * New functions
+   - xbt_bar_t XBT_barrier_init(unsigned int count)
+   - int XBT_barrier_wait(xbt_bar_t barrier)
+   - void XBT_barrier_destroy(xbt_bar_t barrier)
+ * Make the xbt_os_time module public
+
+ -- Sat May 31 22:39:38 CEST 2014 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
 
 SimGrid (3.10) stable; urgency=low
 
@@ -114,7 +306,8 @@ SimGrid (3.10) stable; urgency=low
  * Add a --cfg:tracing/smpi/internals option, to trace internal communications
    happening inside a collective SMPI call.
  * Fix the behavior of complex data types handling.
- * Make MPI_Wtime another synchronization point to take computations into account.
+ * Make MPI_Wtime another synchronization point to take computations into
+   account.
  * Replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using
    enable_smpi_MPICH3_testsuite flag in cmake. Run with ctest.
  * Add all missing Fortran bindings, SMPI should work with Fortran 90
@@ -289,7 +482,7 @@ SimGrid (3.8) stable; urgency=low
  * New option "enable_mallocators" to disable mallocators, for debugging
    purpose ("on" by default).
 
- Simix:
+ SIMIX:
  * Bug fixes around the resource failures: don't let the processes
    survive the host they are running onto.
  * Add an interface to auto-restart processes when the host in which they are