Skip to content
This repository has been archived by the owner on Jun 25, 2022. It is now read-only.

Releases: HPDCS/ROOT-Sim

2.0.0

12 Apr 13:17
2.0.0
Compare
Choose a tag to compare

This is the stable 2.0 release of ROOT-Sim.

All the code has been properly documented. The library is accompanied by a set of rules to help the distributed development effort, and prevent something to screw up the whole work. A wiki has been added to the online repository, and the website has been significantly restructured in a way to be automatically sync'ed with the code repository (as far as possible).

Added

  • ABM Support: A new set of semantically rich API has been added to ROOT-Sim. This API significantly simplifies the development of Agent-Based Models, and transparently supports all the activities required to support rollback and restore of simulation objects. The model can specify portions of the state of a simulation object which must be transparently synchronized with other LPs in the system, also on remote distributed nodes.
  • JSON-based configuration of models: A JSON parser has been introduced in the library. This can be used to configure, e.g., custom topologies. Also, simulation models can lever this parser to implement their own configuration files.
  • Continuous Integration: Continuous integration has been significantly refactored, allowing to stress test the project much more and realigning to newer versions of the system software. Code coverage has also been supported.
  • Tests and Unit Tests: A test script has been introduced, which relies on some unit tests (currently, only DyMeLoR is subject to a unit test) and some models to cover much of the code base while testing.
  • Automatic deploy of website and documentation: Continuous Integration has been rearranged to automatically generate the documentation and update some parts of the website from the content of the repository, any time that a new merge is made in develop or in master.

Changed

  • Argument parsing: We have now switched to argp to parse command line arguments. This has the benefit that also simulation models can implement their parsers almost at no cost. Some models have already been refactored to use this facility.
  • Topology library: The topology library has been significantly enhanced. New topologies have been added. In particular, it is now possible to specify arbitrary topologies, represented as graphs with edges which carry either a probability or a weight. These values are used by API functions such as FindReceiver()to find the destination of a message. Topologies can change at any time during simulation, and they are transparently rolled back if needed.
  • Checkpoint/Restore: The code supporting state saving has been refactored. In particular, the code has been modified to completely separate the routines which handle platform-level data (such as rollbackable libraries) and simulation model buffers. This separation of concerns has significantly cleaned up the code.
  • Faster ULTs: This release explicitly targets x86_64 systems. Therefore, we decide to break portability, remove the portable signal-based approach for creating ULTs, and implemented an extremely fast context setup routine. This change has cut the time to setup LPs by at least a factor of 1000.
  • Contributing Guidelines: Contributing guidelines have been added to the project. The code base has been significantly cleaned up and documented, to comply with the new guidelines.

Deprecated

  • NUMA Optimization: The NUMA subsystem has been found to be suboptimal under some circumstances. The current research effort in this direction tells that a more comprehensive approach is feasible, and more effective. Since the new subsystem will basically constitute a complete rewrite of the previous, in this cleaner release we have deprecated the old subsystem.
  • Parameter Parsing API: The new argp-based parser made the older code to parse simulation models parameters obsolete, and it has thus been deprecated.
  • Treiber Stack: The Treiber stack was being anyhow the bottleneck of the slab allocator. A different approach is under study, so this data structure has been deprecated from the simulator.

Removed

  • Event & Cross State Synchronization: ECS has been temporarily compiled-out of ROOT-Sim. Some of the code base is still in the repository anyhow. A complete cleanup and enhancement of the subsystem is due for the next release.
  • Buddy System and Segment Allocator: A bug in the buddy system has been found, but it was not possible to fix it in time for the current release. Considering that this is only 100% necessary for ECS (which has also been removed), and considering that the performance penalty by removing it is not that dramatic, it has been temporarily disabled (although it is still in the code base). This will be reintroduced in the next release.

Fixed

  • If an error at runtime is found, a call to rootsim_error() can now jump directly out of the main loop thanks to a longjmp(). This prevents stupid crashes, like checking if a pointer is NULL, and then dereferencing it, although a call to rootsim_error() was issued.

2.0.0-alpha2

01 Feb 08:23
2.0.0-alpha2
72a61f9
Compare
Choose a tag to compare
2.0.0-alpha2 Pre-release
Pre-release

This is the second alpha release for version 2.0.0.

In this release, several performance and correctness minor
bugs have been fixed.

The preliminar experimentation has shown, under certain
workloads, a 3x speedup with respect to the previous alpha.

2.0.0-alpha1

30 Jan 14:30
2.0.0-alpha1
Compare
Choose a tag to compare
2.0.0-alpha1 Pre-release
Pre-release

2.0.0-alpha1
This it the alpha 1 release of ROOT-Sim 2.0.0.

This version implements the following facilities:

  • SMP version of the simulation engine
  • Distributed version of the simulation engine via MPI
  • Rollback operation via log/restore
  • Event Cross State Synchronization
  • LP management via User-Level Threads
  • LP Load Balancing towards worker threads
  • New memory management system

1.0.1

30 Jan 14:31
1.0.1
Compare
Choose a tag to compare

Compatibility fix
This version fixes small compatibility issues which arised with newer
versions of gcc compilers.

1.0.0

30 Jan 14:31
1.0.0
Compare
Choose a tag to compare

This is the original stable 1.0.0 version of the
multithreaded ROOT-Sim kernel.