|
22 | 22 |
|
23 | 23 | #pragma once
|
24 | 24 |
|
25 |
| -#include <thrust/detail/config/config.h> |
| 25 | +#include <thrust/detail/config/preprocessor.h> |
26 | 26 |
|
27 | 27 | // This is a utility file that helps managing which
|
28 | 28 | // 'std' implementation we're using. The provided
|
|
33 | 33 | // #include _THRUST_STD_INCLUDE(optional)
|
34 | 34 | // using optional_int = _THRUST_STD::optional<int>;
|
35 | 35 |
|
36 |
| -// When targeting CUDA, we want to use 'libcudacxx'. This |
37 |
| -// should always be available, since we are also dependent |
38 |
| -// on CCCL/thrust, which is a sibling of CCCL/libcudacxx. |
39 |
| -#if THRUST_DEVICE_SYSTEM == THRUST_DEVICE_SYSTEM_CUDA |
| 36 | +// If 'libcudacxx' is available |
| 37 | +// clang-format off |
| 38 | +#if THRUST_HAS_INCLUDE(<cuda/std/cassert>) |
| 39 | +// clang-format on |
| 40 | +# define _THRUST_LIBCXX_INCLUDE(LIB) <cuda/LIB> |
40 | 41 | # define _THRUST_STD_INCLUDE(LIB) <cuda/std/LIB>
|
| 42 | +# define _THRUST_LIBCXX ::cuda |
41 | 43 | # define _THRUST_STD _CUDA_VSTD
|
42 | 44 | # define _THRUST_HAS_DEVICE_SYSTEM_STD 1
|
43 | 45 | # define _THRUST_STD_NAMESPACE_BEGIN _LIBCUDACXX_BEGIN_NAMESPACE_STD
|
44 | 46 | # define _THRUST_STD_NAMESPACE_END _LIBCUDACXX_END_NAMESPACE_STD
|
45 | 47 |
|
46 |
| -// When targeting HIP, we want to use 'libhipcxx' if |
47 |
| -// available. We can do this by checking the existance |
48 |
| -// of a known include. |
49 |
| -#elif THRUST_DEVICE_SYSTEM == THRUST_DEVICE_SYSTEM_HIP |
50 |
| -# if defined(__has_include) && __has_include(<hip/std/cassert>) |
51 |
| -# define _THRUST_STD_INCLUDE(LIB) <hip/std/LIB> |
52 |
| -# define _THRUST_STD ::hip::std |
53 |
| -# define _THRUST_HAS_DEVICE_SYSTEM_STD 1 |
54 |
| -# define _THRUST_STD_NAMESPACE_BEGIN _LIBCUDACXX_BEGIN_NAMESPACE_STD |
55 |
| -# define _THRUST_STD_NAMESPACE_END _LIBCUDACXX_END_NAMESPACE_STD |
56 |
| -# endif |
| 48 | +// If 'libhipcxx' is available |
| 49 | +// clang-format off |
| 50 | +#elif THRUST_HAS_INCLUDE(<hip/std/cassert>) |
| 51 | +// clang-format on |
| 52 | +# define _THRUST_LIBCXX_INCLUDE(LIB) <hip/LIB> |
| 53 | +# define _THRUST_STD_INCLUDE(LIB) <hip/std/LIB> |
| 54 | +# define _THRUST_LIBCXX ::hip |
| 55 | +# define _THRUST_STD ::hip::std |
| 56 | +# define _THRUST_HAS_DEVICE_SYSTEM_STD 1 |
| 57 | +# define _THRUST_STD_NAMESPACE_BEGIN _LIBCUDACXX_BEGIN_NAMESPACE_STD |
| 58 | +# define _THRUST_STD_NAMESPACE_END _LIBCUDACXX_END_NAMESPACE_STD |
57 | 59 | #endif
|
58 | 60 |
|
59 |
| -// If not using GPU backend or GPU vendor's STD is not |
60 |
| -// found, use fallback. |
| 61 | +// If 'libcudacxx' or 'libhipcxx' is not found, use fallback. |
61 | 62 | #ifndef _THRUST_HAS_DEVICE_SYSTEM_STD
|
62 |
| -# define _THRUST_STD_INCLUDE(LIB) <LIB> |
| 63 | +# define _THRUST_LIBCXX_INCLUDE(LIB) |
| 64 | +# define _THRUST_STD_INCLUDE(LIB) <LIB> |
| 65 | +# define _THRUST_LIBCXX |
63 | 66 | # define _THRUST_STD ::std
|
64 | 67 | # define _THRUST_HAS_DEVICE_SYSTEM_STD 0
|
65 | 68 | # define _THRUST_STD_NAMESPACE_BEGIN \
|
|
0 commit comments