Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
bugfixes to make the dax loader and typed task scheduler work
[simgrid.git] / ChangeLog
index 95df710..a532634 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,366 @@
-SimGrid (3.3-cvs) unstable; urgency=low
+SimGrid (3.3.4) unstable; urgency=low
+
+ The "Desktop Grid needs love too" 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.
+   
+   
+         ******************************************
+         *DO NOT MIX 3.3.4 RESULTS WITH OLDER ONES* 
+         ******************************************
+   * 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.
+
+ MSG:
+ * Port of MSG's mailbox on top of SIMIX network
+   The put/get mechanism was greatly simplified thanks to the new SIMIX module.
+
+ SIMIX:
+ * New SIMIX network module
+   It provides a rendez-vous point (aka mailbox) based send/recv API to perform
+   synchronous communication. 
+   
+ SimDag:
+ * 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 
+   dependency.
+ * 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
+
+   
+ 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.
+ * 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.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> 
+
+SimGrid (3.3.3) stable; urgency=low
+
+ The "Need for Speed" release.
+ The timings done to validate the 3.3.2 were faulty. 
+ Instead of being 5% faster, it was 15% slower (compared to 3.3.1).
+   
+ The problem was a conversion from a manually handled vector to
+   xbt_dynar_t on the critical path. 
+ xbt_dynar_foreach calls functions, inducing stack management crap.
+
+ We inlined these functions and xbt_dynar_foreach is now breath taking.
+ We also inlined xbt_swag_belong on the way.
+
+ Here are some approximate speedup measurements (on master/slaves
+  simulations lasting between 10s and 20s each):
+   3.3.1                   -> 3.3.2: about same performance
+   3.3.2                   -> 3.3.3: 40% speedup
+   3.3.1                   -> 3.3.3: 40% speedup
+   3.3.1 with inline patch -> 3.3.3: 30% speedup
+   
+ Our reading is that the refactoring which occurred in 3.3.2 made us
+  suffer much more from the xbt_dynar_foreach low performance, but
+  once we solved this, this refactoring proved to be very performance
+  effective. From the 40% speedup, somehow, 10% are due to the
+  inlining and 30% to the refactoring.
+
+ That's a pitty that gcc cannot inline functions placed in other files
+  alone. We have to choose between:
+  - break the encapsulation (by putting private data structures and
+    accessors in headers files to help gcc)
+  - live with low performance 
+  - switch to a decent compiler such as icc (not quite possible).
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Thu, 20 Aug 2009 21:21:33 +0200
+
+SimGrid (3.3.2) stable; urgency=low
+
+ 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.
+       
+ SURF: 
+  * 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_set(model)
+        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
+ SIMIX:
+  * 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.
+       
+ SMPI:
+  * 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
+
+ SimDag:
+  * Kill SD_link_get_properties: hard to maintain and makes very little sense
+    Shout out if you used it.
+    
+ GRAS:
+  * Display the list of still queued messages in SG mode when existing
+    the process.
+
+ XBT:
+  * 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.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Wed, 19 Aug 2009 17:07:12 +0200
+
+SimGrid (3.3.1) stable; urgency=low
+
+ OVERALL CHANGES:
+  * Implement a --cfg-help to show existing configuration variables
+  * Build chain do not require doxygen in maintainer mode
+
+ GRAS:
+  * fix a bug on struct sizeof computation, which prevented the
+    exchange of arrays of structs in some conditions
+    - added a regression test about this in datadesc_usage
+  * Allow the exchange of 0-long dynamic vectors.
+    - for that, use -1 as indicator of dynamic size instead of 0
+    - This implied to change any size from unsigned long to long,
+      reducing a bit communication abilities, but I guess that with
+      64bits being quite common, this is more than enough.
+    - This also induce a protocol change, thus bumping network protocol
+      version from 0 to 1 (if we have external users, we have to get
+      clean on that point too ;)
+    - added two regression tests about this in datadesc_usage
+  * Be more verbose when propagating local exceptions
+    This helps debugging.
+  * Display the status of simulated processes when receiving SIGINT in
+    simulation mode
+
+ MSG:
+  * Allow to control the simulation from a trace file.
+    New functions MSG_action_register() and MSG_action_trace_run()
+    The first one allows to associate a function execution to each
+     kind of action while the second one parses a trace file and
+     triggers the corresponding actions within the system.
+    For now, only a toy example is provided in examples/msg/actions
+  * Add an exemple of process migration in examples/msg/migration
+  * Fix a bug in task exchange which broke MSG_task_get_sender()
+    Add a teshsuite regression test for that.
+    [Bug: if MSG_task_get_sender() is called after sender exit,
+     bad things happen]
+  * Fix a bug which prevented suspend/resume to work properly
+  * Display the status of simulated processes when receiving SIGINT
+    This fixes a regression of v3.3. due to the introduction of SIMIX
+  * Bug fixing in failure management:
+    - trace could not start by a failure at time 0
+    - failure during communications were not working
+       
+ SIMIX:
+  * Add SIMIX_process_set_name() to change the name of the current
+    process in the log messages.
+  * Store smx_hosts in a dict since we only retrieve them by name
+  * Move the configuration infrastructure to surf
+
+ SIMDAG:
+  * Move the configuration infrastructure to surf
+
+ SMPI: 
+  * Massive internal cleanups:
+    - Store internal structures on processes instead of hosts (allows
+      to have more than one process per host, in addition of being more 
+      logical)
+    - Cleanup the initialization/finalization process
+    - Kill a whole bunch of unneeded synchronization: 
+      processes run in exclusive manner within the simulator
+    - Move queues from global tables to process data fields
+  * Improve smpirun:
+    - now accept -platform and -hostfile arguments
+    - Pass the right rank value to processes according to the hostfile
+  * Compile the examples by default, and use them as regression tests
+  * Implement MPI_Wtime()
+  * Change the reference speed to a command line option
+  
+ SURF:
+  * TCP_gamma can now be specified as command line option using
+    --cfg=TCP_gamma:10000000.0
+  * Change the --surf-path cmd line option into --cfg=path:
+  
+ XBT:
+  * Also include strbuff from xbt.h public header
+  * xbt_ex_display(): do not free the exception after displaying 
+    This allows to do more with the given exception afterward.
+    Users should call xbt_ex_free() themselves.
+    
+    
+
+ Portability report of this version:
+  * Main portability targets:
+    - Linux(debian)/x86/context   
+    - Linux(debian)/x86/pthreads 
+    - Linux(debian)/amd64/context 
+    - Linux(debian)/amd64/pthreads
+    These targets fail about 1/10 of times on gras/pmm, but we believe
+      that this is because of the test, not because of simgrid.
+    amok/saturate_sg fails even more rarely, and the test may not be
+      the problem.
+      
+    - Mac OSX Leopard/x86/context
+    The test suite still spits tons of errors because some obscure
+      force prevents us from removing the temporary directories
+      arguing that they still contain some metadata I've never heard of.
+    Smpi fails because seq is not installed.
+    Everything seems to work properly beside of that.
+    
+  * Exotic platforms:
+    - AIX version 5.3 (both contexts and pthread)
+      Smpi still fails there because mktemp is not installed. 
+      XML inclusions seems rosty on AIX.
+    
+  * Windows: it's still lagging behind. If you want to help, please
+    stand up.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Sat, 27 Jun 2009 00:14:30 +0200
+
+SimGrid (3.3) stable; urgency=high
 
  OVERALL CHANGES:
 
@@ -22,7 +384,10 @@ SimGrid (3.3-cvs) unstable; urgency=low
     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. Sorry for the inconvenience.
-  
+
+  * Cleanup and upgrade the XML format to push further scalability
+    issues (check http://hal.inria.fr/inria-00256883/ for more info)
+
   * Improve the testing infrastructure with tesh. Now a very large part of
     the code is tested not only by being run but also by checking that the
     output match an expected output [Mt].
@@ -30,8 +395,18 @@ SimGrid (3.3-cvs) unstable; urgency=low
   * Move on to FleXML v1.7 for the embeeded XML parsers. This version
     is really less memory-demanding, which should allow you to use
     larger files in SimGrid [AL].
+    
+  * Inform valgrind about our contextes, so that it becomes usable
+    with the default (and more effecient) version of SimGrid
+    [contributed by Sékou Diakite, many thanks]
 
  GRAS:
+  * Introduce a listener thread in charge of receiving incomming
+    messages from the network. It allows to overlap communication and
+    computation but most notably, it removes some stupid deadlocks due
+    to the fact that so far, a process could not send and receive at
+    the same time. This made most non trivial communication schema
+    impossible.
   * Convert the PIDs from long int to int to match the MSG ones (and
     linux ones too) [Mt]
   * New function: gras_agent_spawn() to launch a new process on
@@ -44,6 +419,8 @@ SimGrid (3.3-cvs) unstable; urgency=low
   * New module: xbt/str [Mt]
     a ton of string utility functions (split, join, printf to a newly
     allocated buffer, trim, etc)
+  * New module: xbt/hash [Mt]
+    SHA1 hashing algorithm (more to come if needed)
   * New module: xbt/synchro [Mt]
     synchronization tools (mutex and conditions) working the same way
     in simulation and in real life (mainly useful for GRAS, but not
@@ -82,9 +459,9 @@ SimGrid (3.3-cvs) unstable; urgency=low
   * Use the SURF command line configuration mechanism.
   * 0-size tasks (for synchronization) should now work.
 
- -- 
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Sun Apr 12 05:20:36 CEST 2009
 
-SimGrid (3.2) unstable; urgency=low
+SimGrid (3.2) stable; urgency=high
 
   OVERALL CHANGES:
    * Port to windows.
@@ -189,7 +566,7 @@ SimGrid (3.2) unstable; urgency=low
 
  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri Mar 16 21:11:46 CET 2007
 
-SimGrid (3.1) unstable; urgency=low
+SimGrid (3.1) stable; urgency=high
 
   General:
   * Port to gcc 4.x   
@@ -285,7 +662,7 @@ SimGrid (3.1) unstable; urgency=low
 
  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri, 14 Jul 2006 01:32:27 +0200
 
-SimGrid (3.0.1) unstable; urgency=low
+SimGrid (3.0.1) stable; urgency=low
 
   XBT:
   * Unfortunately, I had missed 5 misnamed functions:
@@ -382,7 +759,7 @@ SimGrid (3.0.1) unstable; urgency=low
 
  -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 21 Oct 2005 14:42:20 +0200
 
-SimGrid (3.00) stable; urgency=low
+SimGrid (3.00) stable; urgency=high
   
  SURF:
   * New! Give the possibility to hijack the surf parser and thus bypass 
@@ -1155,3 +1532,7 @@ SimGrid (2.90) unstable; urgency=low
   - Get rid of libgrasutils.a since it makes more trouble than it solves.
     Build examples against the RL library, since there is no way to disable
     its creation for now.
+
+For information, the beginning of coding on GRAS was back in june
+2003. I guess that every line has been rewritten at least twice since
+then.