ROCm packaging history
Early days
Brief history of dev-util/hip and dev-libs/rocm-opencl-runtime
At first (ROCm-4) hip, rocm-opencl-runtime, rocclr are in separated repositories and separated ebuilds. dev-libs/rocm-opencl-runtime and dev-util/hip both depend on (link to) dev-libs/rocclr. CLR stands for compute language runtime.
From ROCm-4.5 AMD make rocclr a static library bundled to rocm-opencl-runtime and hip runtime. So dev-libs/rocclr disappeared.
Also from ROCm-4.5 hip upstream is split into HIP and hipamd, former one mainly contains vendor independent headers, utilities (like clang wrapper hipcc), tests, samples. hipamd repo is for AMD GPUs, providing hip runtime library and some Perl scripts roc-obj-* to inspect AMDGPU kernel in ELF binaries. Building hip runtime requires rocclr + HIP + hipamd. Gentoo use one dev-util/hip to package them. That is the case for ROCm-5 ebuilds.
From this point HIP can also build with NVIDIA CUDA backend, but not enabled in ROCm-5 ebuilds.
During ROCm-5, HIP got further separated into HIP (headers) HIPCC (clang wrapper) and hip-tests (tests, samples). And dev-util/hipcc was separated from dev-util/hip in 5.7.
Also, from ROCm-5.6 upstream merged rocclr + hipamd + rocm-opencl-runtime into clr as the AMD GPU backend for both hip and opencl. Supporting what language depends on Cmake argument CLR_BUILD_HIP
and CLR_BUILD_OCL
. So building dev-util/hip needs clr + HIP (and testing needs hip-tests) with CLR_BUILD_HIP=On
, while building dev-libs/rocm-opencl-runtime only needs clr with CLR_BUILD_OCL=On
.
As of ROCm-6, upstream introduced hipother repo to provide wrapper headers of CUDA backend. And Gentoo packages dev-libs/hipother. hip can only have one backend.