X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9e0cc75839bb97e7c5a4c25ed97dc53c8acdb011..772d63cca583f5d16096fa9f487b4ab07d9af8f0:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 2ef198922b..2ff6295222 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,61 +1,2646 @@ -SimGrid-java (3.8.1) unstable; urgency=low - - * New module: org.simgrid.trace.Trace (SimGrid trace bindings) - Warning: all methods are visible, but only some of them are - implemented so far. Check the source (src/jtrace.c) - for further information. - * New module: org.simgrid.msg.File (SimGrid File management functions) - * New Module: org.simgrid.msg.VM (SimGrid interface to mimick IAAS clouds) - * Change the meaning of Process.restart: now restart the process from - the begining, like MSG_process_restart in C. - * Add Process.setAutoRestart: handling of process restart when failed - host comes back. - * Add Process.getProperty, Host.getProperty, Host.getProperty: allows - you to retrieve the properties of the processes/hosts - * Deprecate Msg.clean(): you can just forget about it now. - * New function Process.getCount(), that only works when compiling - with the not yet released version 3.9 of the C library. - - * New context factory based on Coroutines. It mandates a modified JVM - but then, the simulations run about five times faster, and there is - no limit to the amount of processes (beside of the available memory). - - -- 2012-12-04 Da SimGrid team - -SimGrid-java (3.7.1) stable; urgency=low - - The "Java aint got to be bloated and slow" release - - Major cleanups: - * Various internal cleanups and performance improvement - Simulations are expected to run up to twice faster or so - * Make Process.kill(process) an instance method, not a static one - * User processes are not java.lang.Thread subclasses. - This breaks the compatibility (sorry), but previous API was - brain-dead, making it impossible to have non-trivial - initializations in the process constructor. - * Require a full constructor per Process sub-class. - Kinda breaks the compatibility (sorry), but this allows a much more - efficient way to launch the processes at simulation startup. - * Do not embeed our version of semaphores, java 1.5 can be considered - as sufficiently prevalent for us to not dupplicate its features. - * Lot of bug fixes - - Extend the API: - * Add examples for almost every part of the API - We spotted and fixed a lot of bugs in the process - - * New module: asynchronous communication API - * New function: Process.sleep() - It takes milliseconds as argument, just as java.lang.Thread.sleep() - * New module: org.simgrid.msg.Mutex (SimGrid mutexes) - * New module: org.simgrid.msg.RngStream (RngStreams random generators) - - -- 2012-06-12 Da SimGrid team - -SimGrid-java (1.0 (3.6) unstable; urgency=low - - * Initial release. - * Split of every thing from simgrid v3.5 into a separate package. - - -- 2011-10-05 Da SimGrid team +SimGrid (3.11) NOT RELEASED; urgency=low + + TENTATIVE RELEASE GOALS for 3.11: + * Consider the removal of Supernovae mode if no user has manifested since the + release of version 3.10. + * Switch to tesh.pl, and kill the now unused parts of xbt that seem fragile + * Switch to surf++, and reintegrate the hypervisor branch on top of it + + -- $date Da SimGrid team + +SimGrid (3.10) stable; urgency=low + + The Clean Diaper Release, a.k.a. SimGrid is leak-free. + + Java: + * Reintegrate Java to the main archive as desynchronizing these + package is not acceptable anymore (Java is now considered stable) + * Add explicit synchronization facilities through semaphores + * Bug fix: Task.setDataSize() only changed the C world, not the value + cached in the Java world + + MSG: + * Dramatically change the way files are handled. API and internals changed, but + this part of MSG was not considered as production grade either. + * Add explicit synchronization facilities through semaphores + * Add a new function MSG_host_get_process_list() + * Preliminary DVFS support (see examples/msg/energy/ for details) + + SMPI: + * SMPI is now included directly in the libsimgrid as the windows + linker doesn't force us on splitting it anymore. + * Improvements of the SMPI replay tool: + - Most of the collective communications are now rooted in the same process as + in the original application. + - Traces now rely on the same MPI data type as the application (MPI_BYTE was + used until now). Multiple data types can now be used in a trace. + - The replay tool now supports traces produce either by TAU or a modified + version of MPE. + - Bug Fix: the compute part of the reduce action is now taken into account. + - Gatherv collective is now supported + - SimGrid (SMPI for now) can generate replay traces as well. Option -trace-ti + of smpirun outputs time independent traces for the current run. One file + is created per process. If too many processes are simulated, this behavior + can be changed to one file for all processes by using the + tracing/smpi/format/ti_one_file flag + * smpirun generates the host file if needed (with given host count and platform) + * Integration of more than 100 STAR-MPI, MPICH, OpenMPI collective algorithms + - allows to select one in particular with --cfg=smpi/coll_name:algorithm + - allows to use the decision logic of OpenMPI(1.7) or MPICH(3.0.4) by setting + --cfg=smpi/coll_selector:(mpich/ompi) + * Support for new functions : MPI_Issend, MPI_Ssend, Commutative operations in + Reduce + * Add a --cfg:tracing/smpi/internals option, to trace internal communications + happening inside a collective SMPI call. + * Fix the behavior of complex data types handling. + * Make MPI_Wtime another synchronization point to take computations into account. + * Replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using + enable_smpi_MPICH3_testsuite flag in cmake. Run with ctest. + * Add all missing Fortran bindings, SMPI should work with Fortran 90 + (no privatization of global variables yet) + * Preliminary DVFS support (see examples/smpi/energy/ for details) + + Model-Checking; + * Verification of liveness properties is now available for SMPI applications + (in addition to MSG applications) + * Bugged examples using SMPI in examples/smpi/mc/ + * Add --cfg=model-check/visited option. Allows the verification of infinite + programs. Detection of loops in the execution thanks to the system state + comparison and reduction of the state space to explore. Can be combined with + DPOR for safety properties. + + SimDag: + * Allow to change SimGrid configuration (see --help) within the code + thanks to SD_config() as it can be done in MSG. + * Add a new function SD_task_set_amount() upon user request. + + PLATFORM: + * Handle units for values (10ms, 10kiloflops, 10Bps, 1GB, ...) + * Remove rule based routing (no more PCRE dependency) + * Add a limiter_link option to cluster tag, to specify a maximum reachable + bandwidth in fullduplex mode when it is less than twice the nominal bandwidth. + * Add a loopback_bw and loopback_lat options to cluster tag. + * Fix the peer tag that could not be mixed with other AS within a Vivaldi + routing. Now peers are encapsulated in an AS and have their own private + router but this is transparent. + + XBT: + * Our own implementation of getline is renamed xbt_getline, and gets + used even if the OS provide a getline(). This should reduce the + configuration complexity by using the same code on all platforms. + * New type: xbt_cfg_elm_boolean. + * Allow to use yes/no for boolean configuration options in the command line. + * Allow to disable SimGrid cleanups at exit from command line option. + There are situations where one may want a simulation to end with an exit. + Unfortunately, calling exit may cause SimGrid to segfault, which is quite + annoying when scripting around the simulator. Adding a + --cfg=clean_atexit:no allows to circumvent this issue. + + Build System: + * Lots of memory leaks were corrected in this release. + There is no known memory leaks anymore, in all of our 600+ tests. + * New command line option --version, to get SimGrid version information. + Packagers may want to add extra words to SIMGRID_VERSION_EXTRA defined in + CMakeLists.txt. + * Supernovae builds are deprecated, and expected to be removed in the next + version of SimGrid. + + -- Sun Nov 17 00:26:44 CET 2013 Da SimGrid team + +SimGrid (3.9) stable; urgency=low + + The Grasgory release: GRAS is really dead now. + + * Complete overhaul of the internal host structures scheme. + + GRAS: + * If you use GRAS, you should stay at SimGrid 3.5 (at most) since it + was considered as experimental and badly maintained since then. + * Keeping it was thus a trap to our potential users, that could take + it instead of MSG or SMPI by mistake despite is pity state. + * GRAS seems to have very few users (if any), and no one volunteered + to maintain it further. It also induces a lot of XBT code (for + portability sake), that must be maintained too. + * For all these reasons, we killed GRAS. If someone wants to revive it + in the future, don't cry, our git history still remembers of GRAS. + + Documentation: + * Major overhaul. Merge our documentation again as time proved that + splitting it was really not helping our users. + * Further improve the developer documentation to help newcomers + hacking on SimGrid itself. The user documentation (and in + particular, the beginner documentation) is still in a sorry state. + + SMPI: + * Now works on Windows too! + * Much more extensive test suite, from MPICH + + SIMDAG: + * Add a new loader (SD_PTG_dotload) that creates a parallel task graph + (i.e., a DAG whose nodes are parallel tasks) from a dot file. Creates a + dynar of SD_TASK_COMP_PAR_AMDAHL and SD_TASK_COMM_MXN_1D_BLOCK tasks. + * Bug fix: let task be scheduled when the last dependency to be solved is + a control dependency. + * Remove SD_load_environment_script function. + Use the C sg_platf function if you want to declare a platform + programmatically. + + MSG: + * New function: MSG_process_get_number() + * Old function documented: MSG_config() + * Remove MSG_load_platform_script function + Use the C sg_platf function if you want to declare a platform + programmatically. + + SURF: + * Change the default value of the TCP_gamma constant (maximal size of TCP + congestion window) to a more realistic 4MiB value. If you notice changes in + your simulation results, you can fall back to the previous 20k tiny window + by adding --cfg=network/TCP_gamma:20000 on command line. + * (Hopefully) fix a bug wrt periodic availability and state traces + * Bug fix: use default values at start when first event in availability/state + trace is not at time 0. + + PLATFORM: + * remove the "new_" part of function name sg_platf_new_trace_connect + (resulting in sg_platf_trace_connect), since it does not create + anything new + + XBT: + * Kill synchronized dynars, and xbt_dynar_dopar(). We cannot think of a + use case where it's really mandatory, and maintaining it was a pain in + our code base. + * New: xbt_fifo_search(), search an item with a user-provided + comparison function instead of dumb pointer comparison. + + LUA: + * Fix the lua deployment: + Use `simgrid.init_application()` before deployment instead of + `simgrid.msg_register_application()` after. + + TRACING: + * Transfer the tracing files into the corresponding modules. + + -- Tue Feb 5 11:31:43 CET 2013 Da SimGrid team + +SimGrid (3.8.1) stable; urgency=low + + The "we are told that some people want to also *install* the simgrid + framework" release. + + * Add missing file "tesh.1" to the archive. + + -- Sat Oct 27 16:12:11 CEST 2012 Da SimGrid team + +SimGrid (3.8) stable; urgency=low + + The Psssshiiiit release: SimGrid jumps into the Cloud. + + MSG: + * Add an experimental interface to manipulate VMs. They are mainly + process groups with very few intrinsic semantic, but they should + allow you to build the semantic you want easily. + * New function: MSG_host_set_property_value() + * New function: MSG_process_on_exit(). To clean memory in all cases. + * Bug fixes that made the host (and link) failures unusable. + * Add a way to auto-restart process when the host in which they are + executing comes back (ON_FAILURE="RESTART" on deployment file, + MSG_process_auto_restart_set). + * Use the "msg_" prefix for all datatypes (instead of m_, msg_ and MSG_), + please stop using the old ones, they are DEPRECATED. + + * Deprecate functions MSG_global_init() / MSG_global_init_args() + Please use MSG_init() instead. (reducing the amount of entry + points in the library helps us). + * Make it impossible to link against the wrong version of the lib + * Deprecate MSG_clean(). No need to call it anymore. + * Function MSG_get_host_number() is not deprecated anymore. + + Documentation: + * Split the doc into a user guide and a reference guide. + * Start a developper guide to help people hacking on SimGrid. + + Cmake: + * Enable tracing by default. This modules rocks you should use it. + * Remove option custom_flags. Now use environment variables CFLAGS + and LDFLAGS. + * Use default cmake things to detect lua instead of home grown ones. + * New option "enable_mallocators" to disable mallocators, for debugging + purpose ("on" by default). + + Simix: + * Bug fixes around the resource failures: don't let the processes + survive the host they are running onto. + * Add an interface to auto-restart processes when the host in which they are + executing comes back. + * Ensures that SIMIX_clean is called automatically. It's not part of + the public interface anymore (bindings should be updated). + + SimDag: + * Bug fix for when SD_Simulate is called with a positive value: be careful + when comparing doubles. Sometimes they are different for non significant + digits only. + * New types of typed tasks. SD_TASK_COMP_PAR_AMDAHL represents a + parallel task whose initial work is distributed among host according + to the Amdahl's law. Such tasks are created with a parameter alpha + that corresponds to the non-parallelizable part of the computation. + SD_TASK_COMM_PAR_MXN_1D_BLOCK represents a complex data redistribution + between two sets of workstations assuming a 1D block distribution (each + workstation owns a similar share of data) on both sides. + + These tasks can be scheduled with SD_task_schedulel or SD_task_schedulev. + Data redistribution will be automatically scheduled once parent and child + are both scheduled. The filling of computation_amount and + communication_amount structures is now done seamlessly thanks to the chosen + assumptions. + * New function SD_workstation_dump to display various information + * New function SD_task_set_rate to throttle the bandwidth allowed to be used + by a SD_TASK_COMM_E2E typed task. This rate depends on both the nominal + bandwidth on the route onto which the task is scheduled and the amount of + data to transfer. + To divide the nominal bandwidth by 2, the rate then has to be : + rate = bandwidth/(2*amount) + * Compute tasks that have failed can now be rescheduled and executed again + (from their beginning) + * Increasing source code coverage (src/simdag is now covered at 95.8% + on average) + + SMPI: + * Re-implement time-independent trace replay using SMPI (at the + smpi_smp_* level) instead of MSG. This should replace + examples/msg/actions/actions.c + * Implement support of MPI Datatypes (vectors, hvectors, indexed, + hindexed and structs) + * Implement the exchange of non-contiguous data. + [Khalid Hasanov & Jean-Noel Quintin] Thanks for the patch, guys. + * Correct behavior of smpi/sender_gap and set its default value to 0 + * Add option to asynchronously send small messages to allow better + simulation of pt2pt communications. --cfg=smpi/async_small_threshold:value + specifies the size in bytes under which messages will be asynchronously sent. + * Add support of MPI_Iprobe, MPI_Probe, MPI_Testall, MPI_Wtick functions + * SMPI now handles more MPI specific values in input. Closes [#14389] and [#14388] + + SimGrid: + * New C interface to define a platform: XML is now optional. + For more info, please check include/simgrid/platf.h. + * New interface to define random platforms from the C: + For more info, please check include/simgrid/platf_generator.h and + examples/msg/masterslave/masterslave_platfgen.c + * Export a sg_cmdline dynar containing all the arguments we got from + the command line. + + TRACE: + * Two new tracing options for adding comments to trace file so you + can track your experiments (see --help-tracing for details). + * New option to generate a impoverished trace file (--cfg=tracing/basic:1) + * Adding the SimGrid version that generated the trace file as a comment. + * Instrumenting other MSG functions (MSG_task_isend_with_matching and MSG_task_dsend) + * Fix to avoid key clashes on Paje links + * Other minor fixes related to the Paje specification + + XBT: + * Functions xbt_dict_hash() and xbt_dict_hash_ext() are made public, + and renamed to xbt_str_hash() and xbt_str_hash_ext(). + * New function: xbt_os_timer_resume() to restart a timer w/o resetting it. + * Greatly improve the robustness of mmalloc to user errors (such as + using an area after freeing it, or freeing it twice) + + -- Thu Oct 25 17:30:06 CEST 2012 Da SimGrid team + +SimGrid (3.7.1) stable; urgency=low + + MSG: + * Restore the prototype of MSG_process_create_with_environment() to + the pre-3.7 situation by removing the kill_time argument. + * Add a MSG_process_set_kill_time() function instead. + + SURF: + * Fix weird behaviors when dealing with parallel tasks. + + WINDOWS: + * Simgrid is now built as a dll. + * Simgrid-java now works on Windows. + * Simgrid-Java is now included into Windows package. + + MacOS: + * First pre-build package for MacOSX. + + Build System: + * Fix compilation when using MSG_USE_DEPRECATED. + * Fix some compilation issues on Macs and Windows. + * Reduce the number of failing tests on exotic systems, like Debian/Hurd. + * Environment variables CFLAGS and LDFLAGS are now honored by cmake. + + We discovered that the Lua console is broken, but we are missing the + manpower to fix it right now. The problem existed in 3.7 too, so we + are not blocking the release for that. Sorry if you depended on this + feature, any help would be really welcome. + + -- Thu Jun 7 2012 Da SimGrid team + +SimGrid (3.7) stable; urgency=low + + The "spring cleanups (before the next Big Project kicks in)" release. + + Models: + * We can specify the SMPI latency/bandwidth factor with command line + add --cfg=smpi/bw_factor:"threshold0:value0;...;thresholdN:valueN" + or add --cfg=smpi/lat_factor:"threshold0:value0;...;thresholdN:valueN" + You can also use the "config tag" from platform file by adding this line + + (see "example/platforms/tag_config.xml" to use "config tag"). + Note that the command line supersedes the platform file configuration. + * Change the correction factors used in LMM model, according to + the latest experiments described in INRIA RR-7821. + Accuracy should be improved this way. + * Use the partial invalidation optimization by default for the + network too. Should produce the exact same results, only faster. + * Major cleanup in surf to merge models and split some optimization + mechanisms from the core of the models. As a result you can now + specify which model to use (e.g., --cfg=network/model:LV08 + --cfg=cpu/model:Cas01) and which optimization mode to use + (e.g., --cfg=network/optim:lazy --cfg=cpu/optim:TI). + Incompatible combinations should err at initialization. See + --help-models for the list of all models and optimization modes. + * The CLM03 workstation model was dropped for simplicity because it + used the deprecated CM02 network model. Use default instead. + * Rename the TCP_gamma configuration option to network/TCP_gamma + * Rename the coordinates configuration option to + network/coordinates, and document it + * Use now crosstraffic keyword instead of the terribly misleading + fullduplex keyword. It is activated by default now in the current + default model, use --cfg=network/crosstraffic:0 to turn it off. + * Ongoing refactoring the model parsing to make XML files optional + See include/simgrid/platf.h for details (still to be completed) + + MSG: + * Major overhaul of the documentation. Almost instructive now :/ + * Deprecate the use of m_channel_t mechanism like MSG_task_{get,put} + functions and friends. This interface was considered as + deprecated since over 2 years, it's time to inform our users that it is. + Switch to MSG_task_{send,recv} instead, or compile SimGrid command line + 'cmake -Dcustom_flags="-DMSG_USE_DEPRECATED" .' if you really need to + use these (crappy) functions in your code. + These functions will be removed soon. Stop using them now. + * Deprecate MSG_get_host_{table,number} + Implement MSG_hosts_as_dynar() instead. + * Implement MSG_processes_as_dynar() (Closes gforge #13642) + * Remove the public field msg_host_t->name. Use MSG_host_get_name() + + Simix: + * Stabilize the parallel execution mode of user contexts + * Introduce configuration variables to control parallel execution: + - contexts/synchro: Synchronization mode to use when running + contexts in parallel (either futex, posix or busy_wait) + - contexts/parallel_threshold: Minimal number of user contexts + that must be part of a scheduling round to switch to parallel + execution mode (raw contexts only) + * Fix bugs that prevented to use suspend/resume along with + synchronization structures. + * Fix bugs in process termination that lead to invalid memory access + in very specific conditions. + + SURF: + * Introduce a parallel mode for the models (controlled by surf/nthreads + configuration item). In our tests, running the models in parallel + never lead to any speedups because they are so fast that the gain + of computing each model in parallel does not amortizes the + synchronization costs, even when ultra fast futexes are used. + This is released anyway because YMMV. + + SimDag: + * Performance boost by using a swag internally to compute the set of + tasks that are finished and should constitute the return value of + SD_simulate. + + SMPI: + * Enable it by default now that it is considered rather stable. + + TRACE: + * Documentation of the tracing functions. + * Performance gains when tracing categorized/uncategorized resource + utilization by avoiding calls to get route when updating resource + variables. LMM constraints are being used instead. + * API changed to set task categories. Use MSG_task_set_category instead + of TRACE_msg_set_task_category, and SD_task_set_category instead + of TRACE_sd_set_task_category. They only work if ENABLE_TRACING is ON. + * Bugfix for graphicator, routes not correctly obtained, memory leaks + * Examples for link user variables added (see at examples/msg/tracing/) + * Deprecated function TRACE_msg_set_process_category completely removed + * Trace header updated according to the latest Paje file format + * Tracing network lazy updates, no longer obligate users to use full updates + * --cfg=tracing/platform:1 also registers power/bandwidth variables + * Experimental: let user code declare/set/push/pop application states for hosts + * API changed to allow the manual creation of graph configuration files + for Triva. See TRACE_get_node_types() and TRACE_get_edge_types(). + + Lua: + * Improve the API of Lua MSG bindings, using the Lua spirit. + * Each simulated process now lives in its own Lua world (globals are + automatically duplicated). It helps writing simulators. Will allow + to run Splay programs within SimGrid in the future. + * Add a Chord example in Lua, equivalent to the MSG one. + + MODEL-CHECKING: + * Start the implementation of a solution to express temporal + properties, not only local assertions. This is still an + experimental work in progress, stay clear from it to be safe. + + XBT: + * Logs: + - Add new runtime parameters --help-logs and --help-log-categories + to display informations about supported logging parameters and + categories. + - Old deprecated parameters --{gras,surf,msg,simix,xbt}-log=... + don't exists anymore. + * Mallocators: allow value NULL for the reset function. + * Dicts: + - New function xbt_dict_new_homogeneous(void(*)(void*)) to + create homogeneous dictionaries, where all the elements share the + same free function. Non homogeneous dictionaries will be + deprecated in the next release. + - Dicts of scalar elements (xbt_dicti_*) are deprecated. + - Multi-level dictionaries are deprecated. + * Dynars: + - new function xbt_dynar_search_or_negative() that is useful when + you have less than 2 million elements in your dynar and don't + want of the extra complexity of catching exceptions when the + element is not found. + * Portability layer + - Make xbt_os_thread module (for thread portability) public. + Documentation is still to come, sorry. + * mmalloc module: + - Cleanups and simplifications to make it maintainable again. + - Exotic features (such as memalign and valloc) were removed. + - The metadata were extended and improved so that the + model-checker becomes able to explore and inspect the heaps. + - This may induce a performance drop when enable_model-checking is + ON in cmake (even if it's not used in the simulation), but it is + necessary at this point to get MC working. + + Turn model-checking OFF if simulation performance matters to you. + Not enabling it at runtime is not enough, disable it in cmake. + + -- Tue May 15 11:30:19 UTC 2012 Da SimGrid team + +SimGrid (3.6.2) stable; urgency=low + + The "Not coding new stuff allows to polish old things" release. + + General + * New bindings to the NS3 packet level simulator (experimental) + * Use the raw (efficient) execution contexts instead of the sysv + (portable) ones when possible. + * libpcre is now mandatory in any cases since not using it led to + severe performance loss and possibly other issues + * Update the XML platforms: + - G5K: include the latest machine in Nancy + - GridPP and LCG: new platforms + * Documentation was partially updated, at least (more to come) + + Bug fixes, cosmetics and small improvements + * Free terminated processes before the end of the simulation to avoid + exhausting the memory of users having very dynamic amount of + processes. + * Bug fix and cosmetics about canceling non-running tasks + * Bug fix about the dot loader's issues when using libcgraph + + Portability + * Create an installer for windows with nsis (amd64 and win32) + - Add an hello world project to illustrate simgrid project creation. + - Embed libpcre into the Simgrid installer to avoid + its compilation burden + * The raw execution contexts should work on Apple now + * Port to Windows 64 bits + - Sysv contexts now have an implementation for this arch + - GRAS communication features now support this arch + * Drop support for borland compiler on windows + - this code was not maintained, and we kinda depend on gcc nowadays + * Fix portability issues on kfreebsd/gnu: build error about semaphores + * Fix portability issue on unstable ubuntu: linker became picky on + argument order + + -- Wed Oct 5 15:51:01 CEST 2011 Da SimGrid team + +SimGrid (3.6.1) stable; urgency=low + + The "Oops, we broke Macs too" release + + Portability + * Fixed contexts detection so that raw ones are used when possible + * On Mac, do not use Posix Ucontexts with gcc v4.[1-5] since this + leads to a strange error, with user code segfaulting sometimes when + the generated code is not perfectly aligned (which is not + controllable from the user side, depends on the amount of code) + + XBT + * New macro: CATCH_ANONYMOUS, which is like CATCH(e) but without argument. + + -- Mon Jun 27 13:59:03 CEST 2011 Da SimGrid team + +SimGrid (3.6) stable; urgency=medium + + The Summer Release, also known as the "OMG! They Killed Kenny!" version + + Java and Ruby: + * Bindings now constitute their own package, separated from the main one. + Rationale: reduce our maintenance nightmare by reducing the module coupling + They will soon be released on their own on gforge. + * In the meanwhile: + svn co svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/simgrid-java + svn co svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/simgrid-ruby + + GRAS: It is not considered as stable anymore, but experimental. Sorry. + * It's not quite deprecated for now because we have no replacement, + but it may soon become the case. + + SMPI + * New MPI functions supported: MPI_Comm_disconnect, MPI_Comm_get_name + * Fortran: New user-level cache variable to store the rank of the running + process. This improves performance by an order of magnitude. + * C: New coccinelle script to automatically locate and modify global and + local static variables. + * Improved SMPI network model with a sender-side gap to account for multiple + parallel sends. + + MSG + * New function MSG_comm_get_status(). MSG_comm_test() and MSG_comm_testany() + only say if a communication is finished, no matter whether it succeeded or + failed. You can call MSG_comm_get_status() to know the status of a finished + communication. + * New function MSG_task_dsend() to send a task and detach it. When a + communication is detached, you are never notified of its success or failure + and the memory is released automatically once it is finished. This function + is useful when you don't care about the end nor the success of a + communication. + * Change the prototypes of action replay. Sorry for inconvenience, + but this is really more efficient this way (and to adapt your code, + you just have to fix the initialization, that shouldn't be too long) + * Kill the braindead MSG_task_refcount_dec() function. I guess nobody + ever managed to do anything useful with it. + * New function MSG_comm_testany(). Similarly to MSG_comm_waitany(), it + takes a dynar of communications. It returns immediately and gives the + index of a finished communication (if any). + * New example: a basic implementation of the Chord P2P algorithm. + + SURF + * New model for multi-core CPUs. You can now use the core attribute to + precise the number of cores of a host. This is a basic model. Every + process running on the host receives at most the power provided in + the DTD (throughput<=power). Total throughput of process cannot exceed + power * num_cores. + * New peer tag. This peer tag creates a tiny AS comprising a host and a + router linked by an up-link and a down-link (possibly asymmetrical). + This kind of pattern allows to easily build last-mile model style platforms. + Aggregating such patterns in a rule-based AS is thus the technique of + choice for modeling large peer-to-peer/volunteer computing/cloud platforms. + * New model for Vivaldi routing. We transformed the Vivaldi network model + into a Vivaldi routing model (based on the rule-based model). This allows to + combine Vivaldi based latencies with last-mile platforms. + + SIMIX + * Added a check for NaN of IEEE754 infinite in the double entries of + the smx_user.c file + * Introduce a new context factory "raw", highly inspirated from the + ucontext factory, but using manually crafted functions in assembly to + do the work in an efficient manner. + * Allow to change the used context factory at run time, not only at + compilation time. Use --cfg=contexts/factory:raw for maximal speed. + * Add an option --cfg=contexts/stacksize:N to set the stack size of the user + contexts at runtime (only with raw contexts or ucontexts). + * Completely rewrote this module to allow parallel execution of user + processes. Use --cfg=contexts/nthreads:N to execute user processes + with N parallel threads (the default is 1, meaning no parallelism). + * Allow to decide dynamically between sequential and parallel modes. + When nthreads > 1, you can use --cfg=contexts/threshold:P to run the user + processes in parallel only when their number is greater than or equal to P + (the default is 2). + * Added a check for NaN of IEEE754 infinite in the double entries of + the smx_user.c file + + XBT + * New command line option: if you pass --cfg=verbose-exit:0, SimGrid + won't output the state of processes when interrupted with Ctrl-C + * Add a new function xbt_dynar_to_array that transforms a dynar into a + NULL-terminated array. This may solve backward compatibility issues + due to the change to return type of SD_simulate. See also: + http://lists.gforge.inria.fr/pipermail/simgrid-user/2010-December/002206.html + * Add new macros with variable number of arguments. + - in xbt/log.h: XBT_DEBUG, XBT_VERB, XBT_INFO, etc. + - in xbt/asserts.h: xbt_assert + - in xbt/cunit.h: xbt_test_{add,fail,assert,log} + - in xbt/ex.h: THROWF and RETHROWF. + Define XBT_USE_DEPRECATED if you want to use the old numbered macros like + INFO1, INFO2, etc. + * Change xbt_die() to accept a format string with arguments, just like printf. + * New data structure: xbt_lib_t, like a dict but more general and with better + memory handling. + + INSTR + * New configuration options + Options triva/categorized and triva/uncategorized can be used to generate + graph configuration files for Triva visualization tool. + * Configuration option tracing/platform is renamed to tracing/categorized + * XBT logging makes tracing error checks easier, new root log hierarchy: instr + * New TRACE_user_link_variable interface: + User provides the name of the link and the tracing variable to attach to it + * the declaration of tracing categories must be done after the environment + creation + * simpler tracing interface, just one way to declare categories + TRACE_category or TRACE_category_with_color, it is up to you + * links in the trace file are again identified by their names + * trace contains the full platform hierarchy exactly as declared using the ASes + * Options tracing/msg/[task|process]:1 groups the process by hosts + for both cases, tasks and processes must have names that are unique during the simulation + these options generate traces that are suited to gantt-charts, such as the space-time view of Paje + * The experimental option tracing/msg/volume is deprecated + its functionality may be reincorporated if needed + * Buffering + The tracing generates a trace file with unordered timestamped events, + because of the way the core simulator (surf) works. A script available + at the tools directory (fix-paje-trace.sh) can be used to put the events + in order. We have changed the tracing so it can generate ordered timestamped + events in the final trace, but depending on the simulator (and how much time + is simulated) that can lead to a huge memory utilization. It is deactivated + by default, but it can be activated using the --cfg=tracing/buffer:1 switch. + + Build Infrastructure + * Define a SIMGRID_VERSION macro in simgrid_config.h. + - We are trying hard to keep the API stable, but it may happen that + some things change (we're a research project after all, not a + nuclear plant operating system). If such things should happen, you + could rely on that macro to adapt. + - current value: 30600 for 3.06.00, aka 3.6 + * Define macro MAKE_SIMGRID_VERSION(major, minor, patch) to help building + a number that can be compared with SIMGRID_VERSION. + * Add a build option -Denable_debug (set to ON by default): when set to OFF, + assertions and verbose/debug logging events are disabled at compile time. + + -- Tue Jun 21 08:57:43 CEST 2011 Da SimGrid team + +SimGrid (3.5) stable; urgency=medium + + Model Checking + * New feature to any SimGrid-based simulator: Model-Checking + Check SIN#1 for more details. + + SMPI + * New Model SMPI (three-interval linear regression for correction factors) + See RR-7426, available at http://hal.inria.fr/inria-00527150 + * Ability to use FORTRAN MPI code (through f2c, automatically privatized) + * New MPI functions supported: MPI_Get_count(), MPI_Comm_split() + * New: RAM folding (see RR-7426 and examples/smpi/NAS/DT-folding) + * New: execution sampling (see RR-7426 and examples/smpi/NAS/EP-sampling) + * See also src/smpi/README + + Tracing: + Tracing: + * Tracing system + - Tracing API changes: TRACE_start and TRACE_end should not be called + by user-code. They are automatically called by simulators created + with SimDAG, MSG and SMPI if the toolkit is compiled with + tracing_enabled=ON. Categories declaration and utilization remain the + same for MSG and SimDag. + - A function was added to the tracing API to declare categories with + colors: + - TRACE_category_with_color (char *category, char *color) + where color must be in the following format + "%f %f %f", red, green, blue + and red, green, blue are float values in the interval [0, 1] + - User can specify NULL as color parameter, or continue calling + TRACE_category (cat) + On that case, the tracing system will define random colors + - The following command-line options are supported: + --cfg=tracing/filename:msg.trace + --cfg=tracing:1 (activate tracing, needed to use others) + --cfg=tracing/platform:1 (categorized resource use) + --cfg=tracing/uncategorized:1 (uncategorized 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) + --cfg=tracing/simdag:1 (allow SimDAG tasks receive categories) + - examples of examples/msg/tracing updated + * Tracing SimDag + - DAXLoader and DOTLoader functions can generate tasks with categories + - A new function to attribute a category to SD tasks: + TRACE_sd_set_task_category (SD_task_t task, char *category) + * 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 + - See examples/smpi/NAS/DT-trace + * 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 + + MSG + * Asynchronous communications through the functions: + MSG_task_isend/irecv and MSG_comm_test/wait/waitall + * 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 + * New functions: MSG_task_set_name(), MSG_task_set_compute_duration() + + Platforms: Add some more examples in examples/platforms + * Grid'5000: see www.grid5000.fr + * *_30000_hosts.xml: various huge files [mainly scalability testing] + + SURF + * Change the XML format. This is a very important modification. SimGrid + 3.5 introduces a new hierarchical format based on the notion of + Autonomous Systems. Compatibility with old format is ensured + through the perl script provided in the install bin directory + bin/simgrid_update_xml. + It is now possible to build platforms with specific routing + mechanism (Full/Dijkstra/DijkstraCache/Floyd) and to easily + connect several platforms together. We will try to provide soon + set of realistic platforms exploiting these properties (have a + look at examples/platforms/ for the moment). + * Take the opportunity of the XML format change to be a good XML citizen: + rename link:ctn to link_ctn and similar changes (also dealt with by + simgrid_update_xml) + * Add a new routing scheme (rule-based) using regular expressions. It + enables to have an extremely low memory footprint when the + underlying routing is simple and can be compactly described. You + need to have libpcre4-dev (perl regular expressions) installed if + you want to use this routing scheme. + * Revive the cluster TAG and allow to easily and efficiently (both in + term of memory and speed) connect clusters together. Have a look + at teshsuite/simdag/platforms/ to see how this can be done. With + this tag, you can create clusters with thousands of tasks at no + cost (have a look at examples/platforms/). + Note: clusters are implemented as ASes, so there is no need for an + enclosing AS tag if you have only one cluster in your platform. + * Add new generic functions in the public interface that allows the user + to call SURF 'create_resource' methods from your code (same + functionality as the XML bypass mechanism but with a much lighter + burden). + * Add a new model (enabled through command line --cfg=network/model:SMPI) + that uses a piecewise linear approximation to produce better + results when exchanging small messages. + * Add a new parameter to handle correctly full duplex link and account + for interferences between uplink and downlink communications + (activate with --cfg=fullduplex:1). + + SIMDAG + * 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. + * 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 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. + * 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. + * Fix a bug in the management of tasks of size 0 in the surf network + models. This problem was only visible with SIMDAG and you should + thus disregard results produced with earlier versions if you + relied on this feature (some tasks were blocked because of this). + * Fix a bunch of stuff that prevented to use classical models with SIMDAG + even though your applications were doing only point-to-point + communications and sequential computations. Now you can really use any + model you want (of course, if you create real parallel tasks, which are + not implemented in most models beside ptaskL07, this will abort). + * Add an example that schedules a DAX on an heterogeneous platform + using a Min-Min strategy. + * New function SD_workstation_get_current_task() that returns the kind + of task currently running on a workstation in the sequential access + mode. + * Raise some warnings when unexecuted tasks remains at the end of the + simulation. This is usually caused by cycles in the DAG. + + SIMIX + * New function: SIMIX_process_set_function() called by MSG_set_function + * 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}. + * kill the dirty pimple SIMIX_message_sizes_output() + Please use (proper) visualization instead + + XBT + * New data container: setset (set of sets of elements) + * New module: mmalloc (mapped malloc, allowing to have several + independent segments of malloc) + * New function: xbt_dict_cursor_set_data() + * New functions: xbt_dynar_sort(), xbt_dynar_compare() + * New function: xbt_dynar_is_empty() + * New function: xbt_fifo_get_last_item() + * Fix xbt_dynar_shrink(): use the right element size. + * Fix xbt_dynar_set*(): allow index larger than current size and memset 0 + uninitialized areas during expand. + * Fix semaphores: previous implementation was severely broken. + * 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: + * Port GRAS to new SIMIX mechanisms. This allows gras users to + benefit from the latest improvement to the simulation kernel. + * Kill measurement sockets for now. If you rely on them, sorry. This + release is not for you. This feature will be reintroduced in the + future, but we cannot delay the release any further. + * New function: gras_msgtype_get_name(). + * Implement gras_agent_spawn in RL too (the prototype changed a bit) + * Fix (at last) the pmm example: it should not randomly fail anymore. + + Build chain: bug fixes and overall polishing + * Cmake is now stable enough. Hence, we killed the autotools. + * Port to windows ( TM :) + * 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 + * Compile java files only on need + * Add --cd and --setenv command line options to tesh + * Out of source builds are not fully supported yet, but we are close + * Enable supernovae and optimization flags by default for our users + + LUA Bindings + * Add layer to set up environment directly from lua, without XML. + * The effect of gras_stub_generator can be achieved through + lua too (check examples/gras/console/ping_generator.lua) + + -- Wed, 01 Dec 2010 22:09:23 +0100 Da SimGrid team + +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 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 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 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 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 tag is just broken. Actually that's brain-dead. + We need sth like + 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 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 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 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 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 incoming + 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 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 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] + + SURF: + * Complete rewrite of the KCCFLN05 workstation model. It is now an + extension of the classical CLM03 model that gracefully handles + failures. This is now the default model for MSG and GRAS. It doesn't + handle parallel tasks yet though. [AL] + * Bug fix: Weights were not correctly set in the network part. + WARNING: This may have resulted in incorrect results with simulations + where there are more than one flow on a given link. [AL] + + SURF, MSG, GRAS: + * After a (long ?) discussion on simgrid-devel, we have decided that the + convention we had on units was stupid. That is why it has been decided + to move from (MBits, MFlops, seconds) to (Bits, Flops, seconds). + WARNING : This means that all previous platform files will not work as + such with this version! A warning is issued to ask users to update + their files. [AL] + A conversion script can be found in the contrib module of the CVS, under + the name contrib/platform_generation/surfxml_update.pl [MQ] + + 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] + * Bug fix: Add a test in MSG_task_execute to stop whenever a task is + being executed on two different locations. [AL] + * Bug fix: Failures are now better supported thanks to Derrick's tests + (there was many failure situations I hadn't thought of and that weren't + correctly handled). [AL] + * New function: MSG_host_is_avail indicates you whether a given m_host_t + is up or down. [AL] + + GRAS: + * New! a real RPC mecanism, as it ought to be since too long. [MQ] + Exception occurring 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. + * New! function: gras_msg_handleall to deal with all messages arriving + within a given period. + * New! function: gras_socket_server_range to get a server socket in a + range of port numbers (ease to avoid port number conflicts) [MQ] + * New! gras processes display their backtrace when they get a SIGUSR1 + or when Ctrl-C is pressed. Use Ctrl-C Ctrl-C to exit. + Sweet to debug RL processes [MQ] + + AMOK: + * Bandwidth module: + - Do not force experiment sizes to be expressed in kb, or it becomes + impossible to measure the latency this way (needs one byte-long tests) + WARNING: this changes the amok_bw_* function semantic. [MQ] + - Implements the link saturation stuff. [MQ] + * Peer management module: + New! module factorizing code that we wrote over and over [MQ]. + + 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 (this is work + in progress and the API is not considered to be frozen yet). [AL] + * Display more information on backtraces: source line & function names are + now displayed just like valgrind does (rely on addr2line tool) [MQ] + * New function: xbt_backtrace_display(). Sweet while debuging [MQ] + * Reworked a little bit some #include statements to load only required + headers. Some user code that relied on SimGrid to include stdlib or + stdio may need to include it by themselves. [AL] + * Fixed xbt/log.h. A missing SG_BEGIN_DECL prevented compilation with + g++. [AL] + * Renamed xbt_host_t into xbt_peer_t since it betterly describes what I + meant. This breaks the API of AMOK and of xbt/config. Sorry about this, + but I guess that almost nobody used those parts. [MQ] + + -- Da SimGrid team Fri, 14 Jul 2006 01:32:27 +0200 + +SimGrid (3.0.1) stable; 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 Fri, 21 Oct 2005 14:42:20 +0200 + +SimGrid (3.00) stable; urgency=high + + 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 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 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) + * .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 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 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 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 Wed, 23 Feb 2005 22:09:21 +0100 + +SimGrid (2.91) unstable; urgency=low + + Alpha 2 on the path to SimGrid 3 + + [Arnaud] + (surf) + - Bug fix in the lmm_solver. + (msg) + - 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). + - Bug fix to let GRAS run on top of MSG until we move it directly on top + of the SURF. + + [Martin] + (infrastructure) + - Various cleanups to the autotools stuff + - Begin to move Gras examples to examples/gras/ + - Let make distcheck work again (yeah!) + (documentation) + - 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 consistent naming scheme. + (some of the test dataset are still to be regenerated) + - 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. + - 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 Mon, 14 Feb 2005 14:02:13 -0800 + +SimGrid (2.90) unstable; urgency=low + + Alpha 1 on the path to SimGrid 3 + + * It is a long time since the last release of SimGrid. I'm sorry about + that but as I had told you, I was rewriting a lot of things. I apologize + to those who had been reporting bugs to me and that I had not answered. + If your bug is still in the new version, please tell me. Here is a + summary of the main changes. + + * REVOLUTION 1: The SimGrid project has merged with the GRAS project + lead by Martin Quinson. As a consequence SimGrid gains a lot in + portability, speed, and a lot more but you'll figure it out later. + 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 + 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 + kernel optimized for our needs (called SURF but only the developers + should use it). Hence, MSG is now roughly 30 times faster and I think + that by rewriting a little bit MSG, I could event speed it up a little + bit more. Beside the gain in speed, it is also much easier to encode a + new platform model with SURF than it was with SG. More to come... + + * REVOLUTION 3: I have tried to change a little as possible the API of + MSG but a few things really had to disappear. The main differences + with the previous version are : + 1) no more m_links_t and the corresponding functions. Platforms are + directly read from a XML description and cannot be hard-coded + anymore. The same format is used for application deployment + description. The new format is described in the documentation. + 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 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 + with much more data-structures but without the hash-tables (we have + dictionaries that are much faster). + + -- Arnaud Legrand Mon, 31 Jan 2005 10:45:53 -0800 + +***************************************************************************** +* Follows the old GRAS changelog. It does not follow the same syntax, but I * +* don't feel like converting the oldies. (Mt) * +***************************************************************************** + +2005-01-31 Arnaud + Version 2.90: "the long awaited one" + - Finished rewriting and debugging MSG. Rewrote the documentation. + - disable GRAS for now since it needs to be ported to the newest SG + +2004-12-16 Martin + - Finish the port to windows (using mingw32 for cross-compile) + +2004-11-28 Arnaud + - Main loop and datastructures of SURF. A cpu resource object is + 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' over there yet. + +2004-11-15 Arnaud Legrand + - Trace manager now written. It uses a heap structure and is therefore + expected to be efficient. It may however be speeded up (particularly + when many events occur at the same date) by using red and black + trees. One day maybe... + - Max-min linear system solver written. It uses a sparse matrix + structure taking advantage of its expected use. Most operations are + O(1) and free/calloc are called as few as possible. The computation of + the minimum could however be improved by using a red and black tree + (again ! ;). + +2004-11-03 Arnaud Legrand + - 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 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. :) + + Inclusion of the SimGrid tree in the GRAS one. The archive is renamed to + SimGrid, and the version number is bumped to 2.x + +2004-10-29 Martin Quinson + - 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 mechanism as in Gnome is possible. + No idea yet whether it is a good idea. + +2004-10-28 Martin Quinson + - Interface revolution: the Starred Structure Eradication. + I used to do typedef struct {} toto_t; and then handle *toto_t. + Arnaud (and Oli) didn't like it, and I surrendered. Now, you have: + - ???_t is a valid type (builded with typedef) + - s_toto_t is a structure (access to fields with .) + - s_toto is a structure needing 'struct' keyword to be used + - e_toto_t is an enum + - toto_t is an 'object' (struct*) + Exemple: + typedef struct s_toto {} s_toto_t, *toto_t; + typedef enum {} e_toto_t; + Moreover, only toto_t (and e_toto_t) are public. The rest (mainly + s_toto_t) is private. + + - While I was at it, all gras__free() functions want a gras__t* + so that it can set the variable to NULL. It was so for dicts and sets, + it changed for dynars. + + - Fix a bunch of memleaks in dict_remove + - Fix a bug in sg/server_socket opening: it failed all the time. + +2004-10-07 Martin Quinson + - Speed up dynar lookup operation a bit. + + gras_dynar_get is dead. + + Now, you can choose between gras_dynar_get_cpy (the old gras_dynar_get + but should be avoided for efficiency reasons) and gras_dynar_get_ptr + (which gives you the address of the stored data). + + gras_dynar_get_as is an helpful macro which allows you to retrieve a + copy of the data using an affectation to do the job and not a memcpy. + + int toto = gras_dynar_get_as(dyn,0,int); rewrites itself to + int toto = *(int*)gras_dynar_get_ptr(dyn,0); + + It does not really speedup the dynar test because they are + setting elements all the time (and look them seldom). But the dict does + far more lookup than setting. + + So, this brings the dict_crash test from ~33s to ~25s (200000 elms). + +2004-10-05 Martin Quinson + - Allow to (en/dis)able the cycle detection at run time. + + Whether we should check for cycle or not is now a property of each + datatype. When you think there may be some cycle, use datadesc_cycle_set. + datadesc_cycle_unset allow to remove this property when previously set. + + 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 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 + sender side, it will enter an endless loop. If you forget on receiver + side, the cycles won't be recreated after communication. + + - Header reorganization. + Kill gras_private.h, each submodule must load the headers it needs. + +2004-10-04 Martin Quinson + - Interface revolution: do not try to survive to malloc failure. + + Now, gras_malloc and friends call gras_abort() on failure. + As a conclusion, malloc_error is not a valid error anymore, and all + functions for which it was the only gras_error_t return value are + changed. They now return void, or there result directly. + This simplify the API a lot. + +2004-09-29 Martin Quinson + - Re-enable raw sockets. + Created by gras_socket_{client,server}_ext; + Used with gras_raw_{send,recv} + No select possible. + + It should allow to kill the last bits of gras first version soon. + + 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 embedding them in the socket + struct directly. + +2004-09-28 Martin Quinson + - Finish the port to AIX. + autoconf was my problem (segfault within the malloc replacement + function. No idea why) + +2004-09-16 Martin Quinson + - Fix some size_t madness on 64bit architectures. + +2004-09-08 Martin Quinson + - Reduce the number of system headers loaded, overload some more system + calls (such as malloc to cast the result of the system one, and work + properly on AIX) + - Fix and reintroduce the config support + +2004-09-07 Martin Quinson + - Source code reorganization to allow Arnaud to surf all over there. + - Allow to document the logging categories. + - Remove all uppercase from logging categories and useless cleanup in names. + +2004-08-18 Martin Quinson + Version 0.6.2 (protocol not changed; API changed) + - Interface cleanup: gras_msgtype_by_name returns the type (instead of a + gras_error_t), and NULL when not found. Functions expecting a msgtype + as argument (msg_wait; msg_send) deal with NULL argument by providing a + hopefully usefull message. + - Portability to prehistoric sparcs again + +2004-08-17 Martin Quinson + Version 0.6.1 (protocol not changed; ABI not changed) + - prealloc some buffers to speed things up + +2004-08-11 Martin Quinson + Version 0.6 (protocol not changed; ABI expended) + - The parsing macro can deal with the references, provided that you add + the relevant annotations (using GRAS_ANNOTE(size,field_name)) + +2004-08-09 Martin Quinson + Version 0.5 (protocol not changed; ABI changed) + - Allow to off turn the cycle detection code in data exchange at + compilation time. It should be at run time, but I'm short of time (and + the config stuff is still broken). That way, we keep dict out of the + critical path, which is good because the performance is poor: + - search not dichotomial yet + - dynar give no way to access their content and memcpy everytime + - In composed data description (struct, ref and so on), stop foolness of + keeping the subtype's ID, but store the type itself. This keeps sets out + of the critical path, which is good since they rely on dynar and + dictionnaries. The only loose of that is that we cannot detect the + redeclaration of a structure/union with another content (but I'm not sure + the code detected well this error before anyway). We still can detect + the redefinition discrepancy for the other types. + - Use a whole bunch of optimisation flags (plus -fno-strict-aliasing since + it breaks the code because of type-punning used all over the place). + This breaks on all non-gcc architectures (for now). + + All those changes (plus the buffer of last time) allow me to gain 2 order + of magnitude on cruel tests consisting of 800000 array of integers on two + level of a hierarchical structure (200 secondes -> 4 secondes) + + API change: + - the selector of reference must now return the type it points to, not + the ID of this type. + +2004-08-06 Martin Quinson + Version 0.4 (protocol changed; ABI not changed) + - Allow to pass --gras-log argument to processes in simulation mode. Really. + - New debugging level: trace (under debug) to see effect of GRAS_IN/OUT + - Implement a buffer transport, and use it by default (it relies on tcp in + real life and on sg in simulation). + That's a bit hackish since I had a new field to the structure to store + its data without interfering with the subtype ones. Inheritance + is tricky in C. And that's a kind of reverse inheritance with one class + derivating two classes. Or maybe a game with java interfaces. Anyway, + that's damn hard in C (at least). + Moreover, I got tired while trying to ensure plugin separation and + genericity in SG mode. MSG wants me to do weird things, so let's go for + cruel hacks (temporarily of course ;). + See comment in transport_private.h:71 + - do not include all the _interface headers in private but in the files + which really need them (to cut the compilation time when they are + modified) + +2004-07-26 Martin Quinson + Version 0.3 (protocol not changed; ABI changed) + - Major overhault of the datadesc interface to simplify it: + - shorted the function names: + s/gras_datadesc_declare_struct/gras_datadesc_struct/ and so on + - add a trivial way to push/pop integers into the cbps without malloc. + This allows to make really generic sub_type description, which simply + pop their size of the stack. + - add a function gras_datadesc_ref_pop_arr() which does what users want + most of the time: Declare a dynamic array (which pops its size of the + stack) and declare a reference to it. Poor name, but anyway. + - kill the post-send callback, add a post-receive one + +2004-07-23 Martin Quinson + Version 0.2 (protocol changed; ABI changed) + - add some testing for cpbs in the test cases, and fix some more bugs. + This invalidate again the little64 data file, since I cannot regenerate + it myself. + - remove an awfull optimization in the logging stuff, allowing me to: + - understand it again + - learn gcc how to check that the argument match the provided format + - fix all errors revealed by gcc after that + - internal keys of dict are not \0 terminated. Deal with it properly in + loggings instead of segfaulting when the user want to see the logs :-/ + +2004-07-22 Martin Quinson + - Fix some stupid bug preventing cbps (callback postit) from working + +2004-07-21 Martin Quinson + - Some documentation cleanups + - remove the useless last argument of msgtype_declare + - rename the Virtu functions to fit into the 'os' namespace + - move headers src/include -> src/include/gras/ and stop fooling with + gras -> . symbolic link + - make distcheck is now successful + +2004-07-19 Martin Quinson + Version 0.1.1 + - Build shared library also + - Install html doc to the right location + - stop removing maintainer files in make clean + - build tests only on make check + +2004-07-13 Martin Quinson + version 0.1 + - No major issue in previous version => change versionning schema + - Re-enable little64 convertion test now that Abdou kindly regenerated the + corresponding dataset. + +2004-07-11 Martin Quinson + version 0.0.4 + - Get it working with any kind of structure (we can compute the padding + bytes remotely for all the architectures I have access to) + - Implement the structure parsing macro (still not quite robust/complete) + - Improvement to the remote testing toysuite + +2004-07-10 Martin Quinson + [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. + Alignment is a serious matter) + - test whether the structures get compacted (but respecting the alignment + constraints of each types) + - test whether the array fields of structures can straddle alignment boundaries + [base] + - Damnit, double are bigger than float (typo in creation of 'double' datadesc) + (took me 2 hours to find that bug, looking at the wrong place) + - Add gras_datadesc_declare_{union,struct}_close(). They must be used + before sending/receiving and are used to compute the offsets of fields + - Given that padding size depend even on compiler options, keep track of + alignment and aligned_size only for the current architecture. Not a big + deal since we send structure fields one after the other (seems + reasonable). + - Add the datastructure used for IEEE paper by the PBIO guys to the test + program, let it work on linux/gcc/little32. portability todo. + +2004-07-08 Martin Quinson + - import and improve remote compilation support from FAST + - make sure make check works on half a dozen of machines out there + +2004-07-07 Martin Quinson + Let's say it's version 0.0.3 ;) + - Implement conversions (yuhu!) + - Let it work on solaris (beside conversion, of course) + - Stupid me, using rand() to generate the conversion datatests in not wise. + +2004-07-06 Martin Quinson + - Let make dist work, since I'm gonna need it to compile on remote hosts + - Let Tests/datadesc_usage write the architecture on which the file was + generated as first byte. + - Add PowerPC (being also IRIX64), SPARC (also power4) and ALPHA + architecture descriptions. + - Add datadesc_usage.{i386,ppc,sparc} files being the result of execution + on those architectures. + - Optimization: send/recv array of scalar in one shoot + +2004-07-05 Martin Quinson + - YEAH! GRAS/SG and GRAS/RL are both able to run the ping example ! + + - Plug a whole bunch of memleaks + - each process now have to call gras_{init,exit}. One day, their log + settings will be separated + - Continue the code factorisation between SG, RL and common in Transport. + +2004-07-04 Martin Quinson + [Transport] + - Redistribution between SG and RL. + We wanna have to accept in SG, so move accepted related parts of RL in + the common part. (more precisely, the dynar of all known sockets is no + more a static in transport.c, but part of the process_data) + [Core/module.c] + [gras_stub_generator] + - Bug fix: Do call gras_process_init from gras_init (wasnt called in RL). + +2004-07-03 Martin Quinson + - Create a new log channel tbx containing dict, set, log, dynar (to shut + them all up in one shot) + [DataDesc] + - Fix the ugly case of reference to dynamic array. + - New (semi-public) function gras_datadesc_size to allow the messaging + layer to malloc the needed space for the buffer. + [Transport] + - gras_socket_close now expect the socket to close (and not its address to + put NULL in it after it). This is because the socket passed to handlers + is one of their argument (=> not writable). + [Messaging] + - propagate the interface cleanup from last week in datadesc, ie remove a + superfluous level of indirection. User pass adress of variable + containing data (both when sending and receiving), and not of a variable + being a pointer to the data. Let's say that I like it better ;) + The price for that is constructs like "int msg=*(int*)payload" in + handlers, but it's a fine price, IMHO. + [examples/ping] + - Let it work in RL (yuhu) + +2004-06-21 Martin Quinson + [Transport] + - porting SG plugin and SG select to new standards (works almost). + - plug memleaks and fix bugs around. + + [DataDesc] + - cleanup the prototype of data recv and force users to specify when they + want to handle references to objects. Test case working even for cycles. + - plug memleaks. Valgrind is perfectly ok with this. + +2004-06-12 Martin Quinson + [Transport] + - cleanup the separation between plugin and main code in plugin creation + +2004-06-11 Martin Quinson + [Transport] + - Reput hook for raw sockets, needed for BW experiments + - kill a few lines of dead code + [Data description] Interface cleanup + - gras_datadesc_by_name returns the searched type or NULL. + That way, no variable is needed to use a type desc once, which makes + the code clearer. + - gras_datadesc_declare_[struct|union]_append_name is removed. The last + two parameters were strings (field name, type name), leading to + common errors. + [Dicos] Interface cleanup + - gras_dico_retrieve -> gras_dico_get ; gras_dico_insert -> gras_dico_set + This is consistant with the dynar API. + +2004-04-21 Martin Quinson + [Messaging] + - Porting to new standards. + [Data description] + - interface cleanup. + There is no bag anymore, no need to take extra provision to mask the + pointers behind "ID". + Better splitup of functions between files create/exchange/convert. + This is still a bit artificial since convert and receive are so + interleaved, but anyway. + [Virtu(process)] + - add a queued message list to procdata (the ones not matching criteria + in msg_wait) + - factorize some more code between SG and RL wrt procdata + [Tests] + - use gras_exit in example to track memleaks + - get rid of gs_example now that GS is properly integrated into gras + - update run_test to integrate the latest tests (datadesc) + [Logging] + - rename WARNINGn macros to WARNn since it prooved error-prone + +2004-04-19 Martin Quinson + [Data description] + - 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 + nobody really cares (yet). Get a prototype before optimizing. + - tests (using a file socket) for DD send/receive on: + - base types: int, float + - array: fixed size, string (ie ref to dynamic string) + - structure: homogeneous, heterogeneous + - chained list, graph with cycle + Believe it or not, valgrind is not too unhappy with the results. The + cycle happily segfaults, but the others are ok. And I'm sick of pointers + for now. + [Transport] + [File plugin] + - Bugfix when using a filename explicitely (instead of '-') + +2004-04-09 Martin Quinson + [Transport plugins] + - factorize more code between RL and SG in socket creation + - Complete the implementation and tests of: + o TCP + o file (only in RL, and mainly for debugging) + + I lost 3 days to design a portable address resolver, and then decided + that the prototype mainly have to run on my box. + Addressing portability too early may be like optimizing too early :-/ + [Tests] + - use gras_init in the Tests instead of the crappy parse_log_opt + (the latter function is removed) + [Conditional execution] + - New functions: gras_if_RL/gras_if_SG (basic support for this) + [Code reorganisation] + - 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.