Skip to content

Commit

Permalink
Fix issues with nvrtc compilation (#3666)
Browse files Browse the repository at this point in the history
* Disable use of builtin `__remove_reference_t` for nvrtc below 12.4

NVRTC does not support it properly, so remove it to unblock cuPy

* Use correct warning pragma for nvrtc

* Also suppress `__remove_cvref`
  • Loading branch information
miscco authored Feb 4, 2025
1 parent c3a7f67 commit 7229e0b
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion cub/cub/util_cpp_dialect.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
# define CUB_CPP_DIALECT _CCCL_STD_VER

// Define CUB_COMPILER_DEPRECATION macro:
# if _CCCL_COMPILER(MSVC)
# if _CCCL_COMPILER(MSVC) || _CCCL_COMPILER(NVRTC)
# define CUB_COMP_DEPR_IMPL(msg) _CCCL_PRAGMA(message(__FILE__ ":" _CCCL_TO_STRING(__LINE__) ": warning: " #msg))
# else // clang / gcc:
# define CUB_COMP_DEPR_IMPL(msg) _CCCL_PRAGMA(GCC warning #msg)
Expand Down
8 changes: 8 additions & 0 deletions libcudacxx/include/cuda/std/__cccl/builtin.h
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,10 @@
# define _CCCL_BUILTIN_REMOVE_CVREF(...) __remove_cvref(__VA_ARGS__)
#endif // _CCCL_HAS_BUILTIN(__remove_cvref)

#if _CCCL_COMPILER(NVRTC, <, 12, 4) // NVRTC below 12.4 fails to properly compile that builtin
# undef _CCCL_BUILTIN_REMOVE_CVREF
#endif // _CCCL_COMPILER(NVRTC, <, 12, 4)

#if _CCCL_HAS_BUILTIN(__remove_extent) && _CCCL_CUDA_COMPILER(CLANG)
# define _CCCL_BUILTIN_REMOVE_EXTENT(...) __remove_extent(__VA_ARGS__)
#endif // _CCCL_HAS_BUILTIN(__remove_extent)
Expand All @@ -884,6 +888,10 @@
# define _CCCL_BUILTIN_REMOVE_REFERENCE_T(...) __remove_reference_t(__VA_ARGS__)
#endif // _CCCL_HAS_BUILTIN(__remove_reference_t)

#if _CCCL_COMPILER(NVRTC, <, 12, 4) // NVRTC below 12.4 fails to properly compile cuda::std::move with that
# undef _CCCL_BUILTIN_REMOVE_REFERENCE_T
#endif // _CCCL_COMPILER(NVRTC, <, 12, 4)

#if _CCCL_HAS_BUILTIN(__remove_volatile) && _CCCL_CUDA_COMPILER(CLANG)
# define _CCCL_BUILTIN_REMOVE_VOLATILE(...) __remove_volatile(__VA_ARGS__)
#endif // _CCCL_HAS_BUILTIN(__remove_volatile)
Expand Down
2 changes: 1 addition & 1 deletion libcudacxx/include/cuda/std/__internal/cpp_dialect.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#endif // no system header

// Define LIBCUDACXX_COMPILER_DEPRECATION macro:
#if _CCCL_COMPILER(MSVC)
#if _CCCL_COMPILER(MSVC) || _CCCL_COMPILER(NVRTC)
# define LIBCUDACXX_COMP_DEPR_IMPL(msg) \
_CCCL_PRAGMA(message(__FILE__ ":" _CCCL_TO_STRING(__LINE__) ": warning: " #msg))
#else // ^^^ _CCCL_COMPILER(MSVC) ^^^ / vvv !_CCCL_COMPILER(MSVC) vvv
Expand Down
2 changes: 1 addition & 1 deletion thrust/thrust/detail/config/cpp_dialect.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#define THRUST_CPP_DIALECT _CCCL_STD_VER

// Define THRUST_COMPILER_DEPRECATION macro:
#if _CCCL_COMPILER(MSVC)
#if _CCCL_COMPILER(MSVC) || _CCCL_COMPILER(NVRTC)
# define THRUST_COMP_DEPR_IMPL(msg) _CCCL_PRAGMA(message(__FILE__ ":" _CCCL_TO_STRING(__LINE__) ": warning: " #msg))
#else // clang / gcc:
# define THRUST_COMP_DEPR_IMPL(msg) _CCCL_PRAGMA(GCC warning #msg)
Expand Down

0 comments on commit 7229e0b

Please sign in to comment.