the error above is reported when CMake cannot detect clang as the cuda compiler. The issue can be worked around by -DCMAKE_CUDA_FLAGS=-std=c++17
because __float128 is a GNU extenstion coming from -std=gnu++17
. The CMake developers say(here) that using GNU extensions is clang’s default and hence not their problem. My question is, should this not work “out of the box”, without me having to manually set the standard to disable GNU extensions? Is there a configure option when compiling clang to tell it not to use GNU extensions to the standard?
details:cmake 3.22.0, llvm-project from git on July 27 2023, cuda 12.0
CMake Error at /global/common/software/nersc/pm-2021q4/sw/cmake-3.22.0/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake:726 (message):
Compiling the CUDA compiler identification source file
"CMakeCUDACompilerId.cu" failed.
Compiler:
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/bin/clang++
Build flags:
Id flags:
--cuda-path=/opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0;--cuda-gpu-arch=sm_80
-v
The output was:
1
clang version 18.0.0 (https://github.com/llvm/llvm-project.git
2f976b921071cf4349175554f690798a0d2b81f3)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir:
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/bin
Found candidate GCC installation: /usr/lib64/gcc/x86_64-suse-linux/7
Selected GCC installation: /usr/lib64/gcc/x86_64-suse-linux/7
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0,
version 12.0
clang++: warning: CUDA version 12.0 is only partially supported
[-Wunknown-cuda-version]
"/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/bin/clang-18" -cc1 -triple nvptx64-nvidia-cuda -aux-triple x86_64-unknown-linux-gnu -S -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCUDACompilerId.cu -mrelocation-model static -mframe-pointer=all -fno-rounding-math -no-integrated-as -aux-target-cpu x86-64 -fcuda-is-device -mllvm -enable-memcpyopt-without-libcalls -fcuda-allow-variadic-functions -mlink-builtin-bitcode /opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0/nvvm/libdevice/libdevice.10.bc -target-sdk-version=12.0 -target-cpu sm_80 -target-feature +ptx80 -debugger-tuning=gdb -fno-dwarf-directory-asm -v -resource-dir /global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18 -internal-isystem /global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include/cuda_wrappers -include __clang_cuda_runtime_wrapper.h -I/opt/nvidia/hpc_sdk/Linux_x86_64/23.1/math_libs/12.0/include -I/opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0/include -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7 -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/x86_64-suse-linux -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/backward -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7 -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/x86_64-suse-linux -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/backward -internal-isystem /global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0/include -internal-isystem /global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fno-autolink -fdebug-compilation-dir=/pscratch/sd/l/loring/sensei-build-clang_cuda_omp/CMakeFiles/3.22.0/CompilerIdCUDA -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -cuid=8589b7722c49d3d4 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/CMakeCUDACompilerId-sm_80-eb7a2e.s -x cuda CMakeCUDACompilerId.cu
clang -cc1 version 18.0.0 based upon LLVM 18.0.0git default target
x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/include"
ignoring duplicate directory
"/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7"
ignoring duplicate directory
"/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/x86_64-suse-linux"
ignoring duplicate directory
"/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/backward"
ignoring duplicate directory
"/opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0/include"
as it is a non-system directory that duplicates a system directory
ignoring duplicate directory
"/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory
"/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
/opt/nvidia/hpc_sdk/Linux_x86_64/23.1/math_libs/12.0/include
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include/cuda_wrappers
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/x86_64-suse-linux
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/backward
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include
/usr/local/include
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/include
/usr/include
/opt/nvidia/hpc_sdk/Linux_x86_64/23.1/cuda/12.0/include
End of search list.
In file included from <built-in>:1:
In file included from
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include/__clang_cuda_runtime_wrapper.h:41:
In file included from
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include/cuda_wrappers/cmath:27:
In file included from
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/cmath:47:
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/std_abs.h:102:7:
error: __float128 is not supported on this target
102 | abs(__float128 __x)
| ^
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/std_abs.h:101:3:
error: __float128 is not supported on this target
101 | __float128
| ^
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/std_abs.h:102:18:
note: '__x' defined here
102 | abs(__float128 __x)
| ^
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/std_abs.h:102:18:
note: '__x' defined here
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/std_abs.h:102:18:
note: '__x' defined here
In file included from <built-in>:1:
In file included from
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include/__clang_cuda_runtime_wrapper.h:41:
In file included from
/global/common/software/nersc/pm-stable/sw/clang/v17-July-27-2023/lib/clang/18/include/cuda_wrappers/cmath:27:
In file included from
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/cmath:1914:
In file included from
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/specfun.h:45:
In file included from
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/stl_algobase.h:64:
In file included from
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/stl_pair.h:59:
In file included from
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/bits/move.h:54:
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../include/c++/7/type_traits:347:39:
error: __float128 is not supported on this target
347 | struct __is_floating_point_helper<__float128>
| ^
3 errors generated when compiling for sm_80.
Call Stack (most recent call first):
/global/common/software/nersc/pm-2021q4/sw/cmake-3.22.0/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake:6 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
/global/common/software/nersc/pm-2021q4/sw/cmake-3.22.0/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake:48 (__determine_compiler_id_test)
/global/common/software/nersc/pm-2021q4/sw/cmake-3.22.0/share/cmake-3.22/Modules/CMakeDetermineCUDACompiler.cmake:298 (CMAKE_DETERMINE_COMPILER_ID)
CMake/cuda.cmake:17 (enable_language)
CMakeLists.txt:7 (include)