[PATCH] D143306: [Driver] Default to -fno-openmp-implicit-rpath

Johannes Doerfert via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 22 11:58:54 PST 2023


jdoerfert added a comment.

In D143306#4145465 <https://reviews.llvm.org/D143306#4145465>, @MaskRay wrote:

> In D143306#4144541 <https://reviews.llvm.org/D143306#4144541>, @jdoerfert wrote:
>
>> I'm worried this makes use of LLVM on HPC machines even harder. That said, I'm open to suggestions and I am not well versed in all the ways we can make it work.
>> Our problem is that there are N `libomptarget.so` files and N `libomptarget.nvptx.so` files on a system, including in system directories and in directories you have on your LD_LIBRARY_PATH.
>> However, we want a clang to pick up its own versions of those files. The former is linked into clang, the latter is dynamically loaded with dlopen. That is, IIRC, roughly our use case.
>>
>>> I'd argue that such systems should specify -Wl,-rpath explicitly or in a Clang configuration file.
>>
>> Could you work me through this, please. We can't install a config file in a user or system directory. So all we have is the clang install directory.
>> Should we not set this flag but then install a file (by default) that says `-Wl,-rpath=...`. Is that what you mean? If so, what's the difference for the user?
>> Or would we add `--offload-add-rpath` to the clang build if OpenMP offload is enabled?
>
> This part of https://clang.llvm.org/docs/UsersManual.html#configuration-files is relevant "... is searched for sequentially in the directories".
>
> Say my `clang` executable is at `/tmp/opt/Rel/bin/clang`. I can just create `/tmp/opt/Rel/bin/clang.cfg` with one line `-Wl,-rpath=/tmp/opt/Rel/lib` (there is no magic expansion as in a shell).
> Invoking `/tmp/opt/Rel/bin/clang` will get this default option (without an unused command line option warning) unless `--no-default-config` is specified.
> The difference is that the rpath is now the default, instead of only when `-fopenmp=libomp` is specified. But such HPC users don't appear to be averse to rpath as much as we do.
>
> It should be fairly trivial to adjust one's llvm-project build/install script to create such a `clang.cfg` file.

@jhuber6 Can you look into the last part, creating such a clang.cfg as part of the build/install process?

The fact that rpath is always set is a difference but I doubt it's that bad. We effectively point only to the llvm runtimes, which should be what users want anyway.
If this is really a problem, maybe we can/should separate the OpenMP runtimes into a subfolder and rpath (-L) that one. Users get by default the OpenMP runtimes associated with the clang, but we would not pollute anything else.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D143306



More information about the cfe-commits mailing list