ROCm packaging history

From Gentoo Wiki
Jump to:navigation Jump to:search
This article is a stub. Please help out by expanding it - how to get started.

Early days

ROCm overlay

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.