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::device, propList);
53 return annotated_ptr<void, propertyListB>(tmp.get());
57 typename propertyListB =
58 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
60 CheckDevicePtrTAndPropLists<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::device, propList);
69 return annotated_ptr<T, propertyListB>(tmp.get());
73 typename propertyListB =
74 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
76 CheckDevicePtrTAndPropLists<void, propertyListA, propertyListB>::value,
77 annotated_ptr<void, propertyListB>>
79 const queue &syclQueue,
80 const propertyListA &propList =
properties{}) {
87 typename propertyListB =
88 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
90 CheckDevicePtrTAndPropLists<T, propertyListA, propertyListB>::value,
91 annotated_ptr<T, propertyListB>>
93 const queue &syclQueue,
94 const propertyListA &propList =
properties{}) {
95 return aligned_alloc_device_annotated<T>(
alignment, count,
108 typename propertyListB =
109 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
111 CheckDevicePtrTAndPropLists<void, propertyListA, propertyListB>::value,
112 annotated_ptr<void, propertyListB>>
115 const propertyListA &propList =
properties{}) {
121 typename propertyListB =
122 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
124 CheckDevicePtrTAndPropLists<T, propertyListA, propertyListB>::value,
125 annotated_ptr<T, propertyListB>>
128 const propertyListA &propList =
properties{}) {
129 return aligned_alloc_device_annotated<T>(0, count, syclDevice, syclContext,
134 typename propertyListB =
135 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
137 CheckDevicePtrTAndPropLists<void, propertyListA, propertyListB>::value,
138 annotated_ptr<void, propertyListB>>
140 const propertyListA &propList =
properties{}) {
146 typename propertyListB =
147 typename GetAnnotatedDevicePtrProperties<propertyListA>::type>
149 CheckDevicePtrTAndPropLists<T, propertyListA, propertyListB>::value,
150 annotated_ptr<T, propertyListB>>
152 const propertyListA &propList =
properties{}) {
153 return malloc_device_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
constexpr alignment_key::value_t< K > alignment
std::enable_if_t< CheckDevicePtrTAndPropLists< void, propertyListA, propertyListB >::value, annotated_ptr< void, propertyListB > > malloc_device_annotated(size_t numBytes, const device &syclDevice, const context &syclContext, const propertyListA &propList=properties{})
std::enable_if_t< CheckDevicePtrTAndPropLists< void, propertyListA, propertyListB >::value, annotated_ptr< void, propertyListB > > aligned_alloc_device_annotated(size_t alignment, size_t numBytes, const device &syclDevice, const context &syclContext, const propertyListA &propList=properties{})
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{})
typename detail::CheckTAndPropListsWithUsmKind< sycl::usm::alloc::device, T, ListA, ListB > CheckDevicePtrTAndPropLists