jhuber6 added a comment.

In D140158#3999783 <https://reviews.llvm.org/D140158#3999783>, @tra wrote:

> In D140158#3999716 <https://reviews.llvm.org/D140158#3999716>, @jhuber6 wrote:
>
>> I just realized the method of copying the `.o` to a `.cubin` doesn't work if 
>> the link step is done in the same compilation because it doesn't exist yet. 
>> To fix this I could either make the tool chain emit `.cubin` if we're going 
>> straight to `nvlink`, or use a symbolic link. The former is uglier, the 
>> latter will probably only work on Linux.
>
> Does it have to be `.cubin` ? Does nvlink require it?

Yes, it's one of the dumbest things in the CUDA toolchain. If the filename is a 
`.o` they assume it's a host file containing embedded RDC-code that needs to be 
combined. If it's a `.cubin` they assume it's device code. I have no clue why 
they couldn't just check the ELF flags, it's trivial.

>> Also do you think I should include the CUDA headers in with this? We can 
>> always get rid of them with `nogpuinc` or similar if they're not needed. The 
>> AMDGPU compilation still links in the device libraries so I'm wondering if 
>> we should at least be consistent.
>
> Only some CUDA headers can be used from C++ and they tend to contain 
> host-only declarations, and stubs or CPU implementations of GPU-side 
> functions in that case.
> The rest rely on CUDA extensions, attributes, So, in this case doing a C++ 
> compilation will give you a host-side view of the headers in the best case, 
> which is not going to be particularly useful.
>
> If we want to make GPU-side functions available, we'll need to have a 
> pre-included wrapper with more preprocessor magic to make CUDA headers 
> usable.  Doing that in a C++ compilation would be questionable as for a C++ 
> compilation a user would normally assume that no headers are pre-included by 
> the compiler.

We might want to at least include the `libdevice` files, most of our wrappers 
definitely won't work without CUDA or OpenMP language modes.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D140158

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to