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

Release Notes
The "Need for Speed" release (also called "Xmas release").
Most important changes:
 * Big speedup through lazy evaluation of the linear models
 * Supernovae mode: Compile everything in one unit to improve inlining
 * Simix network module for internal cleanups
 * Load DAX of applications into SimDag
 * Lot of small cleanups and other bug fixes
Change Log
SimGrid (3.3.4) stable; urgency=low

 The "Desktop Grid needs love too" release (also called Xmas release).

 Models improvements:
 * Major speedup in the maxmin system solving by using lazy evaluation
   Instead of solving completely the maxmin system at each iteration, 
     only invalidate (and recompute) the modified parts. 
   This new feature is enabled in default models but you can try to
     turn it on with "--cfg:maxmin-selective-update=1" for other models.
 * Cas01 IMproved as default CPU model
   This CPU model is the same Cas01 model, but it uses the
     maxmin-selective-update flag and a heap structure to manage
     actions on SURF kernel. 
   It reduces the complexity to find the next action to finish and,
     consequently, it's faster than the old Cas01.
   This is the new default CPU model (Cas01).   
 * Rename the old Cas01 model to Cas01_fullupdate
   Keep the old cpu model Cas01 with the new name of Cas01_fullupdate.
   Use "--cfg=cpu_model:Cas01_fullupdate" to use the old default CPU model.
 * CpuTI (CPU Trace Integration)
   A new CPU model whose objective is simulate faster when using
     availability trace files. 
   Instead of using a full featured, over engineered maxmin system for
     CPU modeling, this model does the pre-integration of traces files
     to calculate the amount of CPU power available, and so, executes
     faster than the old CPU models. 
   Use "--cfg=cpu_model:CpuTI" to change to this CPU model.
 * Use LV08 as default network model since it gives better accuracy
    for small messages and shouldn't change things for big ones.
   Use --cfg=network_model:CM02 to get the previous behavior.
   * The new CPU model may changes simulations!
     The point is that events occurring at the exact same timestamp
        are not scheduled in the same order with the old and new 
        version. This may be enough to completely change the execution
        of simulations in some cases. 
   * The new network model will change simulations!
     This new model is more realistic than the previous one, so you
       should consider redoing your old experiments with this model.
     Sorry for the inconvenience.
 Build System:
 * Introduce the supernovae compilation mode
   When compiled that way, the whole SimGrid (or almost) is put in a
     single compilation unit and compiled in one shoot. 
  This is to help gcc which has difficulties to inline stuff from one
     file into another.
  The speedup seem to be above 15%, althrough more tests are needed on
     amd64 to confirm that gain.

 * Port of MSG's mailbox on top of SIMIX network
   The put/get mechanism was greatly simplified on the way.

 * New SIMIX network module. Provides:
   - Mailbox: rendez-vous mecanism to find with who you want to speak
   - Synchronous send/recv: easier and hopefully faster since the
     logic is handled in the maestro process directly now
   - Asynchronous send/recv: you dreamt of it? It's here now
     Too bad that nobody cared enough to propagate the change to MSG.
 * Add semaphores as SIMIX synchronization mechanism.
 * new function SD_daxload(char*) to load a DAX file 
   (see http://vtcpc.isi.edu/pegasus/index.php/WorkflowGenerator)
 * Introduce typed tasks. Specify its kind and cost at creation. 
   At scheduling, just give where it should be placed, and the cost
   for each involved resource is automatically computed.
   Existing constructors so far (more to come of course):
    - SD_task_create_comm_e2e() for end-to-end communication
    - SD_task_create_comp_seq() for sequential computation
   Use SD_task_schedulev() / SD_task_schedulel() to schedule them.
 * new function SD_task_dump() for debuging display
 * new function SD_task_dotty(task,FILE*) writing to file the info
   about the task in dotty format
 * SD_task_dependency_exists() can now cope with having one of its
   arguments NULL. If so, it tests whether the other argument has any 
 * Add getters on list of preceding/following tasks:
    SD_task_get_parents(task) and SD_task_get_children(task)
 * Add getters on amount of workstations and list:
    SD_task_get_workstation_count(t) and SD_task_get_workstation_list(t)
 * Add getter on task kind: SD_task_get_kind(task)
 * Update the start_time and finish_time of tasks on completion/failure
 * Bugfix: Remove task from state swags when destroyed
 * New function: void gras_cpu_burn(double flops) -- a simple CPU burner

 * New function: xbt_dynar_dopar(dynar,fun) to map a function over the
   dynar with one separate thread per value of the dynar.
 * Change the prototype of xbt_thread_create(), sorry. 
   Added a boolean parameter indicating whether we want to join this
   thread (used in SG only for now)
 * Implement xbt_thread_join and xbt_thread_yield in SG also.
 Bug fixes:
 * GTNetS wrappers should now be usable again (and betterly tested too)
 * Fix a major regression from 3.2 where the timeout provided to
   MSG_task_put_with_timeout() was used as absolute time before which
   the comm should be done.
 * Start to fix the <cluster> tag. 
   - Internal links should be good now (beside of the loopback, which
     use the private link instead)
   - paths to the external world is still rather broken
   - the <route:multi> tag is just broken. Actually that's brain-dead.
     We need sth like <route:multi src="myCluster" dst="$*-${myCluster}">
     to make it less stupid
   ** Check your platform with teshsuite/simdag/platforms/flatifier **
 * Fix a source-level compatibility glitch from 3.2: after defining
   MSG_USE_DEPRECATED, you can use the old name
   MSG_task_put_with_time_out() for MSG_task_put_with_timeout()
 * Allow to compile from the SVN with automake 1.11
 * Fix some problems when using the "start_time" tag in deployment XMLs.
 * Fix #8569: XBT/synchro.h has redundant declarations
 * Fix #8563: MSG return values and exceptions
   Introduce a MSG_TIMEOUT_FAILURE return code and use it consistently.
 * Integrate patch #8636: Obey DESTDIR when installing documentation.
   Thanks to Robson Peixoto.
 * Fix a vicious bug in dictionaries inducing that some elements were
   not freed on xbt_dict_free()

 Portability report of this version:
  * Main portability targets:
    - linux (ubuntu (804/810/910) /debian (4/5/testing) /fedora (core11)) 
      on (amd64/i386/ia64)
    - mac leopard on i386
    Known problems: http://cdash.inria.fr/CDash/index.php?project=Simgrid
     but nothing critical.
  * Other platforms: windows, AIX and others were not tested for this release
 Timing report of this version:
  * Lazy evaluation brings arbitrary speedup (ie, speedup depending on
    scenario parameters). From 8h to a few seconds in desktop grid settings.
  * Supernovae brings about 25% speedup on i386.