alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
memoryOrder.hpp
Go to the documentation of this file.
1/* Copyright 2025 Mehmet Yusufoglu, René Widera
2 * SPDX-License-Identifier: MPL-2.0
3 */
4
5#pragma once
6
9
10#include <type_traits>
11
12// Top-level guard needed because including sycl headers is needed
13#if ALPAKA_LANG_SYCL
14# include <sycl/sycl.hpp>
15
17{
18 struct MemOrderSycl
19 {
20 template<concepts::MemoryOrder TMemOrder>
21 static constexpr auto get(TMemOrder const)
22 {
23 if constexpr(std::same_as<TMemOrder, order::SeqCst>)
24 {
25 return sycl::memory_order::seq_cst;
26 }
27 if constexpr(std::same_as<TMemOrder, order::AcqRel>)
28 {
29 return sycl::memory_order::acq_rel;
30 }
31 if constexpr(std::same_as<TMemOrder, order::Release>)
32 {
33 return sycl::memory_order::release;
34 }
35 if constexpr(std::same_as<TMemOrder, order::Acquire>)
36 {
37 return sycl::memory_order::acquire;
38 }
39 if constexpr(std::same_as<TMemOrder, order::Relaxed>)
40 {
41 return sycl::memory_order::relaxed;
42 }
43 }
44 };
45} // namespace alpaka::onAcc::internalCompute
46
47#endif // ALPAKA_LANG_SYCL
constexpr decltype(auto) get(concepts::SpecializationOf< Dict > auto &t) noexcept
Definition Dict.hpp:151