[clang] [clang-linker-wrapper] Pass on --cuda-path to child clang processes (PR #149107)
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 16 10:03:00 PDT 2025
jhuber6 wrote:
> ```
> (ins)$ /opt/llvm/install/release/bin/clang --verbose -foffload-via-llvm --cuda-path=/usr/local/cuda input.o -o a.out |& head -n 50
> clang version 21.0.0git (https://github.com/llvm/llvm-project.git 6ac286cd491b419dd18a6e8de3aaef4caa44e093)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /opt/llvm/install/release/bin
> Build config: +assertions
> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
> Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
> Candidate multilib: .;@m64
> Selected multilib: .;@m64
> Found CUDA installation: /usr/local/cuda, version 12.8
> "/opt/llvm/install/release/bin/clang-linker-wrapper" --host-triple=x86_64-unknown-linux-gnu --wrapper-verbose --cuda-path=/usr/local/cuda --linker-path=/usr/bin/ld -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/opt/llvm/install/release/bin/../lib/x86_64-unknown-linux-gnu -L/opt/llvm/install/release/lib/clang/21/lib/x86_64-unknown-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib64 -L/lib -L/usr/lib -L/usr/local/cuda-12.8/lib/clang/21/lib/x86_64-unknown-linux-gnu/ -L/usr/local/cuda-12.8/lib/clang/20/lib/x86_64-unknown-linux-gnu/ -L/usr/local/cuda-12.8/lib/clang/19/lib/x86_64-unknown-linux-gnu/ -L/usr/local/cuda-12.8/lib/clang/18/lib/x86_64-unknown-linux-gnu/ -L/usr/local/cuda-12.8/lib/linux/ -L/usr/local/cuda-12.8/lib/ -L/opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/21/lib/x86_64-unknown-linux-gnu/ -L/opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/20/lib/x86_64-unknown-linux-gnu/ -L/opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/19/lib/x86_64-unknown-linux-gnu/ -L/opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/18/lib/x86_64-unknown-linux-gnu/ -L/opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/linux/ -L/opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/ -L. input.o -lomptarget -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o -verbose
> "/opt/llvm/install/release/bin/clang" --no-default-config -o /tmp/a.out.nvptx64.sm_89-9e8377.img --target=nvptx64-nvidia-cuda -march=sm_89 /tmp/input-nvptx64-nvidia-cuda-sm_89-58597a.o
> "/usr/bin/ld" -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /tmp/a.out.openmp.image.wrapper-e1b944.o /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L /opt/llvm/install/release/bin/../lib/x86_64-unknown-linux-gnu -L /opt/llvm/install/release/lib/clang/21/lib/x86_64-unknown-linux-gnu -L /usr/lib/gcc/x86_64-linux-gnu/12 -L /usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L /lib/x86_64-linux-gnu -L /lib/../lib64 -L /usr/lib/x86_64-linux-gnu -L /usr/lib64 -L /lib -L /usr/lib -L /usr/local/cuda-12.8/lib/clang/21/lib/x86_64-unknown-linux-gnu/ -L /usr/local/cuda-12.8/lib/clang/20/lib/x86_64-unknown-linux-gnu/ -L /usr/local/cuda-12.8/lib/clang/19/lib/x86_64-unknown-linux-gnu/ -L /usr/local/cuda-12.8/lib/clang/18/lib/x86_64-unknown-linux-gnu/ -L /usr/local/cuda-12.8/lib/linux/ -L /usr/local/cuda-12.8/lib/ -L /opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/21/lib/x86_64-unknown-linux-gnu/ -L /opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/20/lib/x86_64-unknown-linux-gnu/ -L /opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/19/lib/x86_64-unknown-linux-gnu/ -L /opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/clang/18/lib/x86_64-unknown-linux-gnu/ -L /opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/linux/ -L /opt/prebuilt/clang/llvm-17.0.6/Linux_x86_64/lib/ -L . input.o -l omptarget -l gcc --as-needed -l gcc_s --no-as-needed -l c -l gcc --as-needed -l gcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o -verbose
> GNU ld (GNU Binutils for Ubuntu) 2.38
> <rest is ld output>
> ```
I see, this is because there's no CUDA toolchain that's created in this case. Normally the `.cu` file will create an offloading toolchain, but we don't get that here because it doesn't recognize the `.o` as CUDA and thus never creates the toolchain. Hm, I wonder if there's a real saitsfactory solution to that.
https://github.com/llvm/llvm-project/pull/149107
More information about the cfe-commits
mailing list