clang and CUDA problem

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

clang and CUDA problem

Kristof Beyls via cfe-dev
At
https://llvm.org/docs/CompileCudaWithLLVM.html#detecting-clang-vs-nvcc-from-code 
the clang doc tells me that when compiling a CUDA file with clang,
whether in device or host mode, the predefined macros are __clang__ ,
__CUDA__ , and __CUDACC__ . Yet testing this with clang_cuda_example.cu as:

#if !defined(__clang__)
#if !defined(__CUDACC__)
#if !defined(__CUDA__)
#error The predefined macros __clang__ and __CUDACC__ and __CUDA__ are
not defined
#else
#error The predefined macros __clang__ and __CUDACC__ are not defined
#endif
#elif !defined(__CUDA__)
#error The predefined macros __clang__ and __CUDA__ are not defined
#else
#error The predefined macro __clang__ is not defined
#endif
#elif !defined(__CUDACC__)
#if !defined(__CUDA__)
#error The predefined macros __CUDACC__ and __CUDA__ are not defined
#else
#error The predefined macro __CUDACC__ is not defined
#endif
#elif !defined(__CUDA__)
#error The predefined macro __CUDA__ is not defined
#endif
int main(void) { return 0; }

using the command line:

clang++ -c -m64 -nocudainc -nocudalib -x cuda clang_cuda_example.cu

the result is:

clang_cuda_example.cu:17:2: error: The predefined macro __CUDACC__ is
not defined
#error The predefined macro __CUDACC__ is not defined
  ^
1 error generated when compiling for sm_20.

In other words the macro __CUDACC__ is not defined. Do I need to alter
my example CUDA file so that __CUDACC__ is defined, and if so how ? I
realize my CUDA file contain no CUDA code and does not include a CUDA
header file, but the goal of the file, which has other purposes in
actual testing, is to test that the predefined macros which the clang
CUDA documentation says are defined when compiling a CUDA file are
actually defined.


_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev