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.3.2

Release Notes
The "Simplicity does not preceed complexity, but follows it" release.
Most important changes:
 * surf and simix modules reworked for simplification.
   It lays the ground for future extensions and improvements of SimGrid
 * SMPI was further improved, altrough not ready for production use yet.

On the way, we gained a bit more than 5% on the classical master/slave
example. More to come on this in future releases.
Change Log
 The "Simplicity does not preceed complexity, but follows it" release.

 The main contributors of this release were (lexical order):
   Silas De Munck, Stéphane Genaud, Martin Quinson, Cristian Rosa.
  * Extract the routing logic into its own object.
    (was dupplicated in network.c and workstation_LV07.c;
     Allows to implement other ways of storing that info)
    => kill now useless network_card concept
    - Use dynar to represent routes (instead of void** + int*)
    - kill link_set (use surf_network_model->resource_set instead)
    - Add a command-line option to choose the routing schema to use
    - Add three new models: 
      * Floyd (shortest path computed at initialization)
      * Dijikstra (shortest path recomputed all the time)
      * Cached Dijikstra (shortest path computed on need)
      All these models where contributed by Silas De Munck, and are
      described in his ICCS09 paper.

  * Simplify model declaration
    (less redirections, less function to write when defining a model)
    - Factorize stuff between models:
      - model_init/exit
      - Set of resources:
        surf_model_resource_by_name(model, name)
    - Unify the types of models in s_surf_model_t (using an union)
    - Embeed fields of common_public directly into s_surf_model_t
    - Rename model methods:
      action_free ~> action_unref
      action_change_state ~> action_state_set
      action_get_state    ~> action_state_get
    - Change model methods into functions :
      (model)->common_public->action_use  ~> surf_action_ref
  * Implement a generic resource; use it as ancestor to specific ones
    (allows to kill duplicated code in models)
    Drawback: timer command don't need no name nor properties;
              workstation_CLM03 don't need no properties
    (but I guess we can live with those few bytes wasted)
  * Improve the action object model
    - implement a constructor avoiding dupplicated code about field
      initialization in generic_action part.
  * Kill the SDP model: it has an external dependency, is deprecated
    in flavor of modern lmm models, and didn't compile since a while
  * Relocation of the context module from XBT to SIMIX.
    (the context were decoupled from the simix processes, duplicating a lot of code)
    => a lot of code was factorized
    - less overhead is introduced during scheduling
    - simpler API for the context factory
    - the logic for process creation,destruction and manipulation was simplified
  * Simplification of the s_smx_process_t data structure.
    => accesing the simix level data associated to a process is faster now, 
       and the code is a lot more readable.
  * Implement some more MPI primitives: 
    MPI_Bcast, MPI_Waitany, MPI_Waitall, MPI_Reduce, MPI_Allreduce, MPI_Scatter, MPI_Sendrecv, MPI_Alltoall
    -implementation: Bcast: flat or 2-ary tree (default), 
                     Barrier: 4-ary tree,
                     Reduce: flat tree
                     Allreduce: Reduce then Bcast
                     Alltoall: "basic_linear" if data per proc < 3Kb, "otherwise pairwise". 
                               Not yet implemented: "Bruck" for data per proc < 200b and comm size > 12
                     Alltoallv: flat tree, like ompi
                     Scatter: flat tree
  * Add support for optimized collectives (Bcast is now binomial by default)
  * Port smpirun and smpicc to OS X

  * Kill SD_link_get_properties: hard to maintain and makes very little sense
    Shout out if you used it.
  * Display the list of still queued messages in SG mode when existing
    the process.

  * Add xbt_set_get_by_name_or_null() [Silas De Munck]
  * Add xbt_graph_node_get_outedges() [Silas De Munck]
  * Add xbt_str_from_file(FILE*)
  * Add xbt_dict_get_key achieving a linear reverse search
  * Remove the context module 

 Portability report of this version:
  * Main portability targets:
    - Linux(debian)/x86/context   
    - Linux(debian)/x86/pthreads 
    - Linux(debian)/amd64/context 
    - Linux(debian)/amd64/pthreads
    On these, we still have the eratic breakages of gras/pmm and 
      amok/saturate_sg reported in previous version. We still think
      that the tests are the cause of the fault, not the tested code.
    - Mac OSX Leopard/x86/context
    Still false negative in tesh autotesting.
    Smpi still fails, but this time because readlink does not accept -f
    Everything seems to work properly beside of that.
  * Exotic platforms:
    - AIX version 5.3 (only tested contexts this time)
      Smpi still fails there because mktemp is not installed. 
      Everything seems to work properly beside of that.
    - OpenSolaris 11
      I managed to compile it for the first time, but several breakages.
      Won't delay the release for this exotic platform.
  * Windows: it's still lagging behind. If you want to help, please
    stand up.

 Timing report of this version:
  This version seem to be more than 5% faster than 3.3.1 (on linux
    64bits with contextes). The gain is less than expected, we are
    investigating this for next release.