CLUEstering
High-performance density-based weighted clustering library developed at CERN
Loading...
Searching...
No Matches
Supported backends and dependencies

Supported backends

CLUEstering uses the alpaka library for achieving performance portability accross many different backends without requiring any code duplication, which are activated by passing specific flags. The currently supported flags are:

  • serial CPU: ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
  • parallel CPU with TBB: ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLED
  • parallel CPU with OpenMP: ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLED
  • CUDA GPUs: ALPAKA_ACC_GPU_CUDA_ENABLED
  • AMD GPUs: ALPAKA_ACC_GPU_HIP_ENABLED
  • Intel CPU with SYCL: ALPAKA_ACC_SYCL_ENABLED + ALPAKA_SYCL_ONEAPI_CPU
  • Intel GPU with SYCL: ALPAKA_ACC_SYCL_ENABLED + ALPAKA_SYCL_ONEAPI_GPU

On addition to passing the alpaka flags, non-CPU backends also require setting the specific compiler and the necessary compilation flags.

Dependencies

CLUEstering is currently based on alpaka 1.2.0, which requires a C++20 compiler and Boost 1.78.0 or later. Furthermore, depending on the chosen backend, the relative libraries must be installed:

  • Serial backend: no additional dependencies
  • TBB backend: TBB 2.2 or later
  • OpenMP backend: OpenMP 2.0 or later
  • CUDA backend: CUDA 12.0 or later
  • HIP backend: ROCm 6.0 or later
  • SYCL backends: oneAPI 2024.2 or later

When installing CLUEstering as a Python library, the shared libraries for each backend supported on the system are automatically compiled. So, in addition to the backend-specific dependencies listed above, some additional dependencies are also needed for the building process:

  • cmake 3.16.0 or later
  • setuptools 42 or later
  • wheel
  • pathlib

In addition to this, some Python libraries are used in the backend of the library and are thus needed, namely:

  • numpy
  • scikit-learn
  • pandas
  • matplotlib