Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
There is a new process in can
[simgrid.git] / ChangeLog
index ba8bb01..094ab4d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,377 @@
+SimGrid (3.0.2) unstable; urgency=low
+
+  XBT:
+  * New module: cunit (my jUnit implementation in ansi C) [MQ]
+    - Test units are placed directly into the library code, they get extracted
+      automatically and placed into the src/testall binary.
+    - Convert most of the XBT tests to this system.
+  * New functions: xbt_dynar_getfirst_as() and xbt_dynar_getlast_as() [MQ]
+  * XML parsing: rewrote parts of flexml to enable multiple xml parsers to
+    live in the same C code. This required to change a little bit the API
+    of surfxml parsing but shouldn't be an issue for end-users. [AL]
+  * New module: sparse graph structure with basic algorithms. [AL]
+
+  SURF:
+  * complete rewrote of the KCCFLN05 workstation model. It is now an
+    extension of the classical CLM03 model that gracefully handles
+    failures. This is now the standard model for MSG and GRAS. [AL]
+
+  MSG,GRAS:
+  * Bug fix: Processes were started in reverse order, wrt deployment file.
+    WARNING: if your code relies on this bug, please fix it.    [AL]
+
+  GRAS:
+  * New! a real RPC mecanism, as it ought to be since too long. [MQ]
+      Exception occuring on server-side are propagated back to client (!).
+      
+    API CHANGE: the callback changed their prototype. Change:
+        int my_handler(gras_socket_t expeditor, void *payload_data) {
+      to:
+        int my_handler(gras_msg_cb_ctx_t ctx  , void *payload_data) {
+          gras_socket_t expeditor=gras_msg_cb_ctx_from(ctx);
+      and you're set.
+
+  AMOK:
+  * Bandwidth module: 
+    - Do not force experiment sizes to be expressed in kb, or it becomes
+      impossible to mesure the latency this way (needs one byte-long tests)
+    WARNING: this changes the amok_bw_* function semantic.
+      
+ --
+
+SimGrid (3.0.1) unstable; urgency=low
+
+  XBT:
+  * Unfortunately, I had missed 5 misnamed functions:
+      xbt_fifo_item_t xbt_fifo_newitem(void);
+      void xbt_fifo_freeitem(xbt_fifo_item_t);
+      xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l);
+      xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i);
+      xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i);
+    They're now deprecated. Please use their new versions:
+      xbt_fifo_item_t xbt_fifo_new_item(void);
+      void xbt_fifo_free_item(xbt_fifo_item_t);
+      xbt_fifo_item_t xbt_fifo_get_first_item(xbt_fifo_t l);
+      xbt_fifo_item_t xbt_fifo_get_next_item(xbt_fifo_item_t i);
+      xbt_fifo_item_t xbt_fifo_get_prev_item(xbt_fifo_item_t i);
+    [AL]
+  * Bugfix: really disconnect fifo items which are remove_item()ed [AL]
+  * Documentation: xbt_log module unmercifully reworked [MQ]
+  * Bugfix: there was a problem with the ending of contexts with 
+    the pthread backend. It caused some weird deadlock or behavior
+    depending on the pthread implementation. [AL]
+  * Bugfix: get the exceptions raised in the simulator repport where
+    and why they come from when they are not catched in time [AL, MQ]
+
+  SURF:
+  * Bugfix: Do repport the error when two non-connected hosts try to
+    exchange data (Thanks to Flavien for stumbling into this one) [AL]
+  
+  SURF:
+  * Add additionnal checkings on communications. Assert that two
+    communicating hosts are connected by a set of links... [AL]
+       
+  MSG:
+  * Add additionnal checkings on channel values in communication [AL]
+  * New: MSG_task_get_source to see on which host a task was generated [HC]
+  * New: int MSG_task_probe_from_host(int channel, m_host_t host): returns
+    the number of tasks waiting to be received on channel and sent
+    by host. [AL]
+  * New: MSG_error_t MSG_task_get_from_host(m_task_t * task, int channel, m_host_t host); 
+    waits for the first task coming from a given host.. [AL]
+       
+  GRAS new functionnalities: [MQ]
+  * Enhance the parsing macro to allow the size of multidimentional objects
+    to be given thru annotations.
+  * New example (and documentation): Matrix Multiplication a la RPC 
+    (as when I was young!) and fix a bunch of bugs found on the way.
+
+  GRAS performance improvements: [MQ]
+  [DataDesc]
+  * Reduce the amount of cbps creation/destruction by making it static to 
+    datadesc_send/recv() and using a (newly created) cbps_reset (based on 
+    dynar_reset ())
+  [Virtu]
+  * Change libdata to a set so that we can search for stuff by ID (and thus 
+    reduce the insane amount of dict lookups)     
+  
+  [Transport]
+  * Actually implement gras_datadesc_copy() so that we don't have to mimick
+    RL communication on top of SG since it's so uneffective. 
+    It may also be used for inter-thread communication in RL, one day. 
+  * Use gras_datadesc_copy() to exchange messages on top of SG 
+    Allows to:
+    - improve message exchange performance on top of SG
+    - deprecate transport_plugin_sg.c:gras_trp_sg_chunk_send() & recv()
+  * Don't exchange on the network the size of the used part of buffer,
+    instead, specify the possible buffer size to read(). 
+    Advantages:
+     - reduces the amount of read/write calls (one pair per exchange)
+     - reduces the amount of exchanged data (the size)
+     - allows to retrieve all arrived data on receiver side, if we don't need
+       it right now (subsequent read will peek the buffer)
+     - allows the receiver to proceed with the begining of the stream before
+       everything is arrived
+     - make it possible to build an iov transport (using readv/writev)
+    Extra difficulty: 
+     - take care of the data with non-stable storage (like stacked data),
+       and bufferize them.
+  * If possible, TCP send uses vector I/O (when writev() is here) 
+     - Don't use it for receive since we send data sizes and data on the
+       same stream, so we wouldn't be able to chain large amount of chunks
+       before having to flush the stuff to read the size.
+  * Rework the transport plugin mecanism to simplify it and reduce the
+    amount of pointer dereferencement when searching for the right function 
+    to use. 
+
+  * I guess that now, we do almost as few system calls as possible while
+    doing as few data copy as possible.
+
+    To improve it further, we could try to send all the sizes first and then
+    all the data (to use iov on receiving size), but it's only a partial
+    solution: when you have 2 dimensional data, the sizes of the second
+    dimension is data of the first dimension, so you need 3 streams.
+
+    I'm not sure the potential performance gains justify the coding burden.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 21 Oct 2005 14:42:20 +0200
+
+SimGrid (3.00) stable; urgency=low
+  
+ SURF:
+  * New! Give the possibility to hijack the surf parser and thus bypass 
+    MSG_create_environment and MSG_launch_application. Have a look at
+    examples/msg/msg_test_surfxml_bypassed.c to see how it can be done.
+       
+ -- Arnaud Legrand <simgrid-devel@lists.gforge.inria.fr>  Sat, 20 Aug 2005 23:25:25 -0700
+
+SimGrid (2.96) unstable; urgency=low
+
+  AKA SimGrid 3 rc 2.
+  
+  XBT:
+  * New! Exception handling with setjmp or such (code from OSSP ex) [MQ]
+    This deprecates the xbt_error_t mecanisms. 
+    It modifies (simplifies) all XBT and GRAS API.
+    MSG API keeps unchanged (exceptions raised by XBT are catched from 
+     within MSG and masked with existing error handling facilities)
+
+  SURF:
+  * New! Add a FATPIPE model. [AL]
+  * New! Add a parallel task model. [AL]
+  * New! Add automatically a loopback interface (in the default
+    network model) if none was precised.
+
+  MSG
+  * Bugfix: MSG_process_resume now works with the current running process. 
+    [AL]
+  * New! Add MSG_parallel_task_create and MSG_parallel_task_execute. [AL]
+  * Modification of MSG_task_get_compute_duration. Once a task has been
+    processed, the value returned by this function is now equal to 0. [AL]
+  * New! Add double MSG_task_get_remaining_computation(m_task_t task) and
+    MSG_error_t MSG_task_cancel(m_task_t task). Add a state
+    (MSG_TASK_CANCELLED) to MSG_error_t corresponding to the cancelation
+    of a m_task. For now, MSG_task_cancel only works with computation
+    tasks. [AL]
+  * New! Add double MSG_get_host_speed(m_host_t h) that returns the speed
+    of the processor (in Mflop/s) regardless of the current load on the
+    machine. [AL]
+  * API Change: use proper naming convention for MSG_getClock and 
+    MSG_process_isSuspended: MSG_get_clock and MSG_process_is_suspended.
+    [AL]
+  * New! Add void MSG_task_set_priority(m_task_t task, double priority). 
+    This function changes the priority of a computation task. This priority
+    doesn't affect the transfer rate. A priority of 2 will make a task 
+    receive two times more cpu power than the other ones. This function 
+    has been added to suit the needs of Nguyen The Loc and hasn't been that
+    much tested yet. So if it fails, please report it and send me your code. 
+    [AL]
+  * API Change: removed all functions and types that were marked "deprecated" 
+    since many months. Renamed MSG_global_init_args to MSG_global_init.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Mon,  8 Aug 2005 17:58:47 -0700
+
+SimGrid (2.95) unstable; urgency=low
+
+  XBT
+  * Steal some nice code to GNU pth to fix context detection and usage [AL]
+  * Cleanup in the xbt_config API; add configuration callbacks. [MQ]
+  * Cleanup in the initialization API: the unused "defaultlog" is dead. [MQ]
+
+  SURF
+  * Bugfix: Allow absolute paths for platform description files [MQ]
+  * Bugfix: do free the variables after use. Leads to drastic performance 
+    improvement [AL] 
+  * Implement max_duration (ie, timeouts) on resources [AL]
+
+  MSG
+  * Implement MSG_config to configure MSG at runtime. xbt_cfg test on a real
+    case ;) [MQ]
+  * Implement MSG_channel_select_from() to help GRAS now that SURF provide
+    the needed support (timeouts) [AL]
+
+  GRAS (new features)
+  * Implement measurement sockets. You can now get the bandwidth between two
+    hosts thanks to AMOK (see below). [MQ]
+  * gras_datadesc_dynar() builds a dynar type descriptor, allowing to send
+    dynar over the network (yeah) [MQ]
+  * Real (even if simplistic) implementation of gras_os_myname() on RL [MQ]
+  * simple/static token-ring example. [Alexandre Colucci and MQ]
+  * Use MSG_channel_select_from() and remove the *slow* hack we had to put
+    in place before [MQ]
+  
+  GRAS (bug fixes)
+  * Differentiate the types "char[22]" and "unsigned char[22]" in automatic
+    type parsing. "short" and "long" modifiers were also ignored; other
+    modifier (such as reference level) are still ignored. [MQ] 
+  * Embeed the buffer size within the buffer itself on SG. [MQ]
+    That way, send() are atomic and cannot get intermixed anymore (at least
+    the ones which are less than 100k; bigger messages still have the issue)
+  * Array size pushed by the field, not by the field type (or each
+    and every long int will push stuff to the cbps) [MQ]
+  * use select() to sleep since it allows to portably sleep less than one
+    second. [MQ]
+
+  GRAS (minor cleanups)
+  * <project>.Makefile.local (generated from gras_stub_generator) |MQ]:
+    - Do clean .o files
+    - Compile with -g
+  * Type Callbacks now receive the gras_datadesc_type_t they work on as argument.
+  * type category 'ignored' killed as it was never used and were difficult
+    to transmit.
+  * whether a type can cycle or not is now a flag, leaving room for more
+    flags (as "ignored", if we feel the need one day ;)
+  * Rename raw sockets to measurement sockets since "raw" has another
+    meaning in networking community. 
+  
+  AMOK 
+  * Advanced Metacomputing Overlay Kit introduction. It is based over GRAS
+    and offers features not belonging to GRAS but that most applications
+    need. One day, it may be a set of plugins loadable at runtime.
+  * New module: bandwidth 
+    bandwidth measurement between arbitrary nodes running this module. [MQ]
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Thu, 30 Jun 2005 16:29:20 -0700
+
+SimGrid (2.94) unstable; urgency=low
+
+  The first beta release of SimGrid 3 !
+
+  >>>Arnaud<<<
+  (documentation)
+  * Update the main page and the FAQ. Adding references to gforge.
+
+  (gras)
+  * Add a gras_os_getpid function.
+
+  (msg)
+  * Add MSG_task_get_compute_duration() and MSG_task_get_data_size()
+  * Extend the logs so that they also print PID, hostname, date, ... if
+    available.
+  * Convert the MSG example to the use of xbt_logs instead of PRINT_MESSAGE,
+    and kill the old version which were in testsuite/
+  * Rewrite tools/MSG_visualization/colorize.pl for using with logs instead
+    of PRINT_MESSAGE
+
+  (xbt)
+  * Add xbt_os_time(). As the rest of xbt/portability, this is not public
+    for users. Instead, each programming environment (GRAS, MSG,...) use it
+    when needed to provide such a feature to users.
+    Don't shortcut the mecanism or you will also shortcut the virtualization
+    you need on the simulator.
+
+  >>>Martin<<<
+  (infrastructure)
+  * Cleanups in configury with regard to compile optimization/warning flags.
+    Also add -fno-loop-optimize to any powerpc since it's the optimization
+    killing gcc (< 3.4.0).
+  * Doxygen cleanups: move MSG examples, kill the second Doxygen phase
+    needed by MSG examples complications
+  * Borrow configury beautifications from PHP
+
+  (xbt)
+  * Bugfix: XBT_LOG_NEW_DEFAULT_CATEGORY now compiles without compiler
+    warning (thanks loris for stumbling into this one).
+  * Bugfix: stop loading private headers (gras_config.h) from the public
+    ones (xbt/swag.h).
+
+  (gras)
+  * Change SIMGRID_INSTALL_PATH to GRAS_ROOT in Makefiles generated for user.
+  * Rename gras_get_my_fqdn to gras_os_myname and implement it in the simulator
+    RL would imply a DNS resolver, which is *hard* to do in a portable way
+    (and therefore delayed).
+  * Implement a real timer mecanism and use it in timing macros. This allows
+    to avoid rounding errors and get a 0.000005 sec precision in timing
+    macros. While I was at it, various cleanups:
+     - allow to declare more than one timed section per file (fix a stupid bug)
+     - move some private declaration to the right place
+     - merge conditional execution and timing macros into emulation module
+     - document the module
+     - make sure the module cleanups its mess on gras_exit
+  * Documentation improvements:
+     - (new) how to compile applications using GRAS
+     - (new) emulation support (timing macros)
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>  Fri, 13 May 2005 10:49:31 +0200
+
+SimGrid (2.93) unstable; urgency=low
+
+  Alpha 4 on the path to SimGrid 3 (aka the "neuf-trois" version)
+
+  [Arnaud]
+   - Use Paje properly where used. Still to be sanitized properly.
+   - Portability fix: Add an implementation of the contexts using pthread
+
+  [Martin]
+  (misc)
+   - Add xbt_procname(): returns the name of the current process.
+     Use it to show the current process's name in all logging.
+  (infrastructure)
+   - fix detection of older flex version and the reaction, since we do
+     depend on modern ones (we use lex_destroy)
+   - Better separation of SG and RL in the libs: remove all simulation code
+     from libgras. As a result, this lib is now only 200k when stripped.
+     Some of the xbt modules may also be duplicated (two sets and such) and
+     should be cleaned/killed before SG3.
+   - Insist on using xlC on AIX because of weird problems involving gcc there.
+   - Cleanup the make remote stuff. This is now done by scripts
+     tools/graspe-{master,slave} (GRAS Platform Expender). This is still
+     mainly for our private use, but we're working on changing them to user
+     tools, too.
+  (gras)
+   - Bugfix: flush the socket on close only if there is some *output*.
+   - Bugfix: flush idempotent when there's nothing to send (don't send size=0)
+  (msg)
+   - Add MSG_task_get_name. The task names are mainly for debugging purpose,
+     but anyway.
+
+ -- SimGrid team <simgrid2-users@listes.ens-lyon.fr>  Fri,  4 Mar 2005 14:32:37 -0800
+
+SimGrid (2.92) unstable; urgency=low
+
+  Alpha 3 on the path to SimGrid 3
+  
+  [Arnaud]
+  (gras)
+   - New! First try of benchmarking macros.
+   - New! First try so that gras_stub_generator generate deployment and
+     remote compilation helpers.
+  (msg)
+   - Bugfix: Initialization fix in msg_test.
+
+  [Martin]
+  (surf)
+   - Bugfix: applied patch to lexer so that it doesn't need a huge heap.
+  (xbt)
+   - Bugfix: let dicts work with NULL content (_foreach didn't) and cleanups
+  (gras)
+   - API Change: gras_os_sleep to take the amount of seconds as a double.
+     Accepting an int was error prone since it was the only location where
+     seconds were coded as such. It leaded to damn rounding errors.
+   - Bugfix: Hard to belive that timers ever worked before this.
+
+ -- SimGrid team <simgrid2-users@listes.ens-lyon.fr>  Wed, 23 Feb 2005 22:09:21 +0100
+
 SimGrid (2.91) unstable; urgency=low
 
   Alpha 2 on the path to SimGrid 3
@@ -6,9 +380,9 @@ SimGrid (2.91) unstable; urgency=low
   (surf)
    - Bug fix in the lmm_solver.
   (msg)
-   - Interface to Paje (see http://www-id.imag.fr/Logiciels/paje/) through the function 
-     MSG_paje_output.
-   - Introducing two new functions MSG_process_kill() and MSG_process_killall().
+   - New! Interface to Paje (see http://www-id.imag.fr/Logiciels/paje/) 
+     through the function MSG_paje_output.
+   - New! Introducing two new functions MSG_process_kill() and MSG_process_killall().
    - It is possible to bound the rate of a communication in MSG with 
      MSG_task_put_bounded() (was already in the previous version but I had forgotten 
      to write it in the changelog).
@@ -21,23 +395,28 @@ SimGrid (2.91) unstable; urgency=low
    - Begin to move Gras examples to examples/gras/
    - Let make distcheck work again (yeah!)
   (documentation)
-   - documentation overhault using doxygen. 
+   - documentation overhauled using doxygen. 
      gtk-doc-tools is dead in SimGrid now.
    - Automatically extract all existing logging categories, and add the list
      to the documentation (long standing one, to say the less)
   (gras)
    - Cleanup the known architecture table. Reorder the entries to group what
-     should be, and use a more consistant naming scheme.
+     should be, and use a more consistent naming scheme.
      (some of the test dataset are still to be regenerated)
-   - Allow library to register globals on each process just as userdata does.
+   - New! Allow library to register globals on each process just as userdata
+     does. 
       This is implemented using a xbt_dict and not a xbt_set, so we loose the
        lookup time (for now).
       Use it in msg and trp.
       This cleans a lot the internals and helps enforcing privacy of the
        headers between the gras components.
-   - Reenable GRAS
+   - New! Add a timer mechanism, not unlike cron(8) and at(1). 
+   - Bugfix: gras_os_time was delirious in RL.
+   - Bugfix: gras_trp_select/RL don't run into the wall when asked to select
+     onto 0 sockets.
+   - Reenable GRAS now that it works.
 
- --
+ -- Arnaud Legrand <Arnaud.Legrand@imag.fr>  Mon, 14 Feb 2005 14:02:13 -0800
 
 SimGrid (2.90) unstable; urgency=low
 
@@ -55,7 +434,7 @@ SimGrid (2.90) unstable; urgency=low
     SimGrid now comprises 3 different projects : MSG, GRAS and SMPI. 
     I wanted to release the new MSG as soon as possible and I have 
     broken GRAS, which is the reason why, for now, only MSG is fully 
-    functionnal. A laconic description of these projects is available 
+    functional. A laconic description of these projects is available 
     in the documentation.
   
   * REVOLUTION 2: I have removed SG and I am now using a new simulation
@@ -75,7 +454,7 @@ SimGrid (2.90) unstable; urgency=low
          Have a look in tools/platform_generation. There is a tiny script 
          that converts from the old platform format to the new one. Concerning
          the application deployment format, parsing the old one is tricky.  
-         I think most of you should hower be able to convert your files.  If 
+         I think most of you should however be able to convert your files.  If 
          it is really an issue, I can write a C code that does the conversion. 
          Let me know.
        2) the toolbox tbx does not exist anymore. We now have a library
@@ -86,7 +465,7 @@ SimGrid (2.90) unstable; urgency=low
 
 *****************************************************************************
 * Follows the old GRAS changelog. It does not follow the same syntax, but I *
-* dont feel like converting the oldies. (Mt)                                *
+* don't feel like converting the oldies. (Mt)                                *
 *****************************************************************************
 
 2005-01-31 Arnaud
@@ -99,13 +478,13 @@ SimGrid (2.90) unstable; urgency=low
 
 2004-11-28 Arnaud
   - Main loop and datastructures of SURF. A cpu resource object is
-    functionnal. Surf can thus be used to create cpu's with variable
+    functional. Surf can thus be used to create cpu's with variable
     performance on which you can execute some actions.
        
 2004-11-15 Martin Quinson
   - Port to ARM. Simply added the alignment and size descriptions. Should
     work, but the ARM machines are so slow that I didn't had the opportunity
-    to 'make check' overthere yet.
+    to 'make check' over there yet.
 
 2004-11-15 Arnaud Legrand
   - Trace manager now written. It uses a heap structure and is therefore
@@ -122,7 +501,7 @@ SimGrid (2.90) unstable; urgency=low
   - Rename every gras_* function that was in xbt/ to its xbt_
     counterpart.
   - Add a heap and a doubly-linked list to xbt
-  - Added a dichotomy to the dictionnaries. make check works as well before
+  - Added a dichotomy to the dictionaries. make check works as well before
     so I assume that the patch is correct. I do not know however if things
     run effectively faster than before now. :)
 
@@ -133,7 +512,7 @@ SimGrid (2.90) unstable; urgency=low
   - Introduction of the remote errors. 
     They are the result of a RMI/RPC on the remote machine.
     ErrCodes being scalar values, you can't get the host on which those
-    errors did happen. Extending the error mecanism as in Gnome is possible.
+    errors did happen. Extending the error mechanism as in Gnome is possible.
     No idea yet whether it is a good idea.
     
 2004-10-28 Martin Quinson
@@ -189,7 +568,7 @@ SimGrid (2.90) unstable; urgency=low
     Note that the cycle detection is off by default since it impacts the 
     performance. Watch the data you feed GRAS with ;)
     
-    This property is hereditary. Any element embeeded in a structure having it
+    This property is hereditary. Any element embedded in a structure having it
     set have it set for the time of this data exchange.
     
     You should set it both on sender and receiver side. If you don't set it on
@@ -216,12 +595,12 @@ SimGrid (2.90) unstable; urgency=low
     
     It should allow to kill the last bits of gras first version soon.
   
-    This is not completely satisfactory yet (dupplicate code with
-     chunk_{send,recv}; a bit out of the plugin mecanism), but it should
+    This is not completely satisfactory yet (duplicate code with
+     chunk_{send,recv}; a bit out of the plugin mechanism), but it should
      work. 
 
   - Simplify transport plugin (internal) interface by not passing any
-    argument to _server and _client, but embeeding them in the socket
+    argument to _server and _client, but embedding them in the socket
     struct directly. 
 
 2004-09-28 Martin Quinson
@@ -363,7 +742,7 @@ SimGrid (2.90) unstable; urgency=low
   - Improvement to the remote testing toysuite
   
 2004-07-10 Martin Quinson
- [autoconf mecanism]
+ [autoconf mechanism]
   - get ride of a bunch of deprecated macros
   - actually run the test for two-compliment, not only compile it :-/
   - test whether the structures get packed (and bail out if yes. Damn.
@@ -494,7 +873,7 @@ SimGrid (2.90) unstable; urgency=low
      
 2004-04-19 Martin Quinson
  [Data description]
-   - register init/exit functions within gras module mecanism   
+   - register init/exit functions within gras module mechanism   
    - send/receive function. 
    Convertion is not implemented, but short-cutted if not needed.
    struct/array elements are sent one by one (instead of block-wise), but