CUDA include Error

Hi there,

I am working on a project on Windows which successfully included a ABC.hxx file in a .h file. It can be built in VS and run properly. I tried to include the same .hxx file in another .h file, by mimicking the previous work. The including section is like:

#include <cuda.h>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
#include <typeinfo>
#include <cuda_fp16.h>
#include "inc/Core/Common/cuda/ABC.hxx"

But got the following error message during building solution in VS:

1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\detail\device_synchronize.cuh(33,9): warning C4068: unknown pragma 'nv_exec_check_disable'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(89,55): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(104,55): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(166,40): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(176,49): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(210,37): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(221,9): error C2059: syntax error: 'volatile'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(229,5): error C3861: '__syncthreads': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(238,12): error C3861: '__syncthreads_and': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(247,12): error C3861: '__syncthreads_or': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(257,5): error C3861: '__syncwarp': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(268,12): error C3861: '__any_sync': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(281,12): error C3861: '__all_sync': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(294,12): error C3861: '__ballot_sync': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(308,9): error C2059: syntax error: 'volatile'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(324,9): error C2059: syntax error: 'volatile'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(340,9): error C2059: syntax error: 'volatile'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(356,10): error C3861: '__shfl_sync': identifier not found
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(368,35): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(379,39): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(389,9): error C2059: syntax error: 'volatile'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(397,9): error C2059: syntax error: 'volatile'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(418,34): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(429,34): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(471,39): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(481,39): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(491,39): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(501,39): error C2059: syntax error: ':'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(567,13): warning C4068: unknown pragma 'unroll'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(635,13): warning C4068: unknown pragma 'unroll'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(709,13): warning C4068: unknown pragma 'unroll'
1>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include\cub\util_ptx.cuh(735,13): warning C4068: unknown pragma 'unroll'
...

I am a little bit confused by the big difference in including the same ABC.hxx file. Can anyone explain why does it come out so differently?

CUDA11.6, Windows 11 64bit, Visual Studio 2019 (tool v142 for VS 2019)

You mean you’d like someone to guess at the contents of a putative ABC.hxx file that could lead to such output?

It’s evident that your trouble here is attempting to compile cub header files using cl.exe

Therefore I would guess that one way or another the ABC.hxx file includes some cub header files. The .cuh is a dead giveaway that such header files are not intended to be compiled by an ordinary C++ compiler.

Somehow your ABC.hxx file is allowing that. I imagine there could be multiple possible mechanisms. For example:

#ifdef __NVCC__
#include <cub/cub.cuh>
#endif

I’m sure there are other possible mechanisms, as well.

1 Like

Yes, I was wondering why VS is giving such error messages. I do see some files included in ABC.hxx has cub.cuh included as you mentioned. However, what confuses me more is I can compile ABC.hxx when it’s included in A.h, but not in B.h. Do you know what could cause the difference?
Also, If I want to use something in cub, like cub::BlockRadixSort, in my hxx, what is the proper way to avoid compile error?

I think I figured it out. When both including ABC.hxx, A.h can build while B.h cannot, is because the .cpp file including A.h was specified to be compiled in CUDA.
I added the .cpp files which are using B.h into CudaCompile, and the build succeed.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.