DPC++ Runtime
Runtime libraries for oneAPI DPC++
sycl::_V1::detail::platform_impl Class Reference

#include <detail/platform_impl.hpp>

Collaboration diagram for sycl::_V1::detail::platform_impl:

Public Member Functions

 platform_impl ()
 Constructs platform_impl for a SYCL host platform. More...
 
 platform_impl (RT::PiPlatform APlatform, const std::shared_ptr< plugin > &APlugin)
 Constructs platform_impl from a plug-in interoperability platform handle. More...
 
 ~platform_impl ()=default
 
bool has_extension (const std::string &ExtensionName) const
 Checks if this platform supports extension. More...
 
std::vector< deviceget_devices (info::device_type DeviceType=info::device_type::all) const
 Returns all SYCL devices associated with this platform. More...
 
template<typename Param >
Param::return_type get_info () const
 Queries this SYCL platform for info. More...
 
bool is_host () const
 
backend getBackend (void) const
 Returns the backend of this platform. More...
 
void getBackendOption (const char *frontend_option, const char **backend_option) const
 Get backend option. More...
 
cl_platform_id get () const
 
const RT::PiPlatform & getHandleRef () const
 Returns raw underlying plug-in platform handle. More...
 
const PluginPtrgetPlugin () const
 
void setPlugin (PluginPtr &PluginPtr, backend Backend)
 Sets the platform implementation to use another plugin. More...
 
pi_native_handle getNative () const
 Gets the native handle of the SYCL platform. More...
 
bool has (aspect Aspect) const
 Indicates if all of the SYCL devices on this platform have the given feature. More...
 
std::shared_ptr< device_implgetDeviceImpl (RT::PiDevice PiDevice)
 Queries the device_impl cache to return a shared_ptr for the device_impl corresponding to the PiDevice. More...
 
std::shared_ptr< device_implgetOrMakeDeviceImpl (RT::PiDevice PiDevice, const std::shared_ptr< platform_impl > &PlatformImpl)
 Queries the device_impl cache to either return a shared_ptr for the device_impl corresponding to the PiDevice or add a new entry to the cache. More...
 

Static Public Member Functions

static std::vector< platformget_platforms ()
 Returns all available SYCL platforms in the system. More...
 
static std::shared_ptr< platform_implgetHostPlatformImpl ()
 Static functions that help maintain platform uniquess and equality of comparison. More...
 
static std::shared_ptr< platform_implgetOrMakePlatformImpl (RT::PiPlatform PiPlatform, const PluginPtr &Plugin)
 Queries the cache to see if the specified PiPlatform has been seen before. More...
 
static std::shared_ptr< platform_implgetPlatformFromPiDevice (RT::PiDevice PiDevice, const PluginPtr &Plugin)
 Queries the cache for the specified platform based on an input device. More...
 

Public Attributes

bool MAlwaysRootDevice = false
 

Detailed Description

Definition at line 34 of file platform_impl.hpp.

Constructor & Destructor Documentation

◆ platform_impl() [1/2]

sycl::_V1::detail::platform_impl::platform_impl ( )
inline

Constructs platform_impl for a SYCL host platform.

Definition at line 37 of file platform_impl.hpp.

◆ platform_impl() [2/2]

sycl::_V1::detail::platform_impl::platform_impl ( RT::PiPlatform  APlatform,
const std::shared_ptr< plugin > &  APlugin 
)
inlineexplicit

Constructs platform_impl from a plug-in interoperability platform handle.

Parameters
APlatformis a raw plug-in platform handle.
APluginis a plug-in handle.

Definition at line 44 of file platform_impl.hpp.

References sycl::_V1::detail::convertBackend(), PI_EXT_PLATFORM_INFO_BACKEND, and piPlatformGetInfo().

◆ ~platform_impl()

sycl::_V1::detail::platform_impl::~platform_impl ( )
default

Member Function Documentation

