Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update scripts for pipol
[simgrid.git] / ChangeLog
index 339a034..a27d4e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,461 @@
+SimGrid (3.5) unstable; urgency=low
+
+ Msg
+ * New function: MSG_load_platform_script()
+   to make possible using a lua script instead of XML files to set up platforms 
+ * New function: MSG_set_function
+  to associate functions to processes, used when bypassing the parser 
+ Lua Bindings
+ * add layer to set up environment and bypass the XML surf parser
+ * modify the entry point, to take into consideration when lua is used only as a platform generator
+ SURF
+ * add new callbacks to the CPU & netwok models to create resources 
+   no need to pass through the parser callbacks to do so.
+ * add new function to create routes table via the routing model
+ * add generic functions in the public interface 
+   that allows the user to call SURF 'create_resource' methods from a lua script.
+ SIMIX :
+ * New function: SIMIX_process_set_function()
+   called by MSG_set_function
+ SimDag
+ * Change the way a task is considered as ready. Instead of removing 
+   dependencies when a task is done, a counter is decreased. This way,
+   it is always possible to reach ancestors thanks to the 
+   SD_taks_get_parents function (even after the end of the simulation.)           
+ * Change the level of some logs in sd_global from INFO to VERB. The
+   corresponding tests are now less verbose
+ * Change the return type of SD_Simulate from (SD_task_t*) into
+   xbt_dynar_t. This function was in handling a dynar internally and
+   converted it into a NULL terminated array for historical reasons.
+ * Rename the SD_READY (all dependencies are satisfied and task is
+   scheduled) state in SD_RUNNABLE and define a new SD_SCHEDULABLE (all
+   dependencies are satisfied) state. 
+   This prevents a confusion between the notion of "ready to schedule"
+   (SD_SCHEDULABLE) used in DAG scheduling and that of "ready to be
+   simulated" (SD_RUNNABLE) used by the simulation kernel.
+ * Add an example that scheduling a DAX on an heterogeneous platform
+   using a Min-Min strategy
+ * new function SD_dotload(char*) to load a DAG described in dot
+   format. This loader and the corresponding examples require the
+   installation of the graphviz library.
+ SIMIX
+ * Change the underlying waiting queue in semaphores so that a process
+   can wait on several of them simultaneously (as in waitany).
+ * Fix the way to handle tokens in semaphores so that all access patterns
+   work: {acquire, acquire_timeout, waitany} / {release, release_forever}.
+
+ XBT
+ * New data container: setset (set of sets of elements)
+ * New module: mmalloc (mapped malloc)
+ * New function: xbt_dict_cursor_set_data()
+ * New function: xbt_dynar_sort()
+ * New function: xbt_dynar_is_empty()
+ * New function: xbt_fifo_get_last_item()
+ * Bug fix in xbt_dynar_shrink(): use the right element size
+ * Use library init/fini functions for our initialization.
+   - you can use logs and other feature as soon as you want in your
+     code (even before the xbt_init / MSG_init)
+   - xbt_exit is now a no-op and produce a warning when used.
+
+ GRAS:
+ * New function: gras_msgtype_get_name()
+
+ Build chain: bug fixes and further polishing
+ * Fix the 'make install' target. 
+   No need to use 'make install-simgrid' anymore
+ * Introduce a 'make dist' target compiling a *source* archive
+   'make package' compiles a binary archive (not well tested)
+ * Compile java files only on need
+
+ Tracing:
+ * Tracing system
+   - tracing API for MSG changes: TRACE_start has no
+     longer parameters, the trace file is supplied through
+     an option passed to simulator. Categories declaration
+     and utilization remain the same. The following options
+     are supported:
+        --cfg=tracing/filename:msg.trace
+        --cfg=tracing/platform:1      (categorized resource use)
+        --cfg=tracing/msg/task:1      (task creation)
+        --cfg=tracing/msg/process:1   (process creation, migration)
+        --cfg=tracing/msg/volume:1    (volume of msg send/recv)
+        --cfg=tracing/smpi:1          (smpi interface tracing)
+   - examples of examples/msg/tracing updated
+    
+ * Tracing the MPI interface implemented by SMPI
+   - Collective operations are traced with states
+   - Point-to-Point operations are traced with states/links
+   - Tracing activated by a parameter "-trace filename" passed
+     to smpirun during execution (considering that simgrid
+     is compiled with tracing enabled)
+   - To run the simulation with gdb, the simulator
+     accepts --cfg=tracing/smpi:1 to trace SMPI
+   - tesh files to check if smpi tracing is ok
+
+ * GTNetS tracing re-worked
+   - adaptation to the tracing system of GTNets to cope
+     with modifications regarding the fullduplex mode
+   - new tesh files to check if gtnets tracing is ok
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> 
+
+SimGrid (3.4.1) stable; urgency=low
+
+ The "Polishing easter eggs is probably a good idea" release.
+ This is a bug fixes release only.
+
+ Java Bindings
+ * Fix a bug preventing the tasks from begin garbage collected.
+
+ MSG
+ * Fix a bug occuring when a host involved in a communication fails.
+   This was not detected properly by the other peer involved in the
+   communication. Now, it's reported as a network error.
+
+ SimDag
+ * Warn the user about loop dependencies in data flow of DAX files
+ * Obey the control-flow dependencies of DAX files
+
+ Cmake
+ * Add option "enable_smpi" allowing to not compile SMPI. 
+   Probably useful for the (Mac) users experiencing a build error here
+ * Improve the detection of lua5.1 and ruby1.8
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Tus, 04 May 2010 28 16:11:16 +0100
+
+SimGrid (3.4) stable; urgency=low
+
+ The "Easter in Cargese" release. Also known as (major changes):
+  * the "se habla Java, Ruby 話せます, fala-se Lua (and deaf-friendly)"
+    ~> bindings were greatly improved
+    ~> new tracing infrastructure for better visualization introduced
+    
+  * the "Welcome to configury modernity" release.
+    ~> we switched from autotools to cmake, and improved our cdash
+
+
+ A more detailled list of changes follow (full detail in svn log).
+
+ Java Bindings: Various Cleanups
+  * (install java-gcj-compat-dev on debian-like to use them)
+  * Remove put/get: no need to export deprecated interface in Java
+    Use send/receive instead.
+  * Cleanup the examples and add a README per directory
+  * Remove example autoDestination (that's the only way to go now)
+  * Remove example explicitDestination (was a plain copy of basic)  
+  * Make JniException a runtime exception, so that there is no need to
+    declare the fact that you may encounter such a beast. I guess that
+    nobody will ever want to survive such error.
+  * Create specific errors for each MSG case of failure:
+    host failure, transfer failure, timeout, task cancelled
+  * Cleanup the exceptions that may get thrown by each function
+  * Other internal cleanups in Java bindings. Performance still bad :/
+ Ruby and Lua Bindings: create them
+  * (install ruby1.8-dev/liblua5.1-0-dev on debian-like to use them)
+  * That's new and great, you should try them out. 
+    Same functionalities than Java bindings, only even less polished
+ SimDag:
+  * Kill the useless "rate" argument of SD_task_get_execution_time()
+    Everyone used to provide -1 as a value, it was not used, and the
+    semantic of a possible use wasn't even clear.
+  * SD_SCHED_NO_COST: Constant to use as cost in SD_task_schedule()
+    either as comm costs or compute costs to mean that there is no
+    such thing for that specific task.
+  * Add a SD_task_set_name() function
+  * Fix SD_task_unschedule() on typed tasks
+  * Fix SD_task_get_execution_time() to return seconds, not flop*sec
+  * In DAX loader, accept useless 'level' attributes to <job> since
+    LIGO DAGs have them (seem to be to ease graphical representation).
+ MSG: 
+  * Add an example masterslave_mailbox.c using send/receive and not
+    the deprecated put/get interface.
+  * Kill the MSG_paje_output() function. It's a noop since 2 years.
+  * Kill MSG_WARNING and MSG_FATAL return codes: they were not used
+    anywere in source.
+  * Rename MSG_TIMEOUT_FAILURE into MSG_TIMEOUT for sake of logic
+    (declare MSG_USE_DEPRECATED to still have the old name)
+  * Add a MSG_task_set_data() function
+  * About trace replay (see examples/msg/actions):
+    - implement barrier
+    - Allow to work with splitted trace files for each process
+      Give the specific trace file as argument of each process, 
+        and call MSG_action_trace_run(NULL)
+      You can still have one merged file for all processes.
+    - Fix implementation of collective operations
+  * Allow task_execute() on 0-sized tasks (closes #10063)
+ SMPI:
+  * This is the first release of SimGrid where SMPI is not considered
+    beta anymore (even if some corners should still be improved)
+  * Port over the new SIMIX_network submodule (internal refactoring)
+  * Basic support to log events as with SMPE (use --cfg=SMPE:1)
+  * Implement more missing elements of the standard:
+    - MPI_COMM_SELF 
+    - MPI_MAXLOC MPI_MINLOC + all associated datatype MPI_DOUBLE_INT,
+      MPI_FLOAT_INT, etc.
+    - MPI_Address() MPI_Get_count() MPI_Type_free() MPI_Type_extent()
+      MPI_Scan() MPI_Get_processor_name()
+    - Added implementation of missing case for Alltoall (warning: it's
+      *not* the bruck variant from OpenMPI; based on Alltoallv instead)
+    - SMPI_MPI_Gather() SMPI_MPI_Gatherv() SMPI_MPI_Scatterv()
+      SMPI_MPI_Reduce_scatter() SMPI_MPI_Allgather()
+      SMPI_MPI_Allgatherv() 
+  * Bug fixes include:
+    - MPI_Waitsome() was broken
+    - Allow relative includes in smpicc
+    - Command line cfg argument 'reference_speed' was ignored...
+    - Some functions did not properly lead to auto-benching of user code
+    - smpicc passes -O2 by default (just like openmpi one)
+ SIMIX:
+  * add SIMIX_action_suspend() and SIMIX_action_resume() functions
+  * Bug fixes about timeouts during communications
+  * add SIMIX_message_sizes_output() as a pimple to write to file the
+    amount of messages per size. Use gnuplot to get histogram. 
+    Pimple because that's the only user-visible function of simix,
+     defined directly in xbt.h (irk, sorry)
+  * About semaphores:
+     - Add a SIMIX_sem_get_capacity() function
+     - Fix interactions with processe resume/suspende
+     - release_forever() was stupidly broken
+     - Fix SIMIX_display_process_status() for processes in a semaphore
+     - Make SIMIX_sem_block_onto() user-visible
+  * Refactoring context stuff:
+    - Use pseudo-OOP for better modularity
+    - reimplement SIMIX_process_kill() without process_schedule() so
+      that the latter can take as invariant that it is called from
+      maestro.
+    - Merge context_start into context_new for sake of simplicity
+ SURF:
+  * Add a Vivaldi network model, coded live during SUD'10 ;)
+  * Rename configuration variables to start a hierarchy:
+    o cpu_model -> cpu/model
+    o network_model -> network/model
+    o workstation_model -> workstation/model
+  * New configuration variables:
+    o network/bandwidth_factor: correction to bandwith
+    o network/latency_factor: correction to latency
+    o netwotk/weight_S: correction to the weight of competing streams
+  * Add a long description to the models, that users can see with such
+    argument on the command line: --cfg=cpu/model:help
+  * --help-models display the long description of all known models
+ XBT:
+  * config: add the ability to set a default value after registration
+    Does not override any previously set value (e.g. from cmd line)
+  * dict: allow to have integer key and data.
+    When so, you need to use the following functions
+     void xbt_dicti_set(xbt_dict_t dict, uintptr_t key, uintptr_t data);
+     uintptr_t xbt_dicti_get(xbt_dict_t dict, uintptr_t key);
+     void xbt_dicti_remove(xbt_dict_t dict, uintptr_t key);
+    In contrary to regular dicts, the key is not malloced before copy.
+    Mixing scalar and regular elements in the same dict is not tested 
+      (but may work).
+  * Allow to use xbt_dynar_shrink() to expend the dynar instead
+ Tracing for Visualization:
+  * SimGrid is now instrumented in order to generate a trace file for
+    visualization analysis: to use it, need to compile SimGrid with the
+    "tracing" option enabled, and instrument the program using SimGrid with
+    TRACE_start, TRACE_category, TRACE_msg_set_task_category and TRACE_end
+    (among other functions).
+  * The instrumentation only traces the platform utilization for now
+  * Documentation to use the tracing functions and how to analyze the
+    traces with the Triva tool is written.
+  * More information about: SimGrid FAQ (in the section Tracing Simulations
+    for Visualization)
+ Build system:
+  * We moved to cmake as default build system. Autotools support will
+    be dropped soon. Check the FAQ for more info about how to use it.
+  * Greatly improved our cdash/ctest interactions
+    Check http://cdash.inria.fr/CDash/index.php?project=Simgrid
+  * Added memory checking tests with valgrind; lot of memleak fixing.
+    This may be the first release of simgrid with so few memory issues
+  * Added code coverage tests. 
+    Our coverage is still improvable, but at least we see it on cdash.
+   
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Wed, 28 Apr 2010 28 17:11:16 +0100
+
+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.
+   
+   
+         ******************************************
+         *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.
+     
+ 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.
+
+ MSG:
+ * Port of MSG's mailbox on top of SIMIX network
+   The put/get mechanism was greatly simplified on the way.
+
+ SIMIX:
+ * 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.
+   
+ 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.
+ * 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.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Thu, 24 Dec 2009 19:07:39 +0100
+
+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.