|
template<typename DataT , int Dimensions, typename AllocatorT > |
class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor | accessor (buffer< DataT, Dimensions, AllocatorT >) -> accessor< DataT, Dimensions, access::mode::read_write, target::device, access::placeholder::true_t > |
| Buffer accessor. More...
|
|
template<typename DataT , int Dimensions, typename AllocatorT , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, access::mode::read_write, target::device, access::placeholder::true_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type1 >(), detail::deduceAccessTarget< Type1, Type1 >(target::device), access::placeholder::true_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type1 >(), detail::deduceAccessTarget< Type1, Type1 >(target::device), access::placeholder::true_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type2 >(), detail::deduceAccessTarget< Type1, Type2 >(target::device), access::placeholder::true_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type2 >(), detail::deduceAccessTarget< Type1, Type2 >(target::device), access::placeholder::true_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type2, Type3 >(), detail::deduceAccessTarget< Type2, Type3 >(target::device), access::placeholder::true_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type2, Type3 >(), detail::deduceAccessTarget< Type2, Type3 >(target::device), access::placeholder::true_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename Type4 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3, Type4) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type3, Type4 >(), detail::deduceAccessTarget< Type3, Type4 >(target::device), access::placeholder::true_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename Type4 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3, Type4, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type3, Type4 >(), detail::deduceAccessTarget< Type3, Type4 >(target::device), access::placeholder::true_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &) -> accessor< DataT, Dimensions, access::mode::read_write, target::device, access::placeholder::false_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, access::mode::read_write, target::device, access::placeholder::false_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type1 >(), detail::deduceAccessTarget< Type1, Type1 >(target::device), access::placeholder::false_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type1 >(), detail::deduceAccessTarget< Type1, Type1 >(target::device), access::placeholder::false_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, Type2) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type2 >(), detail::deduceAccessTarget< Type1, Type2 >(target::device), access::placeholder::false_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, Type2, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type2 >(), detail::deduceAccessTarget< Type1, Type2 >(target::device), access::placeholder::false_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, Type2, Type3) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type2, Type3 >(), detail::deduceAccessTarget< Type2, Type3 >(target::device), access::placeholder::false_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, Type2, Type3, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type2, Type3 >(), detail::deduceAccessTarget< Type2, Type3 >(target::device), access::placeholder::false_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename Type4 > |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, Type2, Type3, Type4) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type3, Type4 >(), detail::deduceAccessTarget< Type3, Type4 >(target::device), access::placeholder::false_t > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename Type4 , typename... PropsT> |
| accessor (buffer< DataT, Dimensions, AllocatorT >, handler &, Type1, Type2, Type3, Type4, const ext::oneapi::accessor_property_list< PropsT... > &) -> accessor< DataT, Dimensions, detail::deduceAccessMode< Type3, Type4 >(), detail::deduceAccessTarget< Type3, Type4 >(target::device), access::placeholder::false_t, ext::oneapi::accessor_property_list< PropsT... >> |
|
template<typename DataT , int Dimensions, typename AllocatorT > |
| host_accessor (buffer< DataT, Dimensions, AllocatorT >) -> host_accessor< DataT, Dimensions, access::mode::read_write > |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 > |
| host_accessor (buffer< DataT, Dimensions, AllocatorT >, Type1) -> host_accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type1 >()> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 > |
| host_accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2) -> host_accessor< DataT, Dimensions, detail::deduceAccessMode< Type1, Type2 >()> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 > |
| host_accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3) -> host_accessor< DataT, Dimensions, detail::deduceAccessMode< Type2, Type3 >()> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename Type4 > |
| host_accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3, Type4) -> host_accessor< DataT, Dimensions, detail::deduceAccessMode< Type3, Type4 >()> |
|
template<typename DataT , int Dimensions, typename AllocatorT , typename Type1 , typename Type2 , typename Type3 , typename Type4 , typename Type5 > |
| host_accessor (buffer< DataT, Dimensions, AllocatorT >, Type1, Type2, Type3, Type4, Type5) -> host_accessor< DataT, Dimensions, detail::deduceAccessMode< Type4, Type5 >()> |
|
template<typename DataT , int Dimensions, access::mode AccessMode, access::placeholder IsPlaceholder> |
class __SYCL_EBO __SYCL_SPECIAL_CLASS | __SYCL_TYPE (accessor) accessor< DataT |
| Image accessors. More...
|
|
enum | __SYCL_TYPE (aspect) aspect |
|
template<typename T , access::address_space addressSpace = access::address_space::global_space> |
class | __SYCL2020_DEPRECATED ("sycl::atomic is deprecated since SYCL 2020") atomic |
|
template<typename T , access::address_space addressSpace> |
void | atomic_store (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_load (atomic< T, addressSpace > Object, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_exchange (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
bool | atomic_compare_exchange_strong (atomic< T, addressSpace > Object, T &Expected, T Desired, memory_order SuccessOrder=memory_order::relaxed, memory_order FailOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_add (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_sub (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_and (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_or (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_xor (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_min (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
template<typename T , access::address_space addressSpace> |
T | atomic_fetch_max (atomic< T, addressSpace > Object, T Operand, memory_order MemoryOrder=memory_order::relaxed) |
|
void | atomic_fence (memory_order order, memory_scope scope) |
|
template<backend BackendName, class SyclObjectT > |
auto | get_native (const SyclObjectT &Obj) -> backend_return_t< BackendName, SyclObjectT > |
|
template<backend BackendName> |
auto | get_native (const queue &Obj) -> backend_return_t< BackendName, queue > |
|
template<backend BackendName, bundle_state State> |
auto | get_native (const kernel_bundle< State > &Obj) -> backend_return_t< BackendName, kernel_bundle< State >> |
|
template<backend BackendName, typename DataT , int Dimensions, typename AllocatorT > |
auto | get_native (const buffer< DataT, Dimensions, AllocatorT > &Obj) -> backend_return_t< BackendName, buffer< DataT, Dimensions, AllocatorT >> |
|
template<backend BackendName, typename DataT , int Dimensions, access::mode AccessMode, access::target AccessTarget, access::placeholder IsPlaceholder> |
auto | get_native (const accessor< DataT, Dimensions, AccessMode, AccessTarget, IsPlaceholder > &Obj) -> typename detail::interop< BackendName, accessor< DataT, Dimensions, AccessMode, AccessTarget, IsPlaceholder >>::type=delete |
|
template<backend Backend> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakePlatform==true, platform > | make_platform (const typename backend_traits< Backend >::template input_type< platform > &BackendObject) |
|
template<backend Backend> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeDevice==true, device > | make_device (const typename backend_traits< Backend >::template input_type< device > &BackendObject) |
|
template<backend Backend> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeContext==true, context > | make_context (const typename backend_traits< Backend >::template input_type< context > &BackendObject, const async_handler &Handler={}) |
|
template<backend Backend> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeQueue==true, queue > | make_queue (const typename backend_traits< Backend >::template input_type< queue > &BackendObject, const context &TargetContext, const async_handler Handler={}) |
|
template<backend Backend> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeEvent==true, event > | make_event (const typename backend_traits< Backend >::template input_type< event > &BackendObject, const context &TargetContext) |
|
template<backend Backend> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeEvent==true, event > | make_event (const typename backend_traits< Backend >::template input_type< event > &BackendObject, const context &TargetContext, bool KeepOwnership) |
|
template<backend Backend, typename T , int Dimensions = 1, typename AllocatorT = buffer_allocator<std::remove_const_t<T>>> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeBuffer==true &&Backend !=backend::ext_oneapi_level_zero, buffer< T, Dimensions, AllocatorT > > | make_buffer (const typename backend_traits< Backend >::template input_type< buffer< T, Dimensions, AllocatorT >> &BackendObject, const context &TargetContext, event AvailableEvent={}) |
|
template<backend Backend, int Dimensions = 1, typename AllocatorT = image_allocator> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeImage==true &&Backend !=backend::ext_oneapi_level_zero, image< Dimensions, AllocatorT > > | make_image (const typename backend_traits< Backend >::template input_type< image< Dimensions, AllocatorT >> &BackendObject, const context &TargetContext, event AvailableEvent={}) |
|
template<backend Backend> |
kernel | make_kernel (const typename backend_traits< Backend >::template input_type< kernel > &BackendObject, const context &TargetContext) |
|
template<backend Backend, bundle_state State> |
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeKernelBundle==true, kernel_bundle< State > > | make_kernel_bundle (const typename backend_traits< Backend >::template input_type< kernel_bundle< State >> &BackendObject, const context &TargetContext) |
|
std::ostream & | operator<< (std::ostream &Out, backend be) |
|
template<typename To , typename From > |
std::enable_if_t< sizeof(To)==sizeof(From) &&std::is_trivially_copyable< From >::value &&std::is_trivially_copyable< To >::value, To > | bit_cast (const From &from) noexcept |
|
template<int SZ> |
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > | cos (sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC |
|
template<int SZ> |
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > | sin (sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC |
|
template<int SZ> |
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > | exp (sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC |
|
template<int SZ> |
ESIMD_NODEBUG ESIMD_INLINE sycl::ext::intel::esimd::simd< float, SZ > | log (sycl::ext::intel::esimd::simd< float, SZ > x) __NOEXC |
|
template<backend Backend, class SyclT > |
auto | get_native (const SyclT &Obj) -> backend_return_t< Backend, SyclT > |
|
float | ceil (float) |
|
double | ceil (double) |
|
float | floor (float) |
|
double | floor (double) |
|
float | rint (float) |
|
double | rint (double) |
|
float | trunc (float) |
|
double | trunc (double) |
|
class | __SYCL2020_DEPRECATED ("Use SYCL 2020 callable device selectors instead.") device_selector |
| The SYCL 1.2.1 device_selector class provides ability to choose the best SYCL device based on heuristics specified by the user. More...
|
|
int | default_selector_v (const device &dev) |
|
int | gpu_selector_v (const device &dev) |
|
int | cpu_selector_v (const device &dev) |
|
int | accelerator_selector_v (const device &dev) |
|
detail::DSelectorInvocableType | aspect_selector (const std::vector< aspect > &RequireList, const std::vector< aspect > &DenyList={}) |
|
template<typename... AspectListT> |
detail::DSelectorInvocableType | aspect_selector (AspectListT... AspectList) |
|
template<aspect... AspectList> |
detail::DSelectorInvocableType | aspect_selector () |
|
std::error_code | make_error_code (sycl::errc E) noexcept |
| Constructs an error code using e and sycl_category() More...
|
|
const std::error_category & | sycl_category () noexcept |
|
template<> |
backend_return_t< backend::ext_oneapi_hip, device > | get_native< backend::ext_oneapi_hip, device > (const device &Obj) |
|
template<> |
device | make_device< backend::ext_oneapi_hip > (const backend_input_t< backend::ext_oneapi_hip, device > &BackendObject) |
|
template<> |
context | make_context< backend::ext_oneapi_level_zero > (const backend_input_t< backend::ext_oneapi_level_zero, context > &BackendObject, const async_handler &Handler) |
|
template<> |
device | make_device< backend::ext_oneapi_level_zero > (const backend_input_t< backend::ext_oneapi_level_zero, device > &BackendObject) |
|
template<> |
queue | make_queue< backend::ext_oneapi_level_zero > (const backend_input_t< backend::ext_oneapi_level_zero, queue > &BackendObject, const context &TargetContext, const async_handler Handler) |
|
template<> |
auto | get_native< backend::ext_oneapi_level_zero, queue > (const queue &Obj) -> backend_return_t< backend::ext_oneapi_level_zero, queue > |
|
template<> |
event | make_event< backend::ext_oneapi_level_zero > (const backend_input_t< backend::ext_oneapi_level_zero, event > &BackendObject, const context &TargetContext) |
|
template<> |
kernel_bundle< bundle_state::executable > | make_kernel_bundle< backend::ext_oneapi_level_zero, bundle_state::executable > (const backend_input_t< backend::ext_oneapi_level_zero, kernel_bundle< bundle_state::executable >> &BackendObject, const context &TargetContext) |
|
template<> |
kernel | make_kernel< backend::ext_oneapi_level_zero > (const backend_input_t< backend::ext_oneapi_level_zero, kernel > &BackendObject, const context &TargetContext) |
|
template<backend Backend, typename T , int Dimensions = 1, typename AllocatorT = buffer_allocator<std::remove_const_t<T>>> |
std::enable_if_t< Backend==backend::ext_oneapi_level_zero, buffer< T, Dimensions, AllocatorT > > | make_buffer (const backend_input_t< backend::ext_oneapi_level_zero, buffer< T, Dimensions, AllocatorT >> &BackendObject, const context &TargetContext, event AvailableEvent) |
|
template<backend Backend, typename T , int Dimensions = 1, typename AllocatorT = buffer_allocator<std::remove_const_t<T>>> |
std::enable_if_t< Backend==backend::ext_oneapi_level_zero, buffer< T, Dimensions, AllocatorT > > | make_buffer (const backend_input_t< backend::ext_oneapi_level_zero, buffer< T, Dimensions, AllocatorT >> &BackendObject, const context &TargetContext) |
|
template<backend Backend, int Dimensions = 1, typename AllocatorT = image_allocator> |
std::enable_if_t< Backend==backend::ext_oneapi_level_zero, image< Dimensions, AllocatorT > > | make_image (const backend_input_t< Backend, image< Dimensions, AllocatorT >> &BackendObject, const context &TargetContext, event AvailableEvent) |
|
namespace | __SYCL2020_DEPRECATED ("use 'ext::oneapi::level_zero' instead") level_zero |
|
template<> |
auto | get_native< backend::ext_oneapi_cuda, context > (const context &C) -> backend_return_t< backend::ext_oneapi_cuda, context > |
|
template<> |
backend_return_t< backend::ext_oneapi_cuda, context > | interop_handle::get_native_context< backend::ext_oneapi_cuda > () const |
|
template<> |
device | make_device< backend::ext_oneapi_cuda > (const backend_input_t< backend::ext_oneapi_cuda, device > &BackendObject) |
|
template<> |
event | make_event< backend::ext_oneapi_cuda > (const backend_input_t< backend::ext_oneapi_cuda, event > &BackendObject, const context &TargetContext) |
|
template<> |
queue | make_queue< backend::ext_oneapi_cuda > (const backend_input_t< backend::ext_oneapi_cuda, queue > &BackendObject, const context &TargetContext, const async_handler Handler) |
|
template<int dimensions> |
void | group_barrier (ext::oneapi::experimental::root_group< dimensions > G, memory_scope FenceScope=decltype(G)::fence_scope) |
|
template<typename T , int Dimensions = 1> |
class | __SYCL_TYPE (private_memory) private_memory |
|
template<int Dimensions = 1> |
class | __SYCL_TYPE (group) group |
| Encapsulates all functionality required to represent a particular work-group within a parallel execution. More...
|
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(detail::is_scalar_arithmetic< T >::value||(detail::is_complex< T >::value &&detail::is_multiplies< T, BinaryOperation >::value)) &&detail::is_native_op< T, BinaryOperation >::value), T > | reduce_over_group (Group g, T x, BinaryOperation binary_op) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_complex< T >::value &&detail::is_native_op< T, sycl::plus< T >>::value &&detail::is_plus< T, BinaryOperation >::value), T > | reduce_over_group (Group g, T x, BinaryOperation) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_vector_arithmetic_or_complex< T >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | reduce_over_group (Group g, T x, BinaryOperation binary_op) |
|
template<typename Group , typename V , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(detail::is_scalar_arithmetic< V >::value||detail::is_complex< V >::value) &&(detail::is_scalar_arithmetic< T >::value||detail::is_complex< T >::value) &&detail::is_native_op< T, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< T, BinaryOperation >::value &&std::is_convertible_v< V, T >), T > | reduce_over_group (Group g, V x, T init, BinaryOperation binary_op) |
|
template<typename Group , typename V , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_vector_arithmetic_or_complex< V >::value &&detail::is_vector_arithmetic_or_complex< T >::value &&detail::is_native_op< V, BinaryOperation >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | reduce_over_group (Group g, V x, T init, BinaryOperation binary_op) |
|
template<typename Group , typename Ptr , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< Ptr > &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< Ptr >::type >::value &&detail::is_arithmetic_or_complex< T >::value &&detail::is_plus_or_multiplies_if_complex< T, BinaryOperation >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | joint_reduce (Group g, Ptr first, Ptr last, T init, BinaryOperation binary_op) |
|
template<typename Group , typename Ptr , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< Ptr > &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< Ptr >::type >::value &&detail::is_plus_or_multiplies_if_complex< typename detail::remove_pointer< Ptr >::type, BinaryOperation >::value), typename detail::remove_pointer< Ptr >::type > | joint_reduce (Group g, Ptr first, Ptr last, BinaryOperation binary_op) |
|
template<typename Group > |
std::enable_if_t< is_group_v< std::decay_t< Group > >, bool > | any_of_group (Group g, bool pred) |
|
template<typename Group , typename T , class Predicate > |
std::enable_if_t< is_group_v< Group >, bool > | any_of_group (Group g, T x, Predicate pred) |
|
template<typename Group , typename Ptr , class Predicate > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< Ptr >), bool > | joint_any_of (Group g, Ptr first, Ptr last, Predicate pred) |
|
template<typename Group > |
std::enable_if_t< is_group_v< std::decay_t< Group > >, bool > | all_of_group (Group g, bool pred) |
|
template<typename Group , typename T , class Predicate > |
std::enable_if_t< is_group_v< std::decay_t< Group > >, bool > | all_of_group (Group g, T x, Predicate pred) |
|
template<typename Group , typename Ptr , class Predicate > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< Ptr >), bool > | joint_all_of (Group g, Ptr first, Ptr last, Predicate pred) |
|
template<typename Group > |
std::enable_if_t< is_group_v< std::decay_t< Group > >, bool > | none_of_group (Group g, bool pred) |
|
template<typename Group , typename T , class Predicate > |
std::enable_if_t< is_group_v< std::decay_t< Group > >, bool > | none_of_group (Group g, T x, Predicate pred) |
|
template<typename Group , typename Ptr , class Predicate > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< Ptr >), bool > | joint_none_of (Group g, Ptr first, Ptr last, Predicate pred) |
|
template<typename Group , typename T > |
std::enable_if_t<((std::is_same_v< std::decay_t< Group >, sub_group >||sycl::ext::oneapi::experimental::is_user_constructed_group_v< std::decay_t< Group >>) &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | shift_group_left (Group g, T x, typename Group::linear_id_type delta=1) |
|
template<typename Group , typename T > |
std::enable_if_t<((std::is_same_v< std::decay_t< Group >, sub_group >||sycl::ext::oneapi::experimental::is_user_constructed_group_v< std::decay_t< Group >>) &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | shift_group_right (Group g, T x, typename Group::linear_id_type delta=1) |
|
template<typename Group , typename T > |
std::enable_if_t<((std::is_same_v< std::decay_t< Group >, sub_group >||sycl::ext::oneapi::experimental::is_user_constructed_group_v< std::decay_t< Group >>) &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | permute_group_by_xor (Group g, T x, typename Group::linear_id_type mask) |
|
template<typename Group , typename T > |
std::enable_if_t<((std::is_same_v< std::decay_t< Group >, sub_group >||sycl::ext::oneapi::experimental::is_user_constructed_group_v< std::decay_t< Group >>) &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | select_from_group (Group g, T x, typename Group::id_type local_id) |
|
template<typename Group , typename T > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | group_broadcast (Group g, T x, typename Group::id_type local_id) |
|
template<typename Group , typename T > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | group_broadcast (Group g, T x, typename Group::linear_id_type linear_local_id) |
|
template<typename Group , typename T > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(std::is_trivially_copyable_v< T >||detail::is_vec< T >::value)), T > | group_broadcast (Group g, T x) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(detail::is_scalar_arithmetic< T >::value||(detail::is_complex< T >::value &&detail::is_multiplies< T, BinaryOperation >::value)) &&detail::is_native_op< T, BinaryOperation >::value), T > | exclusive_scan_over_group (Group g, T x, BinaryOperation binary_op) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_complex< T >::value &&detail::is_native_op< T, sycl::plus< T >>::value &&detail::is_plus< T, BinaryOperation >::value), T > | exclusive_scan_over_group (Group g, T x, BinaryOperation) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_vector_arithmetic_or_complex< T >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | exclusive_scan_over_group (Group g, T x, BinaryOperation binary_op) |
|
template<typename Group , typename V , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(detail::is_scalar_arithmetic< V >::value||detail::is_complex< V >::value) &&(detail::is_scalar_arithmetic< T >::value||detail::is_complex< T >::value) &&detail::is_native_op< T, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< T, BinaryOperation >::value &&std::is_convertible_v< V, T >), T > | exclusive_scan_over_group (Group g, V x, T init, BinaryOperation binary_op) |
|
template<typename Group , typename V , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_vector_arithmetic_or_complex< V >::value &&detail::is_vector_arithmetic_or_complex< T >::value &&detail::is_native_op< V, BinaryOperation >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | exclusive_scan_over_group (Group g, V x, T init, BinaryOperation binary_op) |
|
template<typename Group , typename InPtr , typename OutPtr , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< InPtr > &&detail::is_pointer_v< OutPtr > &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< InPtr >::type >::value &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< OutPtr >::type >::value &&detail::is_arithmetic_or_complex< T >::value &&detail::is_native_op< T, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< T, BinaryOperation >::value), OutPtr > | joint_exclusive_scan (Group g, InPtr first, InPtr last, OutPtr result, T init, BinaryOperation binary_op) |
|
template<typename Group , typename InPtr , typename OutPtr , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< InPtr > &&detail::is_pointer_v< OutPtr > &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< InPtr >::type >::value &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< OutPtr >::type >::value &&detail::is_native_op< typename detail::remove_pointer< OutPtr >::type, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< typename detail::remove_pointer< OutPtr >::type, BinaryOperation >::value), OutPtr > | joint_exclusive_scan (Group g, InPtr first, InPtr last, OutPtr result, BinaryOperation binary_op) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(detail::is_scalar_arithmetic< T >::value||(detail::is_complex< T >::value &&detail::is_multiplies< T, BinaryOperation >::value)) &&detail::is_native_op< T, BinaryOperation >::value), T > | inclusive_scan_over_group (Group g, T x, BinaryOperation binary_op) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_vector_arithmetic_or_complex< T >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | inclusive_scan_over_group (Group g, T x, BinaryOperation binary_op) |
|
template<typename Group , typename T , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_complex< T >::value &&detail::is_native_op< T, sycl::plus< T >>::value &&detail::is_plus< T, BinaryOperation >::value), T > | inclusive_scan_over_group (Group g, T x, BinaryOperation) |
|
template<typename Group , typename V , class BinaryOperation , typename T > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&(detail::is_scalar_arithmetic< V >::value||detail::is_complex< V >::value) &&(detail::is_scalar_arithmetic< T >::value||detail::is_complex< T >::value) &&detail::is_native_op< T, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< T, BinaryOperation >::value &&std::is_convertible_v< V, T >), T > | inclusive_scan_over_group (Group g, V x, BinaryOperation binary_op, T init) |
|
template<typename Group , typename V , class BinaryOperation , typename T > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_vector_arithmetic_or_complex< V >::value &&detail::is_vector_arithmetic_or_complex< T >::value &&detail::is_native_op< V, BinaryOperation >::value &&detail::is_native_op< T, BinaryOperation >::value), T > | inclusive_scan_over_group (Group g, V x, BinaryOperation binary_op, T init) |
|
template<typename Group , typename InPtr , typename OutPtr , class BinaryOperation , typename T > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< InPtr > &&detail::is_pointer_v< OutPtr > &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< InPtr >::type >::value &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< OutPtr >::type >::value &&detail::is_arithmetic_or_complex< T >::value &&detail::is_native_op< T, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< T, BinaryOperation >::value), OutPtr > | joint_inclusive_scan (Group g, InPtr first, InPtr last, OutPtr result, BinaryOperation binary_op, T init) |
|
template<typename Group , typename InPtr , typename OutPtr , class BinaryOperation > |
std::enable_if_t<(is_group_v< std::decay_t< Group >> &&detail::is_pointer_v< InPtr > &&detail::is_pointer_v< OutPtr > &&detail::is_arithmetic_or_complex< typename detail::remove_pointer< InPtr >::type >::value &&detail::is_native_op< typename detail::remove_pointer< OutPtr >::type, BinaryOperation >::value &&detail::is_plus_or_multiplies_if_complex< typename detail::remove_pointer< OutPtr >::type, BinaryOperation >::value), OutPtr > | joint_inclusive_scan (Group g, InPtr first, InPtr last, OutPtr result, BinaryOperation binary_op) |
|
template<typename Group > |
std::enable_if_t< is_group_v< Group > > | group_barrier (Group G, memory_scope FenceScope=Group::fence_scope) |
|
template<backend Backend, int D, typename A > |
std::enable_if_t< Backend==backend::ext_oneapi_level_zero, image< D, A > > | make_image (const backend_input_t< Backend, image< D, A >> &BackendObject, const context &TargetContext, event AvailableEvent={}) |
|
template<typename KernelName > |
kernel_id | get_kernel_id () |
|
template<bundle_state State> |
| kernel_bundle (kernel_bundle< State > &&) -> kernel_bundle< State > |
|
std::vector< kernel_id > | get_kernel_ids () |
|
template<bundle_state State> |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx, const std::vector< device > &Devs) |
| A kernel bundle in state State which contains all of the kernels in the application which are compatible with at least one of the devices in Devs. More...
|
|
template<bundle_state State> |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx) |
|
template<bundle_state State> |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx, const std::vector< device > &Devs, const std::vector< kernel_id > &KernelIDs) |
|
template<bundle_state State> |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx, const std::vector< kernel_id > &KernelIDs) |
|
template<typename KernelName , bundle_state State> |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx) |
|
template<typename KernelName , bundle_state State> |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx, const std::vector< device > &Devs) |
|
template<bundle_state State, typename SelectorT > |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx, const std::vector< device > &Devs, SelectorT Selector) |
| A kernel bundle in state State which contains all of the device images for which the selector returns true. More...
|
|
template<bundle_state State, typename SelectorT > |
kernel_bundle< State > | get_kernel_bundle (const context &Ctx, SelectorT Selector) |
|
template<bundle_state State> |
bool | has_kernel_bundle (const context &Ctx, const std::vector< device > &Devs) |
|
template<bundle_state State> |
bool | has_kernel_bundle (const context &Ctx, const std::vector< device > &Devs, const std::vector< kernel_id > &KernelIDs) |
|
template<bundle_state State> |
bool | has_kernel_bundle (const context &Ctx) |
|
template<bundle_state State> |
bool | has_kernel_bundle (const context &Ctx, const std::vector< kernel_id > &KernelIDs) |
|
template<typename KernelName , bundle_state State> |
bool | has_kernel_bundle (const context &Ctx) |
|
template<typename KernelName , bundle_state State> |
bool | has_kernel_bundle (const context &Ctx, const std::vector< device > &Devs) |
|
bool | is_compatible (const std::vector< kernel_id > &KernelIDs, const device &Dev) |
|
template<typename KernelName > |
bool | is_compatible (const device &Dev) |
|
template<sycl::bundle_state State> |
sycl::kernel_bundle< State > | join (const std::vector< sycl::kernel_bundle< State >> &Bundles) |
|
kernel_bundle< bundle_state::object > | compile (const kernel_bundle< bundle_state::input > &InputBundle, const std::vector< device > &Devs, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::object > | compile (const kernel_bundle< bundle_state::input > &InputBundle, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::executable > | link (const std::vector< kernel_bundle< bundle_state::object >> &ObjectBundles, const std::vector< device > &Devs, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::executable > | link (const kernel_bundle< bundle_state::object > &ObjectBundle, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::executable > | link (const std::vector< kernel_bundle< bundle_state::object >> &ObjectBundles, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::executable > | link (const kernel_bundle< bundle_state::object > &ObjectBundle, const std::vector< device > &Devs, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::executable > | build (const kernel_bundle< bundle_state::input > &InputBundle, const std::vector< device > &Devs, const property_list &PropList={}) |
|
kernel_bundle< bundle_state::executable > | build (const kernel_bundle< bundle_state::input > &InputBundle, const property_list &PropList={}) |
|
class | __SYCL_TYPE (kernel_handler) kernel_handler |
| Reading the value of a specialization constant. More...
|
|
template<typename ElementType , access::address_space Space, access::decorated DecorateAddress = access::decorated::legacy> |
class | __SYCL_TYPE (multi_ptr) multi_ptr |
| Provides constructors for address space qualified and non address space qualified pointers to allow interoperability between plain C++ and OpenCL C. More...
|
|
template<access::address_space Space, access::decorated DecorateAddress> |
class | __SYCL_TYPE (multi_ptr) multi_ptr< const void |
| Specialization of multi_ptr for const void. More...
|
|
| multi_ptr () |
|
| multi_ptr (const multi_ptr &)=default |
|
| multi_ptr (multi_ptr &&)=default |
|
| multi_ptr (typename multi_ptr< const void, Space, access::decorated::yes >::pointer ptr) |
|
| multi_ptr (std::nullptr_t) |
|
template<typename ElementType , int Dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space RelaySpace = Space, typename = typename std::enable_if_t< RelaySpace == Space && (Space == access::address_space::global_space || Space == access::address_space::generic_space || Space == access::address_space::ext_intel_global_device_space)>> |
| multi_ptr (accessor< ElementType, Dimensions, Mode, target::device, isPlaceholder, PropertyListT > Accessor) |
|
template<typename ElementType , int Dimensions, access::mode Mode, access::placeholder isPlaceholder, typename PropertyListT , access::address_space RelaySpace = Space, typename = typename std::enable_if_t< RelaySpace == Space && Space == access::address_space::local_space>> |
| __SYCL2020_DEPRECATED ("multi_ptr construction using target::local specialized " "accessor is deprecated since SYCL 2020") multi_ptr(accessor< ElementType |
|
PropertyListT int access::address_space multi_ptr & | operator= (multi_ptr &&)=default |
|
multi_ptr & | operator= (std::nullptr_t) |
|
pointer | get () const |
|
| __SYCL2020_DEPRECATED ("Conversion to pointer type is deprecated since SYCL " "2020. Please use get() instead.") operator pointer() const |
|
template<typename ElementType , typename = typename std::enable_if_t<std::is_const_v<ElementType>>> |
| operator multi_ptr< ElementType, Space, DecorateAddress > () const |
|
template<access::address_space GlobalSpace = access::address_space::global_space, access::address_space RelaySpace = Space, typename = typename std::enable_if_t< RelaySpace == Space && GlobalSpace == access::address_space::global_space && (Space == access::address_space::ext_intel_global_device_space || Space == access::address_space::ext_intel_global_host_space)>> |
| operator multi_ptr< const void, GlobalSpace, DecorateAddress > () const |
|
template<typename ElementType > |
| operator multi_ptr< ElementType, Space, DecorateAddress > () const |
|
template<access::address_space GlobalSpace = access::address_space::global_space, access::address_space RelaySpace = Space, typename = typename std::enable_if_t< RelaySpace == Space && GlobalSpace == access::address_space::global_space && (Space == access::address_space::ext_intel_global_device_space || Space == access::address_space::ext_intel_global_host_space)>> |
| operator multi_ptr< void, GlobalSpace, DecorateAddress > () const |
|
template<typename DataT , int Dimensions> |
class __SYCL_EBO __SYCL_SPECIAL_CLASS | __SYCL_TYPE (local_accessor) local_accessor |
|
template<typename T , typename AllocatorT , typename BinaryOperation > |
auto | reduction (buffer< T, 1, AllocatorT > Var, handler &CGH, BinaryOperation Combiner, const property_list &PropList={}) |
| Constructs a reduction object using the given buffer Var , handler CGH , reduction operation Combiner , and optional reduction properties. More...
|
|
template<typename T , typename BinaryOperation > |
auto | reduction (T *Var, BinaryOperation Combiner, const property_list &PropList={}) |
| Constructs a reduction object using the reduction variable referenced by the given USM pointer Var , handler CGH , reduction operation Combiner , and optional reduction properties. More...
|
|
template<typename T , typename AllocatorT , typename BinaryOperation > |
auto | reduction (buffer< T, 1, AllocatorT > Var, handler &CGH, const T &Identity, BinaryOperation Combiner, const property_list &PropList={}) |
| Constructs a reduction object using the given buffer Var , handler CGH , reduction identity value Identity , reduction operation Combiner , and optional reduction properties. More...
|
|
template<typename T , typename BinaryOperation > |
auto | reduction (T *Var, const T &Identity, BinaryOperation Combiner, const property_list &PropList={}) |
| Constructs a reduction object using the reduction variable referenced by the given USM pointer Var , reduction identity value Identity , binary operation Combiner , and optional reduction properties. More...
|
|
template<typename T , size_t Extent, typename BinaryOperation , typename = std::enable_if_t<Extent != dynamic_extent>> |
auto | reduction (span< T, Extent > Span, BinaryOperation Combiner, const property_list &PropList={}) |
| Constructs a reduction object using the reduction variable referenced by the given sycl::span Span , reduction operation Combiner , and optional reduction properties. More...
|
|
template<typename T , size_t Extent, typename BinaryOperation , typename = std::enable_if_t<Extent != dynamic_extent>> |
auto | reduction (span< T, Extent > Span, const T &Identity, BinaryOperation Combiner, const property_list &PropList={}) |
| Constructs a reduction object using the reduction variable referenced by the given sycl::span Span , reduction identity value Identity , reduction operation Combiner , and optional reduction properties. More...
|
|
class __SYCL_SPECIAL_CLASS | __SYCL_TYPE (sampler) sampler |
| Encapsulates a configuration for sampling an image accessor. More...
|
|
template<typename T > |
class | __SYCL_TYPE (specialization_id) specialization_id |
| Declaring a specialization constant. More...
|
|
__precision_manipulator__ | setprecision (int Precision) |
|
__width_manipulator__ | setw (int Width) |
|
template<typename T > |
class __SYCL_SPECIAL_CLASS __SYCL_TYPE(stream) stream std::enable_if_t< std::is_same_v< T, std::byte >, const stream & > | operator<< (const stream &, const T &) |
| A buffered output stream that allows outputting the values of built-in, vector and SYCL types to the console. More...
|
|
const stream & | operator<< (const stream &Out, const char C) |
|
const stream & | operator<< (const stream &Out, const char *Str) |
|
const stream & | operator<< (const stream &Out, const bool &RHS) |
|
template<typename ValueType > |
std::enable_if_t< std::is_integral_v< ValueType >, const stream & > | operator<< (const stream &Out, const ValueType &RHS) |
|
const stream & | operator<< (const stream &Out, const float &RHS) |
|
const stream & | operator<< (const stream &Out, const double &RHS) |
|
const stream & | operator<< (const stream &Out, const half &RHS) |
|
const stream & | operator<< (const stream &Out, const ext::oneapi::bfloat16 &RHS) |
|
template<typename ElementType , access::address_space Space, access::decorated IsDecorated> |
const stream & | operator<< (const stream &Out, const multi_ptr< ElementType, Space, IsDecorated > &RHS) |
|
template<typename T > |
const stream & | operator<< (const stream &Out, const T *RHS) |
|
const stream & | operator<< (const stream &Out, const __precision_manipulator__ &RHS) |
|
const stream & | operator<< (const stream &Out, const __width_manipulator__ &RHS) |
|
const stream & | operator<< (const stream &Out, const stream_manipulator RHS) |
|
template<typename T , int VectorLength> |
const stream & | operator<< (const stream &Out, const vec< T, VectorLength > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const id< Dimensions > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const range< Dimensions > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const item< Dimensions > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const nd_range< Dimensions > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const nd_item< Dimensions > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const group< Dimensions > &RHS) |
|
template<int Dimensions> |
const stream & | operator<< (const stream &Out, const h_item< Dimensions > &RHS) |
|
template<typename T , typename RT = detail::EnableIfSwizzleVec<T>> |
const stream & | operator<< (const stream &Out, const T &RHS) |
|
template<class _Tp , size_t _Extent> |
_SYCL_SPAN_INLINE_VISIBILITY auto | as_bytes (span< _Tp, _Extent > __s) noexcept -> decltype(__s.__as_bytes()) |
|
template<class _Tp , size_t _Extent> |
_SYCL_SPAN_INLINE_VISIBILITY auto | as_writable_bytes (span< _Tp, _Extent > __s) noexcept -> std::enable_if_t<!std::is_const_v< _Tp >, decltype(__s.__as_writable_bytes())> |
|
template<class _Tp , size_t _Sz> |
| span (_Tp(&)[_Sz]) -> span< _Tp, _Sz > |
|
template<class _Tp , size_t _Sz> |
| span (std::array< _Tp, _Sz > &) -> span< _Tp, _Sz > |
|
template<class _Tp , size_t _Sz> |
| span (const std::array< _Tp, _Sz > &) -> span< const _Tp, _Sz > |
|
template<class _Container > |
| span (_Container &) -> span< typename _Container::value_type > |
|
template<class _Container > |
| span (const _Container &) -> span< const typename _Container::value_type > |
|
usm::alloc | get_pointer_type (const void *ptr, const context &ctxt) |
| Query the allocation type from a USM pointer. More...
|
|
device | get_pointer_device (const void *ptr, const context &ctxt) |
| Queries the device against which the pointer was allocated Throws an exception with errc::invalid error code if ptr is a host allocation. More...
|
|
void * | malloc_device (size_t size, const device &dev, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_device (size_t size, const device &dev, const context &ctxt, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_device (size_t size, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_device (size_t size, const queue &q, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_device (size_t alignment, size_t size, const device &dev, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_device (size_t alignment, size_t size, const device &dev, const context &ctxt, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_device (size_t alignment, size_t size, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_device (size_t alignment, size_t size, const queue &q, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void | free (void *ptr, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void | free (void *ptr, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_host (size_t size, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_host (size_t size, const context &ctxt, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_host (size_t size, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_host (size_t size, const queue &q, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_shared (size_t size, const device &dev, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_shared (size_t size, const device &dev, const context &ctxt, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_shared (size_t size, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc_shared (size_t size, const queue &q, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_host (size_t alignment, size_t size, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_host (size_t alignment, size_t size, const context &ctxt, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_host (size_t alignment, size_t size, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_host (size_t alignment, size_t size, const queue &q, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_shared (size_t alignment, size_t size, const device &dev, const context &ctxt, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_shared (size_t alignment, size_t size, const device &dev, const context &ctxt, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_shared (size_t alignment, size_t size, const queue &q, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc_shared (size_t alignment, size_t size, const queue &q, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc (size_t size, const device &dev, const context &ctxt, usm::alloc kind, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc (size_t size, const device &dev, const context &ctxt, usm::alloc kind, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc (size_t size, const queue &q, usm::alloc kind, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | malloc (size_t size, const queue &q, usm::alloc kind, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc (size_t alignment, size_t size, const device &dev, const context &ctxt, usm::alloc kind, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc (size_t alignment, size_t size, const device &dev, const context &ctxt, usm::alloc kind, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc (size_t alignment, size_t size, const queue &q, usm::alloc kind, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
void * | aligned_alloc (size_t alignment, size_t size, const queue &q, usm::alloc kind, const property_list &propList, const detail::code_location &CodeLoc=detail::code_location::current()) |
|
size_t | is_not_power_of_two (size_t Alignment) |
|
| BUILTIN_COMMON (ONE_ARG, degrees, [](auto x) -> decltype(x) { return(180/M_PI) *x;}) BUILTIN_COMMON(ONE_ARG |
|
| BUILTIN_COMMON (ONE_ARG, sign, [](auto x) -> decltype(x) { using T=decltype(x);if(std::isnan(x)) return T(0.0);if(x > 0) return T(1.0);if(x< 0) return T(-1.0);return x;}) BUILTIN_COMMON(THREE_ARGS |
|
| BUILTIN_COMMON (TWO_ARGS, step, [](auto x, auto y) -> decltype(x) { return y< x ? 0.0 :1.0;}) BUILTIN_COMMON(THREE_ARGS |
|
| BUILTIN_COMMON (TWO_ARGS, max, [](auto x, auto y) -> decltype(x) { return(x< y ? y :x);}) BUILTIN_COMMON(TWO_ARGS |
|
template<typename T > |
static T | cross_host_impl (T p0, T p1) |
|
template<typename T0 , typename T1 > |
static auto | dot_host_impl (T0 x, T1 y) |
|
template<typename T > |
static auto | length_host_impl (T x) |
|
template<typename T > |
static auto | fast_length_host_impl (T x) |
|
template<typename T0 , typename T1 > |
static auto | distance_host_impl (T0 x, T1 y) |
|
template<typename T0 , typename T1 > |
static auto | fast_distance_host_impl (T0 x, T1 y) |
|
template<typename T > |
static auto | normalize_host_impl (T x) |
|
template<typename T > |
static auto | fast_normalize_host_impl (T x) |
|
| BUILTIN_GENINT (ONE_ARG, abs, [](auto x) -> decltype(x) { if constexpr(std::is_signed_v< decltype(x)>) { return std::abs(x);} else { return x;} }) BUILTIN_GENINT_SU(TWO_ARGS |
|
return std::max(x, y) - std | BUILTIN_GENINT_SU (TWO_ARGS, add_sat, [](auto x, auto y) -> decltype(x) { using T=decltype(x);if constexpr(std::is_signed_v< T >) { if(x > 0 &&y > 0) return(x<(std::numeric_limits< T >::max() - y) ?(x+y) :std::numeric_limits< T >::max());if(x< 0 &&y< 0) return(x >(std::numeric_limits< T >::min() - y) ?(x+y) :std::numeric_limits< T >::min());return x+y;} else { return(x<(std::numeric_limits< T >::max() - y) ? x+y :std::numeric_limits< T >::max());} }) BUILTIN_GENINT_SU(TWO_ARGS |
|
| return (x >> one)+(y >> one)+((y &x) &one) |
|
| BUILTIN_GENINT_SU (TWO_ARGS, rhadd, [](auto x, auto y) -> decltype(x) { const decltype(x) one=1;return(x >> one)+(y >> one)+((y|x) &one);}) BUILTIN_GENINT_SU(THREE_ARGS |
|
| BUILTIN_GENINT_SU (THREE_ARGS, mad_sat, [](auto a, auto b, auto c) -> decltype(a) { using T=decltype(a);if constexpr(std::is_signed_v< T >) { if constexpr(sizeof(T)==8) { bool neg_prod=(a< 0) ^(b< 0);T mulhi=__s_long_mul_hi(a, b);if(!neg_prod &&mulhi !=0) return std::numeric_limits< T >::max();if(neg_prod &&mulhi !=-1) return std::numeric_limits< T >::min();return sycl::add_sat(T(a *b), c);} else { using UPT=sycl::detail::make_larger_t< T >;UPT mul=UPT(a) *UPT(b);UPT res=mul+UPT(c);const UPT max=std::numeric_limits< T >::max();const UPT min=std::numeric_limits< T >::min();res=std::min(std::max(res, min), max);return T(res);} } else { if constexpr(sizeof(T)==8) { T mulhi=__u_long_mul_hi(a, b);if(mulhi !=0) return std::numeric_limits< T >::max();return sycl::add_sat(T(a *b), c);} else { using UPT=sycl::detail::make_larger_t< T >;UPT mul=UPT(a) *UPT(b);const UPT min=std::numeric_limits< T >::min();const UPT max=std::numeric_limits< T >::max();mul=std::min(std::max(mul, min), max);return sycl::add_sat(T(mul), c);} } }) BUILTIN_GENINT_SU(TWO_ARGS |
|
constexpr | if (sizeof(T)==8) |
|
| return (mul >>(sizeof(T) *8)) |
|
| BUILTIN_GENINT_SU (TWO_ARGS, sub_sat, [](auto x, auto y) -> decltype(x) { using T=decltype(x);if constexpr(std::is_signed_v< T >) { using UT=std::make_unsigned_t< T >;T result=UT(x) - UT(y);if(((x< 0) ^(y< 0)) &&((x< 0) ^(result< 0))) result=result< 0 ? std::numeric_limits< T >::max() :std::numeric_limits< T >::min();return result;} else { return(y<(x - std::numeric_limits< T >::min())) ?(x - y) :std::numeric_limits< T >::min();} }) BUILTIN_GENINT_SU(TWO_ARGS |
|
| BUILTIN_GENINT_SU (TWO_ARGS, min, [](auto x, auto y) -> decltype(x) { return y< x ? y :x;}) BUILTIN_GENINT_SU(THREE_ARGS |
|
template<typename T > |
static constexpr T | __clz_impl (T x, T m, T n=0) |
|
template<typename T > |
static constexpr T | __clz (T x) |
|
template<typename T > |
static constexpr T | __ctz_impl (T x, T m, T n=0) |
|
template<typename T > |
static constexpr T | __ctz (T x) |
|
| BUILTIN_GENINT (TWO_ARGS, rotate, [](auto x, auto n) -> decltype(x) { using T=decltype(x);using UT=std::make_unsigned_t< T >;constexpr UT size=sizeof(x) *8;UT xu=UT(x);UT nu=UT(n) &(size - 1);return(xu<< nu)|(xu >>(size - nu));}) template< typename T > static inline const expr T __popcount_impl(T x |
|
| BUILTIN_GENF_CUSTOM (ONE_ARG, acospi, [](auto x) -> decltype(x) { return std::acos(x)/M_PI;}) BUILTIN_GENF_CUSTOM(ONE_ARG |
|
| BUILTIN_GENF_CUSTOM (ONE_ARG, atanpi, [](auto x) -> decltype(x) { return std::atan(x)/M_PI;}) BUILTIN_GENF_CUSTOM(TWO_ARGS |
|
| BUILTIN_GENF_CUSTOM (ONE_ARG, cospi, [](auto x) -> decltype(x) { return std::sin(M_PI *(0.5 - x));}) BUILTIN_GENF_CUSTOM(ONE_ARG |
|
| BUILTIN_GENF_CUSTOM (THREE_ARGS, mad, [](auto x, auto y, auto z) -> decltype(x) { return(x *y)+z;}) BUILTIN_GENF_CUSTOM(TWO_ARGS |
|
| if (std::fabs(y) > std::fabs(x)) return y |
|
| BUILTIN_GENF_CUSTOM (TWO_ARGS, minmag, [](auto x, auto y) -> decltype(x) { if(std::fabs(x)< std::fabs(y)) return x;if(std::fabs(y)< std::fabs(x)) return y;return std::fmin(x, y);}) BUILTIN_GENF_CUSTOM(TWO_ARGS |
|
return(x >=T(0)) ? T(std | BUILTIN_GENF_CUSTOM (ONE_ARG, rsqrt, [](auto x) -> decltype(x) { return decltype(x){1.0}/std::sqrt(x);}) BUILTIN_GENF_CUSTOM(ONE_ARG |
|
| BUILTIN_GENF_CUSTOM (ONE_ARG, tanpi, [](auto x) -> decltype(x) { double y=x - std::floor(x);return 1.0/std::tan((0.5 - y) *M_PI);}) BUILTIN_GENF_CUSTOM(TWO_ARGS |
|
template<typename T > |
static auto | process_arg_for_macos (T x) |
|
| REL_BUILTIN_CUSTOM (TWO_ARGS, isequal,([](auto x, auto y) { return x==y;})) REL_BUILTIN_CUSTOM(TWO_ARGS |
|
| REL_BUILTIN_CUSTOM (TWO_ARGS, isgreater,([](auto x, auto y) { return x > y;})) REL_BUILTIN_CUSTOM(TWO_ARGS |
|
| REL_BUILTIN_CUSTOM (TWO_ARGS, isless,([](auto x, auto y) { return x< y;})) REL_BUILTIN_CUSTOM(TWO_ARGS |
|
| REL_BUILTIN_CUSTOM (TWO_ARGS, islessgreater,([](auto x, auto y) { return x< y||x > y;})) REL_BUILTIN_CUSTOM(TWO_ARGS |
|
namespace | __SYCL2020_DEPRECATED ("use 'ext::oneapi' instead") ONEAPI |
|
namespace | __SYCL2020_DEPRECATED ("use 'ext::intel::experimental' instead") INTEL |
|
void * | malloc (size_t Size, const device &Dev, const context &Ctxt, alloc Kind, const property_list &PropList, const detail::code_location &CodeLoc) |
|
void * | malloc (size_t Size, const device &Dev, const context &Ctxt, alloc Kind, const detail::code_location &CodeLoc) |
|
void * | malloc (size_t Size, const queue &Q, alloc Kind, const detail::code_location &CodeLoc) |
|
void * | malloc (size_t Size, const queue &Q, alloc Kind, const property_list &PropList, const detail::code_location &CodeLoc) |
|
void * | aligned_alloc (size_t Alignment, size_t Size, const device &Dev, const context &Ctxt, alloc Kind, const detail::code_location &CodeLoc) |
|
void * | aligned_alloc (size_t Alignment, size_t Size, const device &Dev, const context &Ctxt, alloc Kind, const property_list &PropList, const detail::code_location &CodeLoc) |
|
void * | aligned_alloc (size_t Alignment, size_t Size, const queue &Q, alloc Kind, const detail::code_location &CodeLoc) |
|
void * | aligned_alloc (size_t Alignment, size_t Size, const queue &Q, alloc Kind, const property_list &PropList, const detail::code_location &CodeLoc) |
|
static void | prepare_for_usm_device_copy (const void *Ptr, size_t Size, const context &Ctxt) |
|
static void | release_from_usm_device_copy (const void *Ptr, const context &Ctxt) |
|
template std::vector< device > | device::create_sub_devices< info::partition_property::partition_equally > (size_t ComputeUnits) const |
|
template std::vector< device > | device::create_sub_devices< info::partition_property::partition_by_counts > (const std::vector< size_t > &Counts) const |
|
template std::vector< device > | device::create_sub_devices< info::partition_property::partition_by_affinity_domain > (info::partition_affinity_domain AffinityDomain) const |
|
template std::vector< device > | device::create_sub_devices< info::partition_property::ext_intel_partition_by_cslice > () const |
|
template<> |
device | device::get_info_impl< info::device::parent_device > () const |
|
template<> |
std::vector< sycl::aspect > | device::get_info_impl< info::device::aspects > () const |
|
template<> |
bool | device::get_info_impl< info::device::image_support > () const |
|
static void | traceDeviceSelector (const std::string &DeviceType) |
| default_selector_v Devices of different kinds are prioritized in the following order: More...
|
|
static void | addArgsForGlobalAccessor (detail::Requirement *AccImpl, size_t Index, size_t &IndexShift, int Size, bool IsKernelCreatedFromSource, size_t GlobalSize, std::vector< detail::ArgDesc > &Args, bool isESIMD) |
|
static bool | checkContextSupports (const std::shared_ptr< detail::context_impl > &ContextImpl, ur_context_info_t InfoQuery) |
|
template uint32_t | kernel::get_info< info::kernel_device_specific::max_sub_group_size > (const device &, const sycl::range< 3 > &) const |
|
template ext::oneapi::experimental::info::kernel_queue_specific::max_num_work_group_sync::return_type | kernel::ext_oneapi_get_info< ext::oneapi::experimental::info::kernel_queue_specific::max_num_work_group_sync > (const queue &Queue) const |
|
static event | getBarrierEventForInorderQueueHelper (const detail::QueueImplPtr QueueImpl) |
|
static size_t | CheckMaxStatementSize (const size_t &MaxStatementSize) |
|