◆ get()

cl_platform_id sycl::_V1::detail::platform_impl::get ( ) const
inline
Returns
an instance of OpenCL cl_platform_id.

Definition at line 98 of file platform_impl.hpp.

◆ get_devices()

std::vector< device > sycl::_V1::detail::platform_impl::get_devices ( info::device_type  DeviceType = info::device_type::all) const

Returns all SYCL devices associated with this platform.

If this platform is a host platform and device type requested is either info::device_type::all or info::device_type::host, resulting vector contains only a single SYCL host device. If there are no devices that match given device type, resulting vector is empty.

Parameters
DeviceTypeis a SYCL device type.
Returns
a vector of SYCL devices.

Definition at line 506 of file platform_impl.cpp.

References sycl::_V1::detail::amendDeviceAndSubDevices(), sycl::_V1::detail::applyAllowList(), std::get(), sycl::_V1::detail::pi::initialize(), sycl::_V1::make_error_code(), piDeviceRelease(), and piDevicesGet().

◆ get_info()

template<typename Param >
Param::return_type sycl::_V1::detail::platform_impl::get_info

Queries this SYCL platform for info.

The return type depends on information being queried.

Definition at line 629 of file platform_impl.cpp.

References sycl::_V1::detail::pi::getPlugin().

◆ get_platforms()

std::vector< platform > sycl::_V1::detail::platform_impl::get_platforms ( )
static

Returns all available SYCL platforms in the system.

By default the resulting vector always contains a single SYCL host platform instance. There are means to override this behavior for testing purposes. See environment variables guide for up-to-date instructions.

Returns
a vector of all available SYCL platforms.

Definition at line 106 of file platform_impl.cpp.

References sycl::_V1::platform::get_devices(), sycl::_V1::detail::getSyclObjImpl(), sycl::_V1::detail::pi::initialize(), sycl::_V1::detail::IsBannedPlatform(), and piPlatformsGet().

Referenced by sycl::_V1::platform::get_platforms().

◆ getBackend()

backend sycl::_V1::detail::platform_impl::getBackend ( void  ) const
inline

Returns the backend of this platform.

Definition at line 85 of file platform_impl.hpp.

◆ getBackendOption()

void sycl::_V1::detail::platform_impl::getBackendOption ( const char *  frontend_option,
const char **  backend_option 
) const
inline

Get backend option.

Definition at line 88 of file platform_impl.hpp.

References sycl::_V1::detail::pi::getPlugin(), and piPluginGetBackendOption().

◆ getDeviceImpl()

std::shared_ptr< device_impl > sycl::_V1::detail::platform_impl::getDeviceImpl ( RT::PiDevice  PiDevice)

Queries the device_impl cache to return a shared_ptr for the device_impl corresponding to the PiDevice.

Parameters
PiDeviceis the PiDevice whose impl is requested
Returns
a shared_ptr<device_impl> corresponding to the device

Definition at line 332 of file platform_impl.cpp.

◆ getHandleRef()

const RT::PiPlatform& sycl::_V1::detail::platform_impl::getHandleRef ( ) const
inline

Returns raw underlying plug-in platform handle.

Unlike get() method, this method does not retain handler. It is caller responsibility to make sure that platform stays alive while raw handle is in use.

Returns
a raw plug-in platform handle.

Definition at line 114 of file platform_impl.hpp.

◆ getHostPlatformImpl()

PlatformImplPtr sycl::_V1::detail::platform_impl::getHostPlatformImpl ( )
static

Static functions that help maintain platform uniquess and equality of comparison.

Returns the host platform impl

Returns
the host platform impl

Definition at line 33 of file platform_impl.cpp.

Referenced by sycl::_V1::detail::context_impl::get_info< info::context::platform >().

◆ getNative()

pi_native_handle sycl::_V1::detail::platform_impl::getNative ( ) const

Gets the native handle of the SYCL platform.

