adiar icon indicating copy to clipboard operation
adiar copied to clipboard

Alternatives to TPIE : STXXL

Open SSoelvsten opened this issue 3 years ago • 0 comments

Adiar is built ontop of abstractions of the TPIE library to improve the code quality of our own code base and extend it with some custom functionality. An alternative to TPIE is the STXXL library, which is distributed under the BSD license rather than LGPL 3. Furthermore, STXXL should be faster (at the cost of complexity and number tweaking on the user's end).

So, it is of interest to provide the same abstractions with the STXXL library instead such that users can pick which one to use.

  • [ ] Move all of the TPIE wrappers in src/adiar/**/ to src/adiar/**/tpie/.
    • adiar::sorter<memory_type> in src/adiar/internal/data_structures/sorter.h
    • adiar::priority_queue<memory_type> in src/adiar/internal/data_structures/priority_queue.h
    • adiar::file<elem_t> in src/adiar/internal/io/file.h
    • adiar::file_stream<elem_t> / adiar::file_writer<elem_t> in src/adiar/internal/io/file_stream.h and src/adiar/internal/io/file_writer.h
  • [ ] Create STXXL wrappers with a similar interface in src/adiar/**/stxxl/. This needs to be an unofficial C++17 ready version of STXXL.
  • [ ] Compile Adiar with #include <adiar/internal/**/tpie/*> or #include <adiar/internal/**/stxxl/*> depending on whether a new ADIAR_USE_TPIE compiler setting in CMake is set. The primary question is how to ensure that even the header parts of the library are compiled with the same version.

SSoelvsten avatar Dec 17 '21 13:12 SSoelvsten