20 #ifndef policy_sycl_HPP
21 #define policy_sycl_HPP
23 #include "RAJA/config.hpp"
25 #if defined(RAJA_SYCL_ACTIVE)
42 unsigned long x,
y,
z;
45 using sycl_dim_t = ::sycl::range<1>;
47 using sycl_dim_3_t = uint3;
58 struct get_launch<false>
76 template<
size_t BLOCK_SIZE,
bool Async = false>
79 RAJA::Pattern::forall,
80 detail::get_launch<Async>::value,
84 template<
bool Async,
int num_threads = 0>
87 RAJA::Pattern::region,
88 detail::get_launch<Async>::value,
100 template<
typename host_policy>
101 struct sycl_atomic_explicit
108 using sycl_atomic = sycl_atomic_explicit<seq_atomic>;
110 template<
typename Mask>
111 struct sycl_local_masked_direct
114 template<
typename Mask>
115 struct sycl_local_masked_loop
121 using policy::sycl::sycl_exec;
122 using policy::sycl::sycl_reduce;
124 using policy::sycl::sycl_atomic;
125 using policy::sycl::sycl_atomic_explicit;
127 using policy::sycl::sycl_local_masked_direct;
128 using policy::sycl::sycl_local_masked_loop;
130 using policy::sycl::sycl_launch_t;
136 template<
int dim,
int WORK_GROUP_SIZE = 1>
137 struct sycl_global_012
140 template<
int WORK_GROUP_SIZE>
141 using sycl_global_0 = sycl_global_012<0, WORK_GROUP_SIZE>;
142 template<
int WORK_GROUP_SIZE>
143 using sycl_global_1 = sycl_global_012<1, WORK_GROUP_SIZE>;
144 template<
int WORK_GROUP_SIZE>
145 using sycl_global_2 = sycl_global_012<2, WORK_GROUP_SIZE>;
152 struct sycl_group_012_loop
155 using sycl_group_0_loop = sycl_group_012_loop<0>;
156 using sycl_group_1_loop = sycl_group_012_loop<1>;
157 using sycl_group_2_loop = sycl_group_012_loop<2>;
164 struct sycl_local_012_loop
167 using sycl_local_0_loop = sycl_local_012_loop<0>;
168 using sycl_local_1_loop = sycl_local_012_loop<1>;
169 using sycl_local_2_loop = sycl_local_012_loop<2>;
175 struct sycl_group_012_direct
178 using sycl_group_0_direct = sycl_group_012_direct<0>;
179 using sycl_group_1_direct = sycl_group_012_direct<1>;
180 using sycl_group_2_direct = sycl_group_012_direct<2>;
186 struct sycl_local_012_direct
189 using sycl_local_0_direct = sycl_local_012_direct<0>;
190 using sycl_local_1_direct = sycl_local_012_direct<1>;
191 using sycl_local_2_direct = sycl_local_012_direct<2>;
197 struct SyclDimHelper;
200 struct SyclDimHelper<0>
203 template<
typename dim_t>
204 inline static constexpr
auto get(dim_t
const& d) -> decltype(d.x)
209 template<
typename dim_t>
210 inline static void set(dim_t& d,
int value)
217 struct SyclDimHelper<1>
220 template<
typename dim_t>
221 inline static constexpr
auto get(dim_t
const& d) -> decltype(d.x)
226 template<
typename dim_t>
227 inline static void set(dim_t& d,
int value)
234 struct SyclDimHelper<2>
237 template<
typename dim_t>
238 inline static constexpr
auto get(dim_t
const& d) -> decltype(d.x)
243 template<
typename dim_t>
244 inline static void set(dim_t& d,
int value)
250 template<
int dim,
typename dim_t>
251 constexpr
auto get_sycl_dim(dim_t
const& d) -> decltype(d.x)
256 template<
int dim,
typename dim_t>
257 void set_sycl_dim(dim_t& d,
int value)
259 return SyclDimHelper<dim>::set(d, value);
Header file for RAJA operator definitions.
Header file for basic RAJA policy mechanics.
Definition: AlignedRangeIndexSetBuilders.cpp:35
Launch
Definition: PolicyBase.hpp:60
RAJA_HOST_DEVICE constexpr RAJA_INLINE RAJA::zip_tuple_element_t< I, zip_tuple< is_val, Ts... > > & get(zip_tuple< is_val, Ts... > &z) noexcept
Definition: zip_tuple.hpp:56
PolicyBaseT< Pol, Pat, Launch::undefined, Platform::undefined, Args... > make_policy_pattern_t
Definition: PolicyBase.hpp:168
Header file containing RAJA sequential policy definitions.
Definition: PolicyBase.hpp:75
RAJA header file for handling different SYCL header include paths.
Header file for RAJA type definitions.