/** @brief The hipCUB project main page. @author @file */ /** @mainpage hipCUB Documentation @section overview Overview hipCUB is a thin wrapper library on top of rocPRIM or CUB. It enables developers to port project using CUB library to the [HIP](https://github.com/ROCm-Developer-Tools/HIP) layer and to run them on AMD hardware. In [ROCm](https://rocm.github.io/) environment hipCUB uses rocPRIM library as the backend, however, on CUDA platforms it uses CUB instead. - When using hipCUB you should only include `` header. - When rocPRIM is used as backend `HIPCUB_ROCPRIM_API` is defined. - When CUB is used as backend `HIPCUB_CUB_API` is defined. - Backends are automaticaly selected based on platform detected by HIP layer (`__HIP_PLATFORM_AMD__`, `__HIP_PLATFORM_NVIDIA__`). @section hipcub_rocprim rocPRIM backend hipCUB with rocPRIM backend may not support all function and features CUB has because of the differences between ROCm (HIP) platform and CUDA platform. Not-supported features and differences: - Functions, classes and macros which are not in the public API or not documented are not supported. - Device-wide primitives can't be called from kernels (dynamic parallelism is not supported in HIP on ROCm). - Storage management and debug functions: - `Debug`, `PtxVersion`, `SmVersion` functions and `CubDebug`, `CubDebugExit`, `_CubLog` macros are not supported. - Intrinsics: - `ThreadExit`, `ThreadTrap` - not supported. - Warp thread masks (when used) are 64-bit unsigned integers. - `member_mask` input argument is ignored in `WARP_*` functions. - Arguments `first_thread`, `last_thread`, and `member_mask` are ignored in `Shuffle*` functions. */