[PATCH] D129655: [CUDA] Allow the new driver to compile CUDA in non-RDC mode
Artem Belevich via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 13 12:36:59 PDT 2022
tra added a comment.
Nice.
================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:6999
+ if (IsRDCMode)
+ CmdArgs.push_back("-fgpu-rdc");
+ } else if (IsCuda && !HostOffloadingInputs.empty() && !IsRDCMode) {
----------------
This should not be necessary -- we've already added it for all CUDA/HIP compilations above.
================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:7003
+ CmdArgs.push_back(HostOffloadingInputs.front().getFilename());
+ } else {
+ for (const InputInfo Input : HostOffloadingInputs)
----------------
I'm not sure I understand when we'd end up in this "else" branch.
Perhaps the whole sequence could be restructured this way:
```
if ((IsCuda || IsHIP) && CudaDeviceInput) { // old-style embedding
CmdArgs.push_back("-fcuda-include-gpubinary");
CmdArgs.push_back(CudaDeviceInput->getFilename());
} else if (!HostOffloadingInputs.empty()) { // new-driver offloading mode
if (Cuda && !IsRDCMode) {
assert(HostOffloadingInputs.size() == 1); // We should have only one GPU fatbinary to embed. Uses old-style embedding.
CmdArgs.push_back("-fcuda-include-gpubinary");
CmdArgs.push_back(HostOffloadingInputs.front().getFilename());
} else { // new driver embedding of GPU object files.
for (const InputInfo Input : HostOffloadingInputs)
CmdArgs.push_back(Args.MakeArgString("-fembed-offload-object=" +
TC.getInputFilename(Input)));
}
}
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D129655/new/
https://reviews.llvm.org/D129655
More information about the cfe-commits
mailing list