Supported Backends and Dependencies¶
Supported Backends¶
CLUEstering uses the Alpaka library to achieve performance portability across many backends without code duplication. Backends are activated by passing specific flags. The currently supported flags are:
Serial CPU:
ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLEDParallel CPU with TBB:
ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLEDParallel CPU with OpenMP:
ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLEDCUDA GPUs:
ALPAKA_ACC_GPU_CUDA_ENABLEDAMD GPUs:
ALPAKA_ACC_GPU_HIP_ENABLEDIntel CPU with SYCL:
ALPAKA_ACC_SYCL_ENABLED+ALPAKA_SYCL_ONEAPI_CPUIntel GPU with SYCL:
ALPAKA_ACC_SYCL_ENABLED+ALPAKA_SYCL_ONEAPI_GPU
In addition to passing Alpaka flags, non-CPU backends require the appropriate compiler and compilation flags.
Dependencies¶
CLUEstering requires:
Alpaka version 1.2.0
C++20 compiler
Boost version 1.78.0 or later
Additional dependencies depending on the chosen backend:
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, shared libraries for each supported backend are automatically compiled. For building, the following tools are also required:
CMake 3.16.0 or later
setuptools 42 or later
wheel
pathlib
Additionally, the following Python libraries are required for backend functionality:
numpy
scikit-learn
pandas
matplotlib