Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Integrate patch #8636: Obey DESTDIR when installing documentation (thanks to Robson...
[simgrid.git] / ChangeLog
index 4eef32e..d90ded4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-SimGrid (3.3.2-svn) 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.
 
- SMPI:
-  * Implement some more MPI primitives: 
-    MPI_Waitany, MPI_Waitall, MPI_Allreduce
+ 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
+ GRAS:
+ * New function: void gras_cpu_burn(double flops) -- a simple CPU burner
+
+ XBT:
+ * 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.
+
+ -- 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: 
-  * Declare common_public as an embeeded struct to reduce redirections
-    and mallocs
-  * Factorize model_init/exit between models
-  * Factorize the set of resources within common_public;
-   + change model->common_model->resource_name() 
-     into surf_model_resource_by_name(model)
-   (less redirections, less function to write when defining a model)
-  * Unify the types of models in a uniq s_surf_model_t (using an union)
-  * Embeed every fields of common_public directly into s_surf_model_t
+  * 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
-    The drawback is that network cards are more fat since they don't
-     use the model field of their ancestor. 
-    But hell, we wont fight for 8 bytes per host, will we?
-    TODO: integrate the properties into that ancestor
-  * Rename model methods:
-    action_free -> action_unref
-    action_change_state -> action_state_set
-    action_get_state    -> action_state_get
-  * Change model methods into classical functions:
-    action_use  -> surf_action_ref
-  * Use dynar to represent routes
+    (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>
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Wed, 19 Aug 2009 17:07:12 +0200
 
 SimGrid (3.3.1) stable; urgency=low
 
@@ -124,7 +364,7 @@ SimGrid (3.3.1) stable; urgency=low
     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 problee.
+      the problem.
       
     - Mac OSX Leopard/x86/context
     The test suite still spits tons of errors because some obscure