[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