+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:
+
+ * JAVA BINDINGS for MSG (you dreamt of them? We made them)
+ [Malek Cherier & Mt]
+
+ * Introduce the SIMIX module: factorize code between MSG and GRAS.
+ [Bruno Donassolo]
+
+ Until now, GRAS were using MSG as an interface to SURF. It was
+ quite difficult because both interface have several differences
+ (MSG channels vs GRAS sockets were the most notable point).
+
+ This also opens the gate to SMPI (which should occur soon) and speed
+ up simulations by to 40% (even if it were not the main goal).
+
+ **************************************
+ *DO NOT MIX 3.2 RESULTS WITH 3.3 ONES* Simix may changes simulations!
+ **************************************
+ The point is that events occuring 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. 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].
+
+ * 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
+ current host. Only working in simulation for now. [Mt]
+ * New function: gras_os_hostport() returning a constant form (ie,
+ not needing to be freed) of "gras_os_hostname():gras_os_myport()"
+
+ XBT:
+ * Make the backtrace of exceptions more human readable [Mt]
+ * 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
+ only).
+ * New module: xbt/queue [Mt]
+ classical producer/consumer synchronization scheme
+ * xbt_dynar_new_sync() creates a synchronized dynar. All access
+ (using the classical functions will get serialized) [Mt]
+ * Make dictionary internal table dynamic. No need to specify its size
+ anymore; functions xbt_dict_new_ext() and xbt_dict_hashsize_set()
+ thus dropped. [Mt].
+ * Make sure the log channels are organized as a tree under windows
+ (because of ANSI C compatibility issue, any channel were child of
+ root directly) [Mt].
+
+ SURF:
+ * Cleaned many thing in surf and fixed a few bugs [AL].
+ * Add a nice command line configuration mechanism to compose models [AL].
+ * Add a new model for parallel tasks (ptask_L07) that is less buggy than
+ the previous one (KCCFLN05). It relies on something that looks like
+ a max-min sharing mechanism but cannot be written as such. A new solver
+ was thus designed [AL].
+ * Add a new solver to lmm. Based on Lagrange optimization and
+ gradient-based descent, it enables to efficiently maximise systems s.a
+
+ sum f_i(x_i) s.t Ax<= b with A_{i,j}>=0 and f_i a concave function.
+
+ This solver enables to propose two new network models for TCP Reno and
+ TCP Vegas based on Low's work. These models still need to be fully
+ tested though [Pedro Velho].
+
+ SIMDAG [AL]:
+ * Bug fix in SD_simulate. Now the time bound given as argument is
+ used.
+ * Use the new parallel task model (ptask_L07) as default.
+ * 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) stable; urgency=high
+
+ OVERALL CHANGES:
+ * Port to windows.
+ We still experience issues on this platform, but we believe that at
+ least MSG is usable.
+
+ GRAS API BREAKAGE (for simplification purpose, sorry):
+ * the gras_msgtype_by_name is not used anymore. Instead of
+ gras_msg_send(toserver, gras_msgtype_by_name("request"), &request);
+ you can write (and must)
+ gras_msg_send(toserver, "request", &request);
+ - If you still want to pass a gras_msgtype_t to the function (to cache
+ the type and avoid the lookup time), use the gras_msg_send_() variant.
+ - Impacted functions:
+ gras_cb_register, gras_cb_unregister, gras_msg_send, gras_msg_wait,
+ gras_msg_rpccall, gras_msg_rpc_async_call, gras_msg_wait_ext
+ * The callbacks are now expected to return 0 when everything went well
+ (just like the main() function)
+
+ GRAS new features and improvements:
+ * New module mecanism where user code can use per process globals [Mt]
+ This is similar to gras_userdata_*() functions, but for libraries. It
+ factorize some code developped over and over in the examples and AMOK.
+ It has still to be documented and used (only amok/peermanagement is
+ converted for now).
+ * Fix a vicious bug in the TCP buffering mecanism which leaded to message
+ loss when they were small enough to fit into the buffer and sent quickly
+ enough so that they can all get received in one shoot.
+ * gras_datadesc_by_name and gras_msgtype_by_name: now raise an exception
+ if not found. Use the *_or_null() variant for the old semantic.
+ * In gras_msg_handle, do not discard messages without callback.
+ They are probably messages to be explicitly awaited later (ie, proofs of
+ mis-synchronization in userland since they are sent before being awaited)
+ No big deal usually.
+ * gras_socket_meas_send/recv: semantic changed!
+ The numerical arguments used to be (1) the total amount of data to send
+ and (2) msg_size. This was changed to (1) msg_size and (2) amount of
+ messages. This was need for the fool willing to send more than MAXINT
+ bytes on quite fat pipes.
+
+ AMOK:
+ * Do really rename the hostmanagement module to peermanagement. [Mt]
+ Ie, rename functions from amok_hm_* to amok_pm_*. This breaks the API,
+ but this is rather new and this was documented in the module
+ documentation (poor excuses, I admit)
+ * Bandwidth measurement semantic changed! This follows the changes to
+ gras_socket_meas_send/recv explained above.
+
+ SIMDAG:
+ * A sequential mode has been added to the workstations. When a workstation
+ is in sequential mode, it can execute only one task, and the other tasks
+ are waiting in a FIFO. [Christophe Thiery]
+
+ SURF:
+ * The KCCFLN05 workstation model now handles parallel tasks. It is the
+ model for SIMDAG. [Christophe Thiery]
+ * Bug fix in the maxmin solver: Some values were close to 0 instead of
+ equal to 0, which caused some bad behaviors in
+ saturated_constraint_set_update. I now use a threshold mechanism like in
+ surf. [AL]
+
+ XBT:
+ * When running manually src/testall, you select specific units [Mt]
+ testall is the result of our cunit mecanism, and should replace all
+ the scripty thingy around since bash don't run easily on billware.
+
+ * A mallocator system has been added. [Christophe Thiery]
+ Mallocators allow you to recycle your unused objects instead of freeing them
+ and allocating new ones.
+
+ Documentation update:
+ * FAQ reworking + New FAQs:
+ - "Valgrind spits tons of errors!" [Mt]
+ - "How to repport bugs" [Mt]
+ - "Cross-compiling a Windows DLL of SimGrid from Linux" [Mt]
+ - "What is the difference between MSG, SimDag, and GRAS?" [Mt]
+ - Communication time measurement within MSG [AL]
+ - I experience weird communication times when I change the latency [AL]
+ * GRAS tutorial [Mt]
+ It contains:
+ - an introduction to the framework and to the used communication model
+ - an initiatic tour introducing the most proheminent features:
+ o Part 1: Bases
+ . Lesson 0: Installing GRAS
+ . Lesson 1: Setting up your own project
+ o Part 2: Message passing
+ . Lesson 2: Exchanging simple messages
+ . Lesson 3: Passing arguments to the processes (in SG)
+ . Lesson 4: Attaching callbacks to messages
+ . Lesson 5: Using globals in processes
+ . Lesson 6: Logging informations properly
+ . Lesson 7: Using internal timers
+ . Lesson 8: Handling errors through exceptions
+ . Lesson 9: Exchanging simple data
+ . Lesson 10: Remote Procedure Calling (RPC)
+ . Lesson 11: Explicitely waiting for messages
+ . Recapping of message passing features in GRAS
+ - A HOWTO section containing:
+ o HOWTO design a GRAS application
+ More are due, of course. They will come latter. In the meanwhile, you can
+ check the examples which are still here.
+
+ -- Da SimGrid team <simgrid-devel@lists.gforge.inria.fr> Fri Mar 16 21:11:46 CET 2007
+
+SimGrid (3.1) stable; urgency=high
+
+ General:
+ * Port to gcc 4.x
+ There was a stack corruption somewhere, visible only when optimizing
+ with these versions. [Vince]
+
+ SIMDAG:
+ * This is a NEW module! SimDAG (SD for short) is a revival of the old SG
+ module that enabled to play with Directed Acyclic Graphs. It is built
+ directly on top of SURF and provides an API rather close to the old
+ SG. Some old codes using SG are currently under rewrite to check that
+ all needful functions are provided. [Christophe Thiery]
+