Skip to content

Remove Core Boost Dependency #481

Open
@ax3l

Description

@ax3l

This issue is just to trigger a discussion and to have a look around.

I personally think that, independent of Boost, Alpaka will provide the best user experience if there are zero pre-installed dependencies required to start if. "Zero" not accounting for the accelerator (CUDA, Fiber, TBB, ...). That does not mean we have no third-party dependencies, but we should take ones that we can auto-download in CMake and/or ship.

Pessimistic View

Boost is a heavy and unstable dependency, which is notoriously breaking with CUDA and HPC compilers such as XL. It's internal dependencies are not cleanly exposed and can change for each release. Proper CMake support is still in the making. It adds to the complexity to get started with alpaka and dependencies of header-only libs like alpaka are generally very nasty.

Besides the optional fiber backend - which is totally fine if it pulls boost - I would propose to lighten the burden of dependencies in Alpaka. The core alpaka library should therefore get rid of it.

Boost.Tests can be replaced with the stand-alone and modern Catch2 library - we use it in two projects already and it works wonderful and switching is easy:
openPMD/openPMD-api#110 (done now in #712)

Compiler detection and macros such as ignore unused (done now in #584) and class member aligns can be easily re-implemented.

Instead of mp11 #459 we could use Brigand which is also used in large projects such as vtk-m:
https://gitlab.kitware.com/vtk/vtk-m/commits/master/vtkm/internal/brigand.hpp

or other libs that are active, standalone, with good test and compiler coverage and well-maintained. Many of those also contain so-called "amalgated" single-headers (as the vtk-m link above is based on this).

Optimistic View

Should we even more deepen our boost-involvement with more pushes to native nvcc & clang -x cuda support in configs, tests, build system (legacy, new) and libraries?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions