[PATCH] D38883: [CMake][OpenMP] Customize default offloading arch
Jonas Hahnfeld via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 13 10:15:28 PDT 2017
Hahnfeld marked an inline comment as done.
Hahnfeld added inline comments.
================
Comment at: lib/Driver/ToolChains/Cuda.cpp:170-182
- // This code prevents IsValid from being set when
- // no libdevice has been found.
- bool allEmpty = true;
- std::string LibDeviceFile;
- for (auto key : LibDeviceMap.keys()) {
- LibDeviceFile = LibDeviceMap.lookup(key);
- if (!LibDeviceFile.empty())
----------------
tra wrote:
> I'd keep this code. It appears to serve useful purpose as it requires CUDA installation to have at least some libdevice library in it. It gives us a change to find a valid installation, instead of ailing some time later when we ask for a libdevice file and fail because there are none.
We had some internal discussions about this after I submitted the patch here.
The main question is: Do we want to support CUDA installations without libdevice and are there use cases for that? I'd say that the user should be able to use a toolchain without libdevice together with `-nocudalib`.
================
Comment at: lib/Driver/ToolChains/Cuda.cpp:540
// Also append the compute capability.
if (DeviceOffloadKind == Action::OFK_OpenMP) {
for (Arg *A : Args){
----------------
This check guards the whole block.
================
Comment at: lib/Driver/ToolChains/Cuda.cpp:556
+ DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_march_EQ),
+ CLANG_OPENMP_NVPTX_DEFAULT_ARCH);
}
----------------
tra wrote:
> This sets default GPU arch for *everyone* based on OPENMP requirements. Perhaps this should be predicated on this being openmp compilation.
>
> IMO to avoid unnecessary surprises, the default for CUDA compilation should follow defaults of nvcc. sm_30 becomes default only in CUDA-9.
>
This branch is only executed for OpenMP, see above
https://reviews.llvm.org/D38883
More information about the cfe-commits
mailing list