Home My Page Projects SimGrid
Summary Activity Forums Tracker Lists Docs News SCM Files

Project Filelist for SimGrid

File Release Notes and Changelog

Release Name: 3.7

Release Notes
The "spring cleanups (before the next Big Project kicks in)" release.
Major changes:

 * Major cleanups all around (doc, user options, MSG, Lua, internals)
   Small backward compatibility glitches may have been introduced
 * Parallel execution of user code should be stable and efficient now
 * SMPI is now considered stable
 * Add temporals to Model-Checking (highly experimental right now)
Change Log
  * We can specify the SMPI latency/bandwidth factor with command line
    add --cfg=smpi/bw_factor:"threshold0:value0;...;thresholdN:valueN"
    or add --cfg=smpi/lat_factor:"threshold0:value0;...;thresholdN:valueN"
    You can also use the "config tag" from platform file by adding this line
    <prop id="smpi/bw_factor" value="threshold0:value0;...;thresholdN:valueN"></prop>
    (see "example/platforms/tag_config.xml" to use "config tag").
    Note that the command line supersedes the platform file configuration.
  * Change the correction factors used in LMM model, according to
    the latest experiments described in INRIA RR-7821.
    Accuracy should be improved this way.
  * Use the partial invalidation optimization by default for the
    network too. Should produce the exact same results, only faster.
  * Major cleanup in surf to merge models and split some optimization
    mechanisms from the core of the models. As a result you can now
    specify which model to use (e.g., --cfg=network/model:LV08
    --cfg=cpu/model:Cas01) and which optimization mode to use
    (e.g., --cfg=network/optim:lazy --cfg=cpu/optim:TI).
    Incompatible combinations should err at initialization. See
    --help-models for the list of all models and optimization modes.
  * The CLM03 workstation model was dropped for simplicity because it
    used the deprecated CM02 network model. Use default instead.
  * Rename the TCP_gamma configuration option to network/TCP_gamma
  * Rename the coordinates configuration option to
    network/coordinates, and document it
  * Use now crosstraffic keyword instead of the terribly misleading
    fullduplex keyword. It is activated by default now in the current
    default model, use --cfg=network/crosstraffic:0 to turn it off.
  * Ongoing refactoring the model parsing to make XML files optional
    See include/simgrid/platf.h for details (still to be completed)

  * Major overhaul of the documentation. Almost instructive now :/
  * Deprecate the use of m_channel_t mechanism like MSG_task_{get,put}
    functions and friends. This interface was considered as
    deprecated since over 2 years, it's time to inform our users that it is.
    Switch to MSG_task_{send,recv} instead, or compile SimGrid command line
    'cmake -Dcustom_flags="-DMSG_USE_DEPRECATED" .' if you really need to
     use these (crappy) functions in your code.
    These functions will be removed soon. Stop using them now.
  * Deprecate MSG_get_host_{table,number}
    Implement MSG_hosts_as_dynar() instead.
  * Implement MSG_processes_as_dynar() (Closes gforge #13642)
  * Remove the public field msg_host_t->name. Use MSG_host_get_name()

  * Stabilize the parallel execution mode of user contexts
  * Introduce configuration variables to control parallel execution:
    - contexts/synchro: Synchronization mode to use when running
      contexts in parallel (either futex, posix or busy_wait)
    - contexts/parallel_threshold: Minimal number of user contexts
      that must be part of a scheduling round to switch to parallel 
      execution mode (raw contexts only)

  * Introduce a parallel mode for the models (controlled by surf/nthreads
     configuration item). In our tests, running the models in parallel
     never lead to any speedups because they are so fast that the gain
     of computing each model in parallel does not amortizes the
     synchronization costs, even when ultra fast futexes are used.
    This is released anyway because YMMV.

  * Performance boost by using a swag internally to compute the set of
    tasks that are finished and should constitute the return value of

  * Enable it by default now that it is considered rather stable.

  * Documentation of the tracing functions.
  * Performance gains when tracing categorized/uncategorized resource
    utilization by avoiding calls to get route when updating resource
    variables. LMM constraints are being used instead.
  * API changed to set task categories. Use MSG_task_set_category instead
    of TRACE_msg_set_task_category, and SD_task_set_category instead
    of TRACE_sd_set_task_category. They only work if ENABLE_TRACING is ON.
  * Bugfix for graphicator, routes not correctly obtained, memory leaks
  * Examples for link user variables added (see at examples/msg/tracing/)
  * Examples for link user variables added (see at examples/msg/tracing/)
  * Deprecated function TRACE_msg_set_process_category completely removed
  * Trace header updated according to the latest Paje file format
  * Tracing network lazy updates, no longer obligate users to use full updates
  * --cfg=tracing/platform:1 also registers power/bandwidth variables
  * Experimental: let user code declare/set/push/pop application states for hosts
  * API changed to allow the manual creation of graph configuration files
    for Triva. See TRACE_get_node_types() and TRACE_get_edge_types().

  * Improve the API of Lua MSG bindings, using the Lua spirit.
  * Each simulated process now lives in its own Lua world (globals are
    automatically duplicated). It helps writing simulators. Will allow
    to run Splay programs within SimGrid in the future.
  * Add a Chord example in Lua, equivalent to the MSG one.

  * Start the implementation of a solution to express temporal
    properties, not only local assertions. This is still an
    experimental work in progress, stay clear from it to be safe.

  * Logs:
    - Add new runtime parameters --help-logs and --help-log-categories
      to display informations about supported logging parameters and
    - Old deprecated parameters --{gras,surf,msg.simix,xbt}-log=...
      don't exists anymore.
  * Mallocators: allow value NULL for the reset function.
  * Dicts:
    - New function xbt_dict_new_homogeneous(void(*)(void*)) to
      create homogeneous dictionaries, where all the elements share the
      same free function. Non homogeneous dictionaries will be
      deprecated in the next release.
    - Dicts of scalar elements (xbt_dicti_*) are deprecated.
    - Multi-level dictionaries are deprecated.
  * Dynars:
    - new function xbt_dynar_search_or_negative() that is useful when
      you have less than 2 million elements in your dynar and don't
      want of the extra complexity of catching exceptions when the
      element is not found.
  * Portability layer
    - Make xbt_os_thread module (for thread portability) public.
      Documentation is still to come, sorry.
  * mmalloc module:
    - Cleanups and simplifications to make it maintainable again.
    - Exotic features (such as memalign and valloc) were removed.
    - The metadata were extended and improved so that the
      model-checker becomes able to explore and inspect the heaps.
    - This may induce a performance drop when enable_model-checking is
      ON in cmake (even if it's not used in the simulation), but it is
      necessary at this point to get MC working.

      Turn model-checking OFF if simulation performance matters to you.
      Not enabling it at runtime is not enough, disable it in cmake.