- Bug fixes and improvements for architectures with weak memory models (i.e., non TSO).
- Using the
synchGetNCores
functionality provided byprimitives.h
instead ofnuma_num_configured_cpus
provided bylibnuma
. codecov
workflow removed.
- Adding support for various thread placement policies.
- Improvements to the
threadtools.h
API; some basic NUMA functionality is added. - A patch on
hsynch.c
for supporting the various thread placement policies. - Improvements of the performance of
synchResched
for many multicore machines (e.g., AMD, Intel, etc.). - Improvements of the performance of the
synchGetMachineModel
function in the case of multiple calls. - The performance of algorithms based on
hsynch.c
is substantially improved (more than X2 in many cases).
- Documentation updates.
- Fix for the
chlhash.c
anddsmhash.c
concurrent hash-tables. - Fix for the functionality of
synchFastRandomRange32
andsynchFastRandomRange
provided byfastrand.c
. - Improvements for the benchmarking infrastructure of hash-tables.
- Adding code for validating the data-structures provided by
clhhash.c
anddsmhash.c
. - Increasing code coverage by
codecov
.
- Expanding
validate.sh
to cover a few more concurrent objects. - Increasing code coverage by
codecov
. - Enhancing the API of
threadtools.h
. - Code cleanup for the provided benchmark files.
- Bug fix for the pool objects on the recycling functionality.
- A new high-performant, optimized implementation for the flat-combining synchronization technique. This new implementation provided by the Synch framework is written from the scratch.
- A few API fixes.
- README.md updated.
- Adding the JOSS paper to the repository.
- Header-files cleanup in order to provide a better and consistent API.
- Adding the
Synch
prefix to all structs provided by the runtime/primitives to the end-user. - Adding the
synch
prefix to all functions provided by the runtime/primitives to the end-user. - Extensive documentation for the API.
- Create a
doxygen
configuration file for auto-generating man-pages/documentation. - API documentation is now provided at GitHub pages: https://nkallima.github.io/sim-universal-construction/index.html.
- A code coverage report is provided through codecov.io for the validation script.
- Support for installing the framework.
- Improvements on the build environment.
- Expansion of the CONTRIBUTING.md.
- Providing a short discussion (see PERFORMANCE.md) of the expected performance for the various objects provided by the framework.
- The
bench.sh
andvalidate.sh
scripts use similar arguments as the provided benchmarks.
- Adding the LCRQ Queue implementation (Adam Morrison and Yehuda Afek, PPoPP 2013, http://mcg.cs.tau.ac.il/projects/lcrq).
- Memory reclamation for SimStack is supported.
- Adding support for 128 bit Compare&Swap.
- Documentation improvements; a memory reclamation section was added in
README.md
.
- Improvements on
validate.sh
for better error reporting. - Enhancements on
README.md
. - Improved logo.
- Introducing
validate.sh
, a smoke/validation script that verifies many of the provided data structures. - A few improvements on some benchmarks in order to be conformed with
validate.sh
. - Introducing the logo of the repository.
- Enhancements on
README.md
.
- Executing
Pause
instructions on spinning-loops for the X86 architecture. Spin-locks and some lock-free algorithms may have performance benefits in SMT architectures. - Documentation improvements.
- A new implementation of the pool.c functionality. Most stack and queue implementations support memory reclamation, the only exception are the simstack, simqueue, lfstack and msqueue implementations.
- Code clean-up for the Sim family of algorithms.
- Improvements on the HSynch family of algorithms.
- Enhanced NUMA support for the NUMA-aware data-structures.
- Homogenized code for stack and queue implementations.
- Better output for bench.sh script.
- Numerous performance optimizations and bug-fixes, especially in machines with weak memory models.
- Documentation improvements.
- Improving the output messages of build-system.
- Adding support for clang in Makefile (i.e.,use
make clang
for building the sources with the clang compile). - A few bug-fixes and minor improvements.
- Dropped support for Intel icc compiler and added support for Intel icx compiler. Tested with Intel(R) oneAPI DPC++ Compiler 2021.1.2.
- Significant enhancements on bench.sh.
- New folder/file library structure.
- ftime is replaced by clock_gettime.
- Removing dead-code from the unsupported sparc/solaris architecture.
- PAPI and NUMA libraries automatically used depending user's settings in config.h.
- Pid fix for the Sync family of algorithms.
- Initial support for ARM-V8 and RISC-V machine architectures.
- Significant performance optimizations for the Synch family of algorithms on modern NUMA machines.
- The produced binaries can run with any number of threads/fibers without re-compilation.
- All the produced benchmark binaries can accept arguments, such as the number of threads, the number of benchmark's iterations, etc.
- Enhancements on how the runtime handles the NUMA characteristics of modern multiprocessors.
- Better thread affinity policy in NUMA machines.
- A new script called run_all.sh is provided for automatically testing all the produced binaries.
- A .clang-format file is provided in order to maintain the styling-consistency of the source code.
- Numerous performance optimizations and bug-fixes.
- Testing has been performed in RISC-V and aarch64 machine architectures.
- Bug fixes and performance improvements.
- Support for ARM-V8 and RISC-V machine architectures.
- The last version that supports solaris/sparc architecture. From now on sparc/solaris architecture is unsupported.