#include <detail/device_impl.hpp>
Public Member Functions | |
device_impl () | |
Constructs a SYCL device instance as a host device. More... | |
device_impl (pi_native_handle, const PluginPtr &Plugin) | |
Constructs a SYCL device instance using the provided raw device handle. More... | |
device_impl (RT::PiDevice Device, PlatformImplPtr Platform) | |
Constructs a SYCL device instance using the provided PI device instance. More... | |
device_impl (RT::PiDevice Device, const PluginPtr &Plugin) | |
Constructs a SYCL device instance using the provided PI device instance. More... | |
~device_impl () | |
cl_device_id | get () const |
Get instance of OpenCL device. More... | |
RT::PiDevice & | getHandleRef () |
Get reference to PI device. More... | |
const RT::PiDevice & | getHandleRef () const |
Get constant reference to PI device. More... | |
bool | is_host () const |
Check if SYCL device is a host 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... | |
RT::PiDeviceType | get_device_type () const |
Return device type. More... | |
platform | get_platform () const |
Get associated SYCL platform. More... | |
const PluginPtr & | getPlugin () const |
bool | has_extension (const std::string &ExtensionName) const |
Check SYCL extension support by device. More... | |
std::vector< device > | create_sub_devices (const cl_device_partition_property *Properties, size_t SubDevicesCount) const |
std::vector< device > | create_sub_devices (size_t ComputeUnits) const |
Partition device into sub devices. More... | |
std::vector< device > | create_sub_devices (const std::vector< size_t > &Counts) const |
Partition device into sub devices. More... | |
std::vector< device > | create_sub_devices (info::partition_affinity_domain AffinityDomain) const |
Partition device into sub devices. More... | |
std::vector< device > | create_sub_devices () const |
Partition device into sub devices. More... | |
bool | is_partition_supported (info::partition_property Prop) const |
Check if desired partition property supported by device. More... | |
template<typename Param > | |
Param::return_type | get_info () const |
Queries this SYCL device for information requested by the template parameter param. More... | |
bool | is_affinity_supported (info::partition_affinity_domain AffinityDomain) const |
Check if affinity partitioning by specified domain is supported by device. More... | |
pi_native_handle | getNative () const |
Gets the native handle of the SYCL device. More... | |
bool | has (aspect Aspect) const |
Indicates if the SYCL device has the given feature. More... | |
bool | isAssertFailSupported () const |
bool | isRootDevice () const |
std::string | getDeviceName () const |
uint64_t | getCurrentDeviceTime () |
Gets the current device timestamp. More... | |
backend | getBackend () const |
Get the backend of this device. More... | |
PlatformImplPtr | getPlatformImpl () const |
Get the platform impl serving this device. More... | |
std::string | get_device_info_string (RT::PiDeviceInfo InfoCode) const |
Get device info string. More... | |
Static Public Member Functions | |
static std::shared_ptr< device_impl > | getHostDeviceImpl () |
Gets the single instance of the Host Device. More... | |
Definition at line 35 of file device_impl.hpp.
sycl::_V1::detail::device_impl::device_impl | ( | ) |
Constructs a SYCL device instance as a host device.
Definition at line 20 of file device_impl.cpp.
|
explicit |
Constructs a SYCL device instance using the provided raw device handle.
Definition at line 25 of file device_impl.cpp.
|
explicit |
Constructs a SYCL device instance using the provided PI device instance.
Definition at line 29 of file device_impl.cpp.
|
explicit |
Constructs a SYCL device instance using the provided PI device instance.
Definition at line 33 of file device_impl.cpp.
sycl::_V1::detail::device_impl::~device_impl | ( | ) |
Definition at line 83 of file device_impl.cpp.
References __SYCL_CHECK_OCL_CODE_NO_EXC, getPlugin(), and piDeviceRelease().
std::vector< device > sycl::_V1::detail::device_impl::create_sub_devices | ( | ) | const |
Partition device into sub devices.
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 282 of file device_impl.cpp.
References sycl::_V1::info::ext_intel_partition_by_cslice, getPlugin(), is_partition_supported(), PI_EXT_INTEL_DEVICE_PARTITION_BY_CSLICE, and piDevicePartition().
Referenced by create_sub_devices().
std::vector< device > sycl::_V1::detail::device_impl::create_sub_devices | ( | const cl_device_partition_property * | Properties, |
size_t | SubDevicesCount | ||
) | const |
Definition at line 159 of file device_impl.cpp.
References sycl::_V1::detail::for_each(), getPlugin(), sycl::_V1::invalid, and piDevicePartition().
std::vector< device > sycl::_V1::detail::device_impl::create_sub_devices | ( | const std::vector< size_t > & | Counts | ) | const |
Partition device into sub devices.
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 211 of file device_impl.cpp.
References create_sub_devices(), sycl::_V1::invalid, is_partition_supported(), sycl::_V1::info::partition_by_counts, PI_DEVICE_PARTITION_BY_COUNTS, and PI_DEVICE_PARTITION_BY_COUNTS_LIST_END.
std::vector< device > sycl::_V1::detail::device_impl::create_sub_devices | ( | info::partition_affinity_domain | AffinityDomain | ) | const |
Partition device into sub devices.
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 253 of file device_impl.cpp.
References sycl::_V1::detail::affinityDomainToString(), create_sub_devices(), getPlugin(), is_affinity_supported(), is_partition_supported(), sycl::_V1::info::partition_by_affinity_domain, PI_DEVICE_PARTITION_BY_AFFINITY_DOMAIN, and piDevicePartition().
std::vector< device > sycl::_V1::detail::device_impl::create_sub_devices | ( | size_t | ComputeUnits | ) | const |
Partition device into sub devices.
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 187 of file device_impl.cpp.
References create_sub_devices(), sycl::_V1::invalid, is_partition_supported(), sycl::_V1::info::partition_equally, and PI_DEVICE_PARTITION_EQUALLY.
cl_device_id sycl::_V1::detail::device_impl::get | ( | ) | const |
Get instance of OpenCL device.
Definition at line 100 of file device_impl.cpp.
References getNative(), getPlugin(), and piDeviceRetain().
Referenced by has().
|
inline |
Get device info string.
Definition at line 164 of file device_info.hpp.
References sycl::_V1::detail::pi::getPlugin(), and piDeviceGetInfo().
Referenced by has_extension().
|
inline |
Param::return_type sycl::_V1::detail::device_impl::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 116 of file device_impl.cpp.
References is_host().
Referenced by sycl::_V1::detail::enqueue_kernel_launch::handleInvalidWorkGroupSize().
platform sycl::_V1::detail::device_impl::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 111 of file device_impl.cpp.
Referenced by sycl::_V1::detail::enqueue_kernel_launch::handleInvalidWorkGroupSize().
|
inline |
Get the backend of this device.
Definition at line 240 of file device_impl.hpp.
Referenced by getNative().
uint64_t sycl::_V1::detail::device_impl::getCurrentDeviceTime | ( | ) |
Gets the current device timestamp.
sycl::feature_not_supported | if feature is not supported on device |
Definition at line 491 of file device_impl.cpp.
References getPlugin(), piGetDeviceAndHostTimer(), and piPluginGetLastError().
std::string sycl::_V1::detail::device_impl::getDeviceName | ( | ) | const |
Definition at line 473 of file device_impl.cpp.
|
inline |
Get reference to PI device.
For host device an exception is thrown
Definition at line 64 of file device_impl.hpp.
Referenced by sycl::_V1::detail::adjustNDRangePerKernel(), sycl::_V1::detail::usm::alignedAllocInternal(), getNative(), sycl::_V1::detail::enqueue_kernel_launch::handleInvalidValue(), sycl::_V1::detail::enqueue_kernel_launch::handleInvalidWorkGroupSize(), and sycl::_V1::detail::enqueue_kernel_launch::handleInvalidWorkItemSize().
|
inline |
Get constant reference to PI device.
For host device an exception is thrown
Definition at line 77 of file device_impl.hpp.
|
static |
Gets the single instance of the Host Device.
Definition at line 462 of file device_impl.cpp.
pi_native_handle sycl::_V1::detail::device_impl::getNative | ( | ) | const |
Gets the native handle of the SYCL device.
Definition at line 304 of file device_impl.cpp.
References getBackend(), getHandleRef(), getPlugin(), sycl::_V1::opencl, piDeviceRetain(), and piextDeviceGetNativeHandle().
Referenced by get().
|
inline |
Get the platform impl serving this device.
Definition at line 244 of file device_impl.hpp.
|
inline |
Definition at line 125 of file device_impl.hpp.
Referenced by sycl::_V1::detail::adjustNDRangePerKernel(), create_sub_devices(), get(), getCurrentDeviceTime(), getNative(), sycl::_V1::detail::enqueue_kernel_launch::handleErrorOrWarning(), sycl::_V1::detail::enqueue_kernel_launch::handleInvalidValue(), sycl::_V1::detail::enqueue_kernel_launch::handleInvalidWorkGroupSize(), sycl::_V1::detail::enqueue_kernel_launch::handleInvalidWorkItemSize(), has(), and ~device_impl().
bool sycl::_V1::detail::device_impl::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 313 of file device_impl.cpp.
References get(), getPlugin(), has_extension(), is_accelerator(), is_cpu(), is_gpu(), is_host(), isAssertFailSupported(), PI_DEVICE_INFO_DEVICE_ID, PI_DEVICE_INFO_GPU_EU_COUNT, PI_DEVICE_INFO_GPU_EU_COUNT_PER_SUBSLICE, PI_DEVICE_INFO_GPU_EU_SIMD_WIDTH, PI_DEVICE_INFO_GPU_HW_THREADS_PER_EU, PI_DEVICE_INFO_GPU_SLICES, PI_DEVICE_INFO_GPU_SUBSLICES_PER_SLICE, PI_DEVICE_INFO_IMAGE_SUPPORT, PI_DEVICE_INFO_PCI_ADDRESS, PI_DEVICE_INFO_UUID, PI_EXT_INTEL_DEVICE_INFO_FREE_MEMORY, PI_EXT_INTEL_DEVICE_INFO_MEMORY_BUS_WIDTH, PI_EXT_INTEL_DEVICE_INFO_MEMORY_CLOCK_RATE, PI_EXT_ONEAPI_DEVICE_INFO_CUDA_ASYNC_BARRIER, PI_FALSE, PI_USM_CONCURRENT_ATOMIC_ACCESS, and piDeviceGetInfo().
bool sycl::_V1::detail::device_impl::has_extension | ( | const std::string & | ExtensionName | ) | const |
Check SYCL extension support by device.
ExtensionName | is a name of queried extension. |
Definition at line 143 of file device_impl.cpp.
References get_device_info_string().
Referenced by sycl::_V1::detail::usm::alignedAllocInternal(), and has().
|
inline |
Check if device is an accelerator device.
Definition at line 103 of file device_impl.hpp.
References PI_DEVICE_TYPE_ACC.
Referenced by has().
bool sycl::_V1::detail::device_impl::is_affinity_supported | ( | info::partition_affinity_domain | AffinityDomain | ) | const |
Check if affinity partitioning by specified domain is supported by device.
AffinityDomain | is one of the values described in Table 4.20 of SYCL Spec |
Definition at line 93 of file device_impl.cpp.
Referenced by create_sub_devices().
|
inline |
Check if device is a CPU device.
Definition at line 93 of file device_impl.hpp.
References PI_DEVICE_TYPE_CPU.
Referenced by has().
|
inline |
Check if device is a GPU device.
Definition at line 98 of file device_impl.hpp.
References PI_DEVICE_TYPE_GPU.
Referenced by has().
|
inline |
Check if SYCL device is a host device.
Definition at line 88 of file device_impl.hpp.
Referenced by get_info(), and has().
bool sycl::_V1::detail::device_impl::is_partition_supported | ( | info::partition_property | Prop | ) | const |
Check if desired partition property supported by device.
Prop | is one of info::partition_property::(partition_equally, partition_by_counts, partition_by_affinity_domain) |
Definition at line 152 of file device_impl.cpp.
Referenced by create_sub_devices().
bool sycl::_V1::detail::device_impl::isAssertFailSupported | ( | ) | const |
Definition at line 469 of file device_impl.cpp.
Referenced by has().
|
inline |
Definition at line 231 of file device_impl.hpp.