Returns
a native handle.

Definition at line 620 of file platform_impl.cpp.

References sycl::_V1::detail::pi::getPlugin(), and piextPlatformGetNativeHandle().

◆ getOrMakeDeviceImpl()

std::shared_ptr< device_impl > sycl::_V1::detail::platform_impl::getOrMakeDeviceImpl ( RT::PiDevice  PiDevice,
const std::shared_ptr< platform_impl > &  PlatformImpl 
)

Queries the device_impl cache to either return a shared_ptr for the device_impl corresponding to the PiDevice or add a new entry to the cache.

Parameters
PiDeviceis the PiDevice whose impl is requested
PlatormImplis the Platform for that Device
Returns
a shared_ptr<device_impl> corresponding to the device

Definition at line 337 of file platform_impl.cpp.

◆ getOrMakePlatformImpl()

PlatformImplPtr sycl::_V1::detail::platform_impl::getOrMakePlatformImpl ( RT::PiPlatform  PiPlatform,
const PluginPtr Plugin 
)
static

Queries the cache to see if the specified PiPlatform has been seen before.

If so, return the cached platform_impl, otherwise create a new one and cache it.

Parameters
PiPlatformis the PI Platform handle representing the platform
Pluginis the PI plugin providing the backend for the platform
Returns
the platform_impl representing the PI platform

Definition at line 39 of file platform_impl.cpp.

◆ getPlatformFromPiDevice()

PlatformImplPtr sycl::_V1::detail::platform_impl::getPlatformFromPiDevice ( RT::PiDevice  PiDevice,
const PluginPtr Plugin 
)
static

Queries the cache for the specified platform based on an input device.

If found, returns the the cached platform_impl, otherwise creates a new one and caches it.

Parameters
PiDeviceis the PI device handle for the device whose platform is desired
Pluginis the PI plugin providing the backend for the device and platform
Returns
the platform_impl that contains the input device

Definition at line 64 of file platform_impl.cpp.

References PI_DEVICE_INFO_PLATFORM, and piDeviceGetInfo().

Referenced by sycl::_V1::detail::context_impl::context_impl().

◆ getPlugin()

const PluginPtr& sycl::_V1::detail::platform_impl::getPlugin ( ) const
inline

Definition at line 132 of file platform_impl.hpp.

◆ has()

bool sycl::_V1::detail::platform_impl::has ( aspect  Aspect) const

Indicates if all of the SYCL devices on this platform have the given feature.

Parameters
Aspectis one of the values in Table 4.20 of the SYCL 2020 Provisional Spec.
Returns
true all of the SYCL devices on this platform have the given feature.

Definition at line 637 of file platform_impl.cpp.

◆ has_extension()

bool sycl::_V1::detail::platform_impl::has_extension ( const std::string &  ExtensionName) const

Checks if this platform supports extension.

Parameters
ExtensionNameis a string containing extension name.
Returns
true if platform supports specified extension.

Definition at line 610 of file platform_impl.cpp.

References sycl::_V1::detail::get_platform_info_string_impl(), and sycl::_V1::detail::pi::getPlugin().

◆ is_host()

bool sycl::_V1::detail::platform_impl::is_host ( ) const
inline
Returns
true if this SYCL platform is a host platform.

Definition at line 82 of file platform_impl.hpp.

◆ setPlugin()

void sycl::_V1::detail::platform_impl::setPlugin ( PluginPtr PluginPtr,
backend  Backend 
)
inline

Sets the platform implementation to use another plugin.

Parameters
PluginPtris a pointer to a plugin instance
Backendis the backend that we want this platform to use

Definition at line 141 of file platform_impl.hpp.

Member Data Documentation

◆ MAlwaysRootDevice

bool sycl::_V1::detail::platform_impl::MAlwaysRootDevice = false

Definition at line 215 of file platform_impl.hpp.


The documentation for this class was generated from the following files: