18# include <sycl/sycl.hpp>
20# include <type_traits>
24 template<alpaka::concepts::Api T_Api, concepts::Scope T_Scope, concepts::MemoryOrder T_Order>
25 requires(std::is_base_of_v<api::GenericSycl<T_Api>, T_Api>)
28 constexpr void operator()(onAcc::concepts::Acc
auto const&, T_Scope
const, T_Order
const order)
const
30 if constexpr(std::is_same_v<T_Scope, scope::Block>)
32 sycl::atomic_fence(MemOrderSycl::get(order), sycl::memory_scope::work_group);
34 else if constexpr(std::is_same_v<T_Scope, scope::Device>)
36 sycl::atomic_fence(MemOrderSycl::get(order), sycl::memory_scope::device);
38 else if constexpr(std::is_same_v<T_Scope, scope::System>)
41 sycl::atomic_fence(MemOrderSycl::get(order), sycl::memory_scope::system);