Blaze Concurrent Library

The Blaze Concurrent Library is a collection of portable and scalable concurrent data structures written in the C++11 programming language. The containers are customizable with user defined allocators and support several memory reclamation techniques.

The source code of the project is available from our git site:
https://gitlab.cis.uab.edu/iprogress/blaze

Data structures:

Memory Reclamation Techniques:

Utilities

  • Various spinlock implementations (e.g., TTAS, MCS, CLH, Counting)
  • elide_guard: similar to std::lock_guard, but tries transactional execution a number of times before falling back to lock-based execution. elide_guard accepts multiple locks that meet the elidable concept and elides them at the same time.
    Idiom: auto g = uab::elide_guard(5, m1, m2, m3); // m* mutex
  • Tasks: light-weight tasks mainly aimed at parallel reductions

Portability

Blaze requires a compiler that supports atomics and thread local storage. Blaze is known to work with GCC (>=4.8), Clang (>=3.4), IBM xlc++ (>= 13.1.3), Intel C++ (>=15.0), and Sun Studio compilers (>= 12.6). Blaze is tested on a variety of systems ranging from cell phones (ARM), communication processors (Power), desktops (x86s, Power), to high-performance computers (x86s, Power A2, Power 8). Hardware transactional code has been tested on Intel Haswell and IBM Power 8.


License

Blaze is distributed under a BSD style license.


Questions and feedback

Please contact iprogress at uab dot edu .

Last update: October 2018