[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Where to put .hipVersion?



Hello everyone,

The last major issue that must be resolved before HIP is easy-to-use on Debian is the matter of the .hipVersion file. As it stands, this file is not being shipped in the Debian package and users must specify --hip-version=5.0.0 explicitly in their compiler flags.

The file is traditionally installed to $HIP_PATH/bin. When $HIP_PATH is /usr, this implies that the file will be stored at /usr/bin/.hipVersion. That is a problem, as the location is not compliant with the File Hierarchy Standard (FHS), which requires that architecture-independent data be stored in /usr/share.

The obvious place to put the file would be /usr/share/hip/.hipVersion. However, it would not be found by clang [1], and that would undermine its purpose. There are a few options:

1. We could patch clang [1] and hipvars [2] to look in /usr/share/hip/.hipVersion (or perhaps /usr/share/hip/version).
2. We could ship /usr/bin/.hipVersion as the Debian FHS relaxes the architecture-independence rule to a suggestion [3][4].
3. We could patch --hip-version=$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH directly into the hipcc call to clang. It would be pretty easy to hardcode it into hipvars [2] append it to HIPCXXFLAGS, HIPCFLAGS and HIPLDFLAGS [5].

I lean towards Option 3 in the near-term, as it works with existing versions of clang. The upstream HIP and LLVM developers may be able to find a more permanent solution. The version file is seems redundant as the necessary information is already embedded in the library binary [6][7].

Sincerely,
Cory Bloor

[1]: https://github.com/llvm/llvm-project/blob/llvmorg-14.0.6/clang/lib/Driver/ToolChains/AMDGPU.cpp#L451-L459
[2]: https://github.com/ROCm-Developer-Tools/HIP/blob/rocm-5.2.0/bin/hipvars.pm#L152-L159
[3]: "The FHS requirement that architecture-independent application-specific static files be located in /usr/share is relaxed to a suggestion."
[4]: https://www.debian.org/doc/debian-policy/ch-opersys.html
[5]: https://github.com/ROCm-Developer-Tools/HIP/blob/rocm-5.2.0/bin/hipcc.pl#L191-L193
[6]: https://github.com/ROCm-Developer-Tools/hipamd/blob/rocm-5.2.0/src/hiprtc/hiprtcInternal.cpp#L44-L49
[7]: https://github.com/ROCm-Developer-Tools/hipamd/blob/rocm-5.2.0/src/hip_context.cpp#L202-L213


Reply to: