X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/be25aefab9c2c610e764c6b3ddd0df1c2c9a4797..ca8a39f9679abcef3c5c546966e5144ec41f67c3:/ChangeLog diff --git a/ChangeLog b/ChangeLog index ad2bcf006e..2630539095 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,24 +1,161 @@ -SimGrid (3.3.2-svn) unstable; urgency=low +SimGrid (3.3.3) stable; urgency=low - SMPI: - * Implement MPI_Waitany and MPI_Waitall + 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: -15% + 3.3.2 -> 3.3.3: +40% + 3.3.1 -> 3.3.3: +40% + 3.3.1 with inline patch -> 3.3.3: +30% + + 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. + + That's a pitty that gcc cannot inline functions placed in other files + alone. We have to choose between: + - break the encapsulation (by putting private data structures and + accessors in headers files to help gcc) + - live with low performance + - switch to a decent compiler such as icc (not quite possible). + -- Da SimGrid team + +SimGrid (3.3.2) stable; urgency=low + + The "Simplicity does not preceed complexity, but follows it" release. + + The main contributors of this release were (lexical order): + Silas De Munck, Stéphane Genaud, Martin Quinson, Cristian Rosa. + SURF: - * Declare common_public as an embeeded struct to reduce redirections - and mallocs - * Factorize model_init/exit between models - * Factorize the set of resources within common_public; - + change model->common_model->resource_name() - into surf_model_resource_by_name(model) - (less redirections, less function to write when defining a model) - * Unify the types of models in a uniq s_surf_model_t (using an union) - * Embeed every fields of common_public directly into s_surf_model_t + * Extract the routing logic into its own object. + (was dupplicated in network.c and workstation_LV07.c; + Allows to implement other ways of storing that info) + => kill now useless network_card concept + - Use dynar to represent routes (instead of void** + int*) + - kill link_set (use surf_network_model->resource_set instead) + - Add a command-line option to choose the routing schema to use + - Add three new models: + * Floyd (shortest path computed at initialization) + * Dijikstra (shortest path recomputed all the time) + * Cached Dijikstra (shortest path computed on need) + All these models where contributed by Silas De Munck, and are + described in his ICCS09 paper. + + * Simplify model declaration + (less redirections, less function to write when defining a model) + - Factorize stuff between models: + - model_init/exit + - Set of resources: + surf_model_resource_set(model) + surf_model_resource_by_name(model, name) + - Unify the types of models in s_surf_model_t (using an union) + - Embeed fields of common_public directly into s_surf_model_t + - Rename model methods: + action_free ~> action_unref + action_change_state ~> action_state_set + action_get_state ~> action_state_get + - Change model methods into functions : + (model)->common_public->action_use ~> surf_action_ref + + * Implement a generic resource; use it as ancestor to specific ones + (allows to kill duplicated code in models) + 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 + -- Da SimGrid team Wed, 19 Aug 2009 17:07:12 +0200 SimGrid (3.3.1) stable; urgency=low @@ -110,7 +247,7 @@ SimGrid (3.3.1) stable; urgency=low These targets fail about 1/10 of times on gras/pmm, but we believe that this is because of the test, not because of simgrid. amok/saturate_sg fails even more rarely, and the test may not be - the problee. + the problem. - Mac OSX Leopard/x86/context The test suite still spits tons of errors because some obscure