14 inline namespace _V1 {
17 namespace experimental {
19 template <
typename T,
typename ListA,
typename ListB>
24 template <
typename PropertyListT>
41 typename propertyListB =
49 const propertyListA &propList =
properties{}) {
52 sycl::usm::alloc::shared, propList);
53 return annotated_ptr<void, propertyListB>(tmp.get());
57 typename propertyListB =
58 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
60 CheckSharedPtrTAndPropLists<T, propertyListA, propertyListB>::value,
61 annotated_ptr<T, propertyListB>>
65 const propertyListA &propList =
properties{}) {
67 aligned_alloc_annotated<T>(
alignment, count, syclDevice, syclContext,
68 sycl::usm::alloc::shared, propList);
69 return annotated_ptr<T, propertyListB>(tmp.get());
73 typename propertyListB =
74 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
76 CheckSharedPtrTAndPropLists<void, propertyListA, propertyListB>::value,
77 annotated_ptr<void, propertyListB>>
79 const queue &syclQueue,
80 const propertyListA &propList =
properties{}) {
87 typename propertyListB =
88 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
90 CheckSharedPtrTAndPropLists<T, propertyListA, propertyListB>::value,
91 annotated_ptr<T, propertyListB>>
93 const queue &syclQueue,
94 const propertyListA &propList =
properties{}) {
95 return aligned_alloc_shared_annotated<T>(
alignment, count,
108 typename propertyListB =
109 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
111 CheckSharedPtrTAndPropLists<void, propertyListA, propertyListB>::value,
112 annotated_ptr<void, propertyListB>>
115 const propertyListA &propList =
properties{}) {
121 typename propertyListB =
122 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
124 CheckSharedPtrTAndPropLists<T, propertyListA, propertyListB>::value,
125 annotated_ptr<T, propertyListB>>
128 const propertyListA &propList =
properties{}) {
129 return aligned_alloc_shared_annotated<T>(0, count, syclDevice, syclContext,
134 typename propertyListB =
135 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
137 CheckSharedPtrTAndPropLists<void, propertyListA, propertyListB>::value,
138 annotated_ptr<void, propertyListB>>
140 const propertyListA &propList =
properties{}) {
146 typename propertyListB =
147 typename GetAnnotatedSharedPtrProperties<propertyListA>::type>
149 CheckSharedPtrTAndPropLists<T, propertyListA, propertyListB>::value,
150 annotated_ptr<T, propertyListB>>
152 const propertyListA &propList =
properties{}) {
153 return malloc_shared_annotated<T>(count, syclQueue.
get_device(),
The context class represents a SYCL context on which kernel functions may be executed.
The SYCL device class encapsulates a single SYCL device on which kernels may be executed.
Encapsulates a single SYCL queue which schedules kernels on a SYCL device.
device get_device() const
context get_context() const
properties< std::tuple<> > empty_properties_t
std::enable_if_t< CheckSharedPtrTAndPropLists< void, propertyListA, propertyListB >::value, annotated_ptr< void, propertyListB > > aligned_alloc_shared_annotated(size_t alignment, size_t numBytes, const device &syclDevice, const context &syclContext, const propertyListA &propList=properties{})
constexpr alignment_key::value_t< K > alignment
typename detail::CheckTAndPropListsWithUsmKind< sycl::usm::alloc::shared, T, ListA, ListB > CheckSharedPtrTAndPropLists
std::enable_if_t< detail::CheckTAndPropLists< void, propertyListA, propertyListB >::value, annotated_ptr< void, propertyListB > > aligned_alloc_annotated(size_t alignment, size_t numBytes, const device &syclDevice, const context &syclContext, sycl::usm::alloc kind, const propertyListA &propList=properties{})
std::enable_if_t< CheckSharedPtrTAndPropLists< void, propertyListA, propertyListB >::value, annotated_ptr< void, propertyListB > > malloc_shared_annotated(size_t numBytes, const device &syclDevice, const context &syclContext, const propertyListA &propList=properties{})