[PATCH] D115039: [HIP] Fix -fgpu-rdc for Windows

Yaxun Liu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 6 12:12:00 PST 2021


yaxunl added a comment.

In D115039#3174154 <https://reviews.llvm.org/D115039#3174154>, @tra wrote:

>> Put __hip_gpubin_handle in comdat when it has linkonce_odr linkage.
>
> I wonder when would this happen? I'm not sure we ever want gpubin handles from different TUs merged.  I think it may result in different TUs attempting to load/init the same GPU binary multiple times.

For -fgpu-rdc case, `__hip_gpubin_handle` is a global variable shared by all TU. This is because in the global ctor function for each TU there is logic like

  void init_fun() {
    if (__hip_gpubin_handle)
       __hip_gpubin_handle = __hipRegisterFatbinary(__hip_fatbin);
  }

Since all TU share the same `__hip_fatbin`, we need this to avoid duplicate registration of `__hip_fatbin`. Since `__hip_gpubin_handle` needs to be defined in each TU, we let them have linkonce_odr linkage to force them merged. On Windows, this also requires comdat.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D115039/new/

https://reviews.llvm.org/D115039



More information about the cfe-commits mailing list