DPC++ Runtime
Runtime libraries for oneAPI DPC++
properties.hpp
Go to the documentation of this file.
1 //==----- properties.hpp - SYCL properties associated with device_global ---==//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #pragma once
10 
13 
14 namespace sycl {
16 namespace ext::oneapi::experimental {
17 
18 template <typename T, typename PropertyListT> class device_global;
19 
22 };
23 
24 enum class host_access_enum : std::uint16_t { read, write, read_write, none };
25 
27  template <host_access_enum Access>
28  using value_t =
30  std::integral_constant<host_access_enum, Access>>;
31 };
32 
33 enum class init_mode_enum : std::uint16_t { reprogram, reset };
34 
35 struct init_mode_key {
36  template <init_mode_enum Trigger>
37  using value_t =
39  std::integral_constant<init_mode_enum, Trigger>>;
40 };
41 
43  template <bool Enable>
44  using value_t =
46 };
47 
49 
50 template <host_access_enum Access>
60 
61 template <init_mode_enum Trigger>
66 
67 template <bool Enable>
71 
72 template <> struct is_property_key<device_image_scope_key> : std::true_type {};
73 template <> struct is_property_key<host_access_key> : std::true_type {};
74 template <> struct is_property_key<init_mode_key> : std::true_type {};
75 template <> struct is_property_key<implement_in_csr_key> : std::true_type {};
76 
77 template <typename T, typename PropertyListT>
79  device_global<T, PropertyListT>> : std::true_type {};
80 template <typename T, typename PropertyListT>
82  : std::true_type {};
83 template <typename T, typename PropertyListT>
85  : std::true_type {};
86 template <typename T, typename PropertyListT>
88  : std::true_type {};
89 
90 namespace detail {
92  static constexpr PropKind Kind = PropKind::DeviceImageScope;
93 };
94 template <> struct PropertyToKind<host_access_key> {
95  static constexpr PropKind Kind = PropKind::HostAccess;
96 };
97 template <> struct PropertyToKind<init_mode_key> {
98  static constexpr PropKind Kind = PropKind::InitMode;
99 };
101  static constexpr PropKind Kind = PropKind::ImplementInCSR;
102 };
103 
104 template <>
105 struct IsCompileTimeProperty<device_image_scope_key> : std::true_type {};
106 template <> struct IsCompileTimeProperty<host_access_key> : std::true_type {};
107 template <> struct IsCompileTimeProperty<init_mode_key> : std::true_type {};
108 template <>
109 struct IsCompileTimeProperty<implement_in_csr_key> : std::true_type {};
110 
111 template <> struct PropertyMetaInfo<device_image_scope_key::value_t> {
112  static constexpr const char *name = "sycl-device-image-scope";
113  static constexpr std::nullptr_t value = nullptr;
114 };
115 template <host_access_enum Access>
116 struct PropertyMetaInfo<host_access_key::value_t<Access>> {
117  static constexpr const char *name = "sycl-host-access";
118  static constexpr host_access_enum value = Access;
119 };
120 template <init_mode_enum Trigger>
121 struct PropertyMetaInfo<init_mode_key::value_t<Trigger>> {
122  static constexpr const char *name = "sycl-init-mode";
123  static constexpr init_mode_enum value = Trigger;
124 };
125 template <bool Enable>
126 struct PropertyMetaInfo<implement_in_csr_key::value_t<Enable>> {
127  static constexpr const char *name = "sycl-implement-in-csr";
128  static constexpr bool value = Enable;
129 };
130 
131 } // namespace detail
132 } // namespace ext::oneapi::experimental
133 } // __SYCL_INLINE_VER_NAMESPACE(_V1)
134 } // namespace sycl
sycl::_V1::ext::oneapi::experimental::detail::PropKind
PropKind
Definition: property.hpp:165
sycl::_V1::ext::oneapi::experimental::implement_in_csr
constexpr implement_in_csr_key::value_t< Enable > implement_in_csr
Definition: properties.hpp:68
__SYCL_INLINE_VER_NAMESPACE
#define __SYCL_INLINE_VER_NAMESPACE(X)
Definition: defines_elementary.hpp:11
sycl::_V1::ext::oneapi::experimental::detail::IsCompileTimeProperty
Definition: property.hpp:209
sycl::_V1::ext::oneapi::experimental::host_access_enum
host_access_enum
Definition: properties.hpp:24
sycl::_V1::ext::oneapi::experimental::host_access_write
constexpr host_access_key::value_t< host_access_enum::write > host_access_write
Definition: properties.hpp:55
sycl::_V1::ext::oneapi::experimental::detail::HostAccess
@ HostAccess
Definition: property.hpp:167
sycl
---— Error handling, matching OpenCL plugin semantics.
Definition: access.hpp:14
sycl::_V1::ext::oneapi::experimental::init_mode_reprogram
constexpr init_mode_key::value_t< init_mode_enum::reprogram > init_mode_reprogram
Definition: properties.hpp:64
sycl::_V1::ext::oneapi::experimental::is_property_key_of
Definition: property.hpp:222
sycl::_V1::ext::oneapi::experimental::host_access_none
constexpr host_access_key::value_t< host_access_enum::none > host_access_none
Definition: properties.hpp:59
sycl::_V1::ext::oneapi::experimental::host_access_read_write
constexpr host_access_key::value_t< host_access_enum::read_write > host_access_read_write
Definition: properties.hpp:57
sycl::_V1::ext::oneapi::experimental::init_mode
constexpr init_mode_key::value_t< Trigger > init_mode
Definition: properties.hpp:62
sycl::_V1::ext::oneapi::experimental::host_access_key
Definition: properties.hpp:26
sycl::_V1::ext::oneapi::experimental::host_access
constexpr host_access_key::value_t< Access > host_access
Definition: properties.hpp:51
sycl::_V1::ext::oneapi::experimental::init_mode_key
Definition: properties.hpp:35
sycl::_V1::ext::oneapi::experimental::device_image_scope
constexpr device_image_scope_key::value_t device_image_scope
Definition: properties.hpp:48
sycl::_V1::ext::oneapi::experimental::implement_in_csr_on
constexpr implement_in_csr_key::value_t< true > implement_in_csr_on
Definition: properties.hpp:69
property_value.hpp
sycl::_V1::ext::oneapi::experimental::init_mode_enum::reprogram
@ reprogram
sycl::_V1::ext::oneapi::experimental::init_mode_enum
init_mode_enum
Definition: properties.hpp:33
sycl::_V1::ext::oneapi::experimental::init_mode_enum::reset
@ reset
sycl::_V1::read_write
constexpr mode_tag_t< access_mode::read_write > read_write
Definition: access.hpp:74
sycl::_V1::ext::oneapi::experimental::detail::PropertyMetaInfo
Definition: property.hpp:212
sycl::_V1::ext::oneapi::experimental::detail::InitMode
@ InitMode
Definition: property.hpp:168
sycl::_V1::ext::oneapi::experimental::init_mode_reset
constexpr init_mode_key::value_t< init_mode_enum::reset > init_mode_reset
Definition: properties.hpp:65
sycl::_V1::ext::oneapi::experimental::implement_in_csr_key
Definition: properties.hpp:42
sycl::_V1::ext::oneapi::experimental::detail::DeviceImageScope
@ DeviceImageScope
Definition: property.hpp:166
sycl::_V1::ext::oneapi::experimental::device_image_scope_key
Definition: properties.hpp:20
sycl::_V1::ext::oneapi::experimental::host_access_read
constexpr host_access_key::value_t< host_access_enum::read > host_access_read
Definition: properties.hpp:53
sycl::_V1::ext::oneapi::experimental::detail::ImplementInCSR
@ ImplementInCSR
Definition: property.hpp:169
sycl::_V1::ext::oneapi::experimental::implement_in_csr_off
constexpr implement_in_csr_key::value_t< false > implement_in_csr_off
Definition: properties.hpp:70
property.hpp
sycl::_V1::ext::oneapi::experimental::detail::PropertyToKind
Definition: property.hpp:197
sycl::_V1::ext::oneapi::experimental::property_value
Definition: property_utils.hpp:22
sycl::_V1::ext::oneapi::experimental::is_property_key
Definition: property.hpp:221
sycl::_V1::ext::oneapi::experimental::device_global
Definition: device_global.hpp:105