The SYCL device class encapsulates a single SYCL device on which kernels may be executed. More...
#include <sycl/device.hpp>
Public Member Functions | |
device () | |
Constructs a SYCL device instance using the default device. More... | |
__SYCL2020_DEPRECATED ("SYCL 1.2.1 device selectors are deprecated. Please " "use SYCL 2020 device selectors instead.") explicit device(const device_selector &DeviceSelector) | |
Constructs a SYCL device instance from an OpenCL cl_device_id in accordance with the requirements described in 4.3.1. More... | |
template<typename DeviceSelector , typename = detail::EnableIfSYCL2020DeviceSelectorInvocable<DeviceSelector>> | |
device (const DeviceSelector &deviceSelector) | |
Constructs a SYCL device instance using the device identified by the device selector provided. More... | |
bool | operator== (const device &rhs) const |
bool | operator!= (const device &rhs) const |
device (const device &rhs)=default | |
device (device &&rhs)=default | |
device & | operator= (const device &rhs)=default |
device & | operator= (device &&rhs)=default |
__SYCL2020_DEPRECATED ("is_host() is deprecated as the host device is no longer supported.") bool is_host() const | |
Get instance of device. More... | |
bool | is_cpu () const |
Check if device is a CPU device. More... | |
bool | is_gpu () const |
Check if device is a GPU device. More... | |
bool | is_accelerator () const |
Check if device is an accelerator device. More... | |
platform | get_platform () const |
Get associated SYCL platform. More... | |
template<info::partition_property prop> | |
std::vector< device > | create_sub_devices (size_t ComputeUnits) const |
Partition device into sub devices. More... | |
template<info::partition_property prop> | |
std::vector< device > | create_sub_devices (const std::vector< size_t > &Counts) const |
Partition device into sub devices. More... | |
template<info::partition_property prop> | |
std::vector< device > | create_sub_devices (info::partition_affinity_domain AffinityDomain) const |
Partition device into sub devices. More... | |
template<info::partition_property prop> | |
std::vector< device > | create_sub_devices () const |
Partition device into sub devices. More... | |
template<typename Param > | |
detail::is_device_info_desc< Param >::return_type | get_info () const |
Queries this SYCL device for information requested by the template parameter param. More... | |
bool | has_extension (const std::string &extension_name) const |
Check SYCL extension support by device. More... | |
backend | get_backend () const noexcept |
Returns the backend associated with this device. More... | |
bool | has (aspect Aspect) const |
Indicates if the SYCL device has the given feature. More... | |
![]() | |
bool | ext_oneapi_owner_before (const ext::oneapi::detail::weak_object_base< device > &Other) const noexcept |
Compares the object against a weak object using an owner-based implementation-defined ordering. More... | |
bool | ext_oneapi_owner_before (const device &Other) const noexcept |
Compares the object against another object using an owner-based implementation-defined ordering. More... | |
Static Public Member Functions | |
static std::vector< device > | get_devices (info::device_type deviceType=info::device_type::all) |
Query available SYCL devices. More... | |
Friends | |
template<class T > | |
detail::add_pointer_t< typename decltype(T::impl)::element_type > | detail::getRawSyclObjImpl (const T &SyclObject) |
template<class T > | |
T | detail::createSyclObjFromImpl (decltype(T::impl) ImplObj) |
template<backend BackendName, class SyclObjectT > | |
auto | get_native (const SyclObjectT &Obj) -> backend_return_t< BackendName, SyclObjectT > |
The SYCL device class encapsulates a single SYCL device on which kernels may be executed.
Definition at line 49 of file device.hpp.
sycl::_V1::device::device | ( | ) |
Constructs a SYCL device instance using the default device.
Definition at line 33 of file device.cpp.
|
inlineexplicit |
Constructs a SYCL device instance using the device identified by the device selector provided.
DeviceSelector | is SYCL 2020 Device Selector, a simple callable that takes a device and returns an int |
Definition at line 77 of file device.hpp.
|
default |
|
default |
sycl::_V1::device::__SYCL2020_DEPRECATED | ( | "is_host() is deprecated as the host device is no longer supported." | ) | const |
Get instance of device.
sycl::_V1::device::__SYCL2020_DEPRECATED | ( | "SYCL 1.2.1 device selectors are deprecated. Please " "use SYCL 2020 device selectors instead." | ) | const & |
Constructs a SYCL device instance from an OpenCL cl_device_id in accordance with the requirements described in 4.3.1.
DeviceId | is OpenCL device represented with cl_device_id Constructs a SYCL device instance using the device selected by the DeviceSelector provided. |
DeviceSelector | SYCL 1.2.1 device_selector to be used (see 4.6.1.1). |
std::vector< device > sycl::_V1::device::create_sub_devices |
Partition device into sub devices.
Available only when prop is info::partition_property::ext_intel_partition_by_cslice. If this SYCL device does not support info::partition_property::ext_intel_partition_by_cslice a feature_not_supported exception must be thrown.
Definition at line 123 of file device.cpp.
std::vector< device > sycl::_V1::device::create_sub_devices | ( | const std::vector< size_t > & | Counts | ) | const |
Partition device into sub devices.
Available only when prop is info::partition_property::partition_by_counts. If this SYCL device does not support info::partition_property::partition_by_counts a feature_not_supported exception must be thrown.
Counts | is a std::vector of desired compute units in sub devices. |
Definition at line 104 of file device.cpp.
std::vector< device > sycl::_V1::device::create_sub_devices | ( | info::partition_affinity_domain | AffinityDomain | ) | const |
Partition device into sub devices.
Available only when prop is info::partition_property::partition_by_affinity_domain. If this SYCL device does not support info::partition_property::partition_by_affinity_domain or the SYCL device does not support info::affinity_domain provided a feature_not_supported exception must be thrown.
AffinityDomain | is one of the values described in Table 4.20 of SYCL Spec |
Definition at line 113 of file device.cpp.
std::vector< device > sycl::_V1::device::create_sub_devices | ( | size_t | ComputeUnits | ) | const |
Partition device into sub devices.
Available only when prop is info::partition_property::partition_equally. If this SYCL device does not support info::partition_property::partition_equally a feature_not_supported exception must be thrown.
ComputeUnits | is a desired count of compute units in each sub device. |
Definition at line 94 of file device.cpp.
Referenced by sycl::_V1::detail::amendDeviceAndSubDevices().
|
noexcept |
Returns the backend associated with this device.
Definition at line 198 of file device.cpp.
References sycl::_V1::detail::getImplBackend().
Referenced by sycl::_V1::default_selector_v(), sycl::_V1::get_native< backend::ext_oneapi_hip, device >(), and sycl::_V1::gpu_selector_v().
|
static |
Query available SYCL devices.
The returned std::vector must contain a single SYCL device that is a host device, permitted by the deviceType parameter
deviceType | is one of the values described in A.3 of SYCL Spec |
Definition at line 52 of file device.cpp.
References sycl::_V1::detail::ods_target_list::backendCompatible(), sycl::_V1::detail::device_filter_list::backendCompatible(), sycl::_V1::detail::SYCLConfig< Config >::get(), and sycl::_V1::platform::get_platforms().
Referenced by sycl::_V1::ext::oneapi::detail::filter_selector_impl::filter_selector_impl().
detail::is_device_info_desc< Param >::return_type sycl::_V1::device::get_info |
Queries this SYCL device for information requested by the template parameter param.
Specializations of info::param_traits must be defined in accordance with the info parameters in Table 4.20 of SYCL Spec to facilitate returning the type associated with the param parameter.
Definition at line 136 of file device.cpp.
Referenced by sycl::_V1::detail::usm::alignedAlloc(), sycl::_V1::detail::amendDeviceAndSubDevices(), sycl::_V1::detail::doesDevSupportDeviceRequirements(), sycl::_V1::ext::oneapi::detail::filter_selector_impl::operator()(), sycl::_V1::detail::reduGetMaxNumConcurrentWorkGroups(), sycl::_V1::detail::reduGetMaxWGSize(), sycl::_V1::detail::reduGetPreferredWGSize(), sycl::_V1::detail::NDRangeReduction< reduction::strategy::group_reduce_and_last_wg_detection >::run(), sycl::_V1::detail::supportsAffinityDomain(), and sycl::_V1::detail::supportsPartitionProperty().
platform sycl::_V1::device::get_platform | ( | ) | const |
Get associated SYCL platform.
If this SYCL device is an OpenCL device then the SYCL platform must encapsulate the OpenCL cl_plaform_id associated with the underlying OpenCL cl_device_id of this SYCL device. If this SYCL device is a host device then the SYCL platform must be a host platform. The value returned must be equal to that returned by get_info<info::device::platform>().
Definition at line 91 of file device.cpp.
Referenced by sycl::_V1::context::context(), and sycl::_V1::ext::intel::detail::selectDeviceByPlatform().
bool sycl::_V1::device::has | ( | aspect | Aspect | ) | const |
Indicates if the SYCL device has the given feature.
Aspect | is one of the values in Table 4.20 of the SYCL 2020 Provisional Spec. |
Definition at line 202 of file device.cpp.
Referenced by sycl::_V1::detail::doesDevSupportDeviceRequirements(), and sycl::_V1::detail::NDRangeReduction< reduction::strategy::group_reduce_and_last_wg_detection >::run().
bool sycl::_V1::device::has_extension | ( | const std::string & | extension_name | ) | const |
Check SYCL extension support by device.
extension_name | is a name of queried extension. |
Definition at line 130 of file device.cpp.
bool sycl::_V1::device::is_accelerator | ( | ) | const |
Check if device is an accelerator device.
Definition at line 89 of file device.cpp.
Referenced by sycl::_V1::accelerator_selector_v(), sycl::_V1::default_selector_v(), sycl::_V1::detail::queue_impl::instrumentationProlog(), and sycl::_V1::detail::reduGetPreferredWGSize().
bool sycl::_V1::device::is_cpu | ( | ) | const |
Check if device is a CPU device.
Definition at line 85 of file device.cpp.
Referenced by sycl::_V1::cpu_selector_v(), sycl::_V1::default_selector_v(), sycl::_V1::detail::queue_impl::instrumentationProlog(), and sycl::_V1::detail::reduGetPreferredWGSize().
bool sycl::_V1::device::is_gpu | ( | ) | const |
Check if device is a GPU device.
Definition at line 87 of file device.cpp.
Referenced by sycl::_V1::default_selector_v(), sycl::_V1::gpu_selector_v(), sycl::_V1::detail::queue_impl::instrumentationProlog(), sycl::_V1::detail::reduGetMaxNumConcurrentWorkGroups(), and sycl::_V1::detail::reduGetPreferredWGSize().
|
inline |
Definition at line 82 of file device.hpp.
|
inline |
Definition at line 80 of file device.hpp.
|
friend |
|
friend |
|
friend |
Definition at line 123 of file backend.hpp.