[Openmp-commits] [PATCH] D140783: [OpenMP][AMDGPU] Extract code object version from the ELF
Saiyedul Islam via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Wed Jan 4 00:18:07 PST 2023
saiislam added inline comments.
================
Comment at: openmp/libomptarget/plugins/amdgpu/src/rtl.cpp:128
std::queue<int> FreeKernargSegments;
+ uint16_t CodeObjectVersion;
----------------
JonChesterfield wrote:
> I don't think the memory pool needs to know what format the elf is using
Fixed in the new diff.
`kernargSizeIncludingImplicit()` needs the CodeObjectVersion because size of ImplicitArgs in cov4 is 56 bytes whereas it is 256 bytes in cov5.
================
Comment at: openmp/libomptarget/plugins/amdgpu/src/rtl.cpp:481
std::vector<std::string> TargetID;
+ uint16_t CodeObjectVersion;
----------------
JonChesterfield wrote:
> This is per code object, how does a global scalar capture that?
As we do not support mixing of code object versions, the value remains the same for all.
This field gets set during call to `__tgt_rtl_load_binary_locked()` and is later used as `DeviceInfo().CodeObjectVersion`.
================
Comment at: openmp/libomptarget/plugins/amdgpu/src/rtl.cpp:1382
+
+ if (const auto *ELFObj = dyn_cast<ELF64LEObjectFile>(ElfOrErr->get())) {
+ auto Header = ELFObj->getELFFile().getHeader();
----------------
JonChesterfield wrote:
> This seems likely to be something already available in the elf library
I took the style that two other functions are using for looking up symbols and getting platform flags in this file. *.getHeader() seem to be the simplest way to get the header.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D140783/new/
https://reviews.llvm.org/D140783
More information about the Openmp-commits
mailing list