DPC++ Runtime
Runtime libraries for oneAPI Data Parallel C++
cl::sycl::detail::plugin Class Reference

The plugin class provides a unified interface to the underlying low-level runtimes for the device-agnostic SYCL runtime. More...

#include <detail/plugin.hpp>

Public Member Functions

 plugin ()=delete
 
 plugin (const std::shared_ptr< RT::PiPlugin > &Plugin, backend UseBackend, void *LibraryHandle)
 
pluginoperator= (const plugin &)=default
 
 plugin (const plugin &)=default
 
pluginoperator= (plugin &&other) noexcept=default
 
 plugin (plugin &&other) noexcept=default
 
 ~plugin ()=default
 
const RT::PiPlugingetPiPlugin () const
 
RT::PiPlugingetPiPlugin ()
 
const std::shared_ptr< RT::PiPlugin > & getPiPluginPtr () const
 
template<typename Exception = cl::sycl::runtime_error>
void checkPiResult (RT::PiResult pi_result) const
 Checks return value from PI calls. More...
 
template<sycl::errc errc>
void checkPiResult (RT::PiResult pi_result) const
 
void reportPiError (RT::PiResult pi_result, const char *context) const
 
template<PiApiKind PiApiOffset, typename... ArgsT>
RT::PiResult call_nocheck (ArgsT... Args) const
 Calls the PiApi, traces the call, and returns the result. More...
 
template<PiApiKind PiApiOffset, typename... ArgsT>
void call (ArgsT... Args) const
 Calls the API, traces the call, checks the result. More...
 
template<sycl::errc errc, PiApiKind PiApiOffset, typename... ArgsT>
void call (ArgsT... Args) const
 
backend getBackend (void) const
 
void * getLibraryHandle () const
 
void * getLibraryHandle ()
 
int unload ()
 
int getPlatformId (RT::PiPlatform Platform)
 
int getStartingDeviceId (RT::PiPlatform Platform)
 
void setLastDeviceId (RT::PiPlatform Platform, int Id)
 
bool containsPiPlatform (RT::PiPlatform Platform)
 
std::shared_ptr< std::mutex > getPluginMutex ()
 

Detailed Description

The plugin class provides a unified interface to the underlying low-level runtimes for the device-agnostic SYCL runtime.

Definition at line 89 of file plugin.hpp.

Constructor & Destructor Documentation

◆ plugin() [1/4]

cl::sycl::detail::plugin::plugin ( )
delete

◆ plugin() [2/4]

cl::sycl::detail::plugin::plugin ( const std::shared_ptr< RT::PiPlugin > &  Plugin,
backend  UseBackend,
void *  LibraryHandle 
)
inline

Definition at line 92 of file plugin.hpp.

◆ plugin() [3/4]

cl::sycl::detail::plugin::plugin ( const plugin )
default

◆ plugin() [4/4]

cl::sycl::detail::plugin::plugin ( plugin &&  other)
defaultnoexcept

◆ ~plugin()

cl::sycl::detail::plugin::~plugin ( )
default

Member Function Documentation

◆ call() [1/2]

template<PiApiKind PiApiOffset, typename... ArgsT>
void cl::sycl::detail::plugin::call ( ArgsT...  Args) const
inline

Calls the API, traces the call, checks the result.

Exceptions
cl::sycl::runtime_exceptionif the call was not successful.

Definition at line 187 of file plugin.hpp.

Referenced by cl::sycl::detail::MemoryManager::advise_usm(), cl::sycl::detail::MemoryManager::allocateBufferObject(), cl::sycl::detail::MemoryManager::allocateImageObject(), cl::sycl::detail::MemoryManager::allocateInteropMemObject(), cl::sycl::detail::applyAllowList(), cl::sycl::detail::ProgramManager::build(), cl::sycl::detail::program_impl::build_with_kernel_name(), cl::sycl::detail::context_impl::context_impl(), cl::sycl::detail::context_impl::get_info< info::context::atomic_memory_order_capabilities >(), cl::sycl::detail::pi::contextSetExtendedDeleter(), cl::sycl::detail::MemoryManager::copy_usm(), cl::sycl::detail::copyD2D(), cl::sycl::detail::copyD2H(), cl::sycl::detail::copyH2D(), cl::sycl::detail::device_impl::create_sub_devices(), cl::sycl::detail::createBinaryProgram(), cl::sycl::detail::createSpirvProgram(), cl::sycl::detail::enableITTAnnotationsIfNeeded(), cl::sycl::detail::event_impl::event_impl(), cl::sycl::detail::MemoryManager::fill(), cl::sycl::detail::MemoryManager::fill_usm(), cl::sycl::detail::filterDeviceFilter(), cl::sycl::detail::usm::free(), cl::sycl::detail::get_context_info< param >::get(), cl::sycl::detail::get_platform_info< std::string, param >::get(), cl::sycl::detail::get_event_profiling_info< Param >::get(), cl::sycl::detail::get_kernel_info< std::string, Param >::get(), cl::sycl::detail::get_event_info< Param >::get(), cl::sycl::detail::get_context_info< info::context::atomic_memory_order_capabilities >::get(), cl::sycl::detail::get_kernel_info< cl_uint, Param >::get(), cl::sycl::detail::device_impl::get(), cl::sycl::detail::event_impl::get(), cl::sycl::detail::get_kernel_device_specific_info< T, Param >::get(), cl::sycl::detail::context_impl::get(), cl::sycl::detail::get_kernel_device_specific_info< cl::sycl::range< 3 >, Param >::get(), cl::sycl::detail::kernel_impl::get(), cl::sycl::detail::get_device_info< T, param >::get(), cl::sycl::detail::get_device_info< platform, param >::get(), cl::sycl::detail::program_impl::get(), cl::sycl::detail::get_device_info_string< param >::get(), cl::sycl::detail::queue_impl::get(), cl::sycl::detail::get_device_info< id< 3 >, param >::get(), cl::sycl::detail::get_device_info< std::vector< info::fp_config >, param >::get(), cl::sycl::detail::get_kernel_device_specific_info_with_input< Param >::get(), cl::sycl::detail::get_device_info< std::vector< info::fp_config >, info::device::single_fp_config >::get(), cl::sycl::detail::get_device_info< bool, info::device::queue_profiling >::get(), cl::sycl::detail::get_device_info< std::vector< info::execution_capability >, info::device::execution_capabilities >::get(), cl::sycl::detail::get_device_info< std::vector< info::partition_property >, info::device::partition_properties >::get(), cl::sycl::detail::get_device_info< std::vector< info::partition_affinity_domain >, info::device::partition_affinity_domains >::get(), cl::sycl::detail::get_device_info< info::partition_affinity_domain, info::device::partition_type_affinity_domain >::get(), cl::sycl::detail::get_device_info< info::partition_property, info::device::partition_type_property >::get(), cl::sycl::detail::get_device_info< std::vector< size_t >, info::device::sub_group_sizes >::get(), cl::sycl::detail::get_device_info< id< 3 >, info::device::max_work_item_sizes >::get(), cl::sycl::detail::get_device_info< id< 1 >, info::device::ext_oneapi_max_work_groups_1d >::get(), cl::sycl::detail::get_device_info< id< 2 >, info::device::ext_oneapi_max_work_groups_2d >::get(), cl::sycl::detail::get_device_info< id< 3 >, info::device::ext_oneapi_max_work_groups_3d >::get(), cl::sycl::detail::get_device_info< device, info::device::parent_device >::get(), cl::sycl::detail::program_impl::get_binaries(), cl::sycl::detail::platform_impl::get_devices(), cl::sycl::get_pointer_device(), cl::sycl::detail::device_image_impl::get_spec_const_buffer_ref(), cl::sycl::detail::SYCLMemObjT::getBufSizeForContext(), cl::sycl::detail::queue_impl::getExclusiveQueueHandleRef(), cl::sycl::detail::getImageInfo(), cl::sycl::detail::kernel_impl::getNative(), cl::sycl::detail::device_image_impl::getNative(), cl::sycl::detail::queue_impl::getNative(), cl::sycl::detail::ProgramManager::getOrCreateKernel(), cl::sycl::detail::ProgramManager::getPiProgramFromPiKernel(), cl::sycl::detail::platform_impl::getPlatformFromPiDevice(), cl::sycl::detail::getPluginOpaqueData(), cl::sycl::detail::ProgramManager::getProgramBuildLog(), cl::sycl::detail::enqueue_kernel_launch::handleInvalidWorkGroupSize(), cl::sycl::detail::enqueue_kernel_launch::handleInvalidWorkItemSize(), cl::sycl::detail::image_impl< Dimensions >::image_impl(), cl::sycl::detail::kernel_impl::kernel_impl(), cl::sycl::detail::MemoryManager::map(), cl::sycl::detail::MemoryManager::prefetch_usm(), cl::sycl::detail::program_impl::get_info< info::program::reference_count >(), cl::sycl::detail::queue_impl::get_info< info::queue::reference_count >(), cl::sycl::detail::MemoryManager::releaseMemObj(), cl::sycl::detail::sampler_impl::sampler_impl(), cl::sycl::detail::SetKernelParamsAndLaunch(), cl::sycl::detail::SYCLMemObjT::SYCLMemObjT(), cl::sycl::detail::MemoryManager::unmap(), cl::sycl::detail::SYCLMemObjT::updateHostMemory(), cl::sycl::detail::queue_impl::wait(), cl::sycl::detail::waitForEvents(), cl::sycl::detail::Command::waitForEvents(), cl::sycl::detail::event_impl::waitInternal(), cl::sycl::detail::context_impl::~context_impl(), cl::sycl::detail::device_image_impl::~device_image_impl(), cl::sycl::detail::event_impl::~event_impl(), cl::sycl::detail::kernel_impl::~kernel_impl(), cl::sycl::detail::KernelProgramCache::~KernelProgramCache(), cl::sycl::detail::program_impl::~program_impl(), cl::sycl::detail::queue_impl::~queue_impl(), and cl::sycl::detail::sampler_impl::~sampler_impl().

◆ call() [2/2]

template<sycl::errc errc, PiApiKind PiApiOffset, typename... ArgsT>
void cl::sycl::detail::plugin::call ( ArgsT...  Args) const
inline
Exceptions
sycl::exceptions(errc)if the call was not successful.

Definition at line 194 of file plugin.hpp.

◆ call_nocheck()

template<PiApiKind PiApiOffset, typename... ArgsT>
RT::PiResult cl::sycl::detail::plugin::call_nocheck ( ArgsT...  Args) const
inline

Calls the PiApi, traces the call, and returns the result.

Usage:

PiResult Err = plugin.call<PiApiKind::pi>(Args);
Plugin.checkPiResult(Err); // Checks Result and throws a runtime_error
// exception.
See also
plugin::checkPiResult

Definition at line 145 of file plugin.hpp.

References cl::sycl::detail::pi::emitFunctionBeginTrace(), cl::sycl::detail::pi::emitFunctionEndTrace(), cl::sycl::detail::pi::emitFunctionWithArgsBeginTrace(), cl::sycl::detail::pi::emitFunctionWithArgsEndTrace(), cl::sycl::detail::pi::PI_TRACE_CALLS, cl::sycl::detail::pi::printArgs(), cl::sycl::detail::pi::printOuts(), and cl::sycl::detail::pi::trace().

Referenced by cl::sycl::detail::usm::alignedAlloc(), cl::sycl::detail::usm::alignedAllocHost(), cl::sycl::detail::MemoryManager::allocateMemSubBuffer(), cl::sycl::detail::ProgramManager::compile(), cl::sycl::detail::queue_impl::createQueue(), cl::sycl::detail::get_device_info< bool, info::device::atomic64 >::get(), cl::sycl::detail::get_device_info< std::vector< memory_order >, info::device::atomic_memory_order_capabilities >::get(), cl::sycl::detail::get_device_info< bool, info::device::usm_device_allocations >::get(), cl::sycl::detail::get_device_info< bool, info::device::usm_host_allocations >::get(), cl::sycl::detail::get_device_info< bool, info::device::usm_shared_allocations >::get(), cl::sycl::detail::get_device_info< bool, info::device::usm_restricted_shared_allocations >::get(), cl::sycl::detail::get_device_info< bool, info::device::usm_system_allocations >::get(), cl::sycl::detail::get_device_info< bool, info::device::ext_intel_mem_channel >::get(), cl::sycl::get_pointer_type(), cl::sycl::detail::getDeviceFunctionPointerImpl(), cl::sycl::detail::sampler_impl::getOrCreateSampler(), cl::sycl::detail::device_impl::has(), cl::sycl::detail::program_impl::has_kernel(), cl::sycl::detail::program_impl::link(), cl::sycl::detail::ProgramManager::link(), cl::sycl::detail::loadDeviceLibFallback(), cl::sycl::detail::program_impl::program_impl(), cl::sycl::detail::SetKernelParamsAndLaunch(), and cl::sycl::detail::device_impl::~device_impl().

◆ checkPiResult() [1/2]

template<typename Exception = cl::sycl::runtime_error>
void cl::sycl::detail::plugin::checkPiResult ( RT::PiResult  pi_result) const
inline

Checks return value from PI calls.

Exceptions
Exceptionif pi_result is not a PI_SUCCESS.

Definition at line 115 of file plugin.hpp.

References __SYCL_CHECK_OCL_CODE_THROW.

Referenced by cl::sycl::detail::queue_impl::createQueue(), cl::sycl::detail::sampler_impl::getOrCreateSampler(), cl::sycl::detail::program_impl::link(), and cl::sycl::detail::program_impl::program_impl().

◆ checkPiResult() [2/2]

template<sycl::errc errc>
void cl::sycl::detail::plugin::checkPiResult ( RT::PiResult  pi_result) const
inline
Exceptions
SYCL2020 exception(errc) if pi_result is not PI_SUCCESS

Definition at line 120 of file plugin.hpp.

References __SYCL_CHECK_CODE_THROW_VIA_ERRC.

◆ containsPiPlatform()

bool cl::sycl::detail::plugin::containsPiPlatform ( RT::PiPlatform  Platform)
inline

Definition at line 236 of file plugin.hpp.

◆ getBackend()

◆ getLibraryHandle() [1/2]

void* cl::sycl::detail::plugin::getLibraryHandle ( )
inline

Definition at line 201 of file plugin.hpp.

◆ getLibraryHandle() [2/2]

void* cl::sycl::detail::plugin::getLibraryHandle ( ) const
inline

Definition at line 200 of file plugin.hpp.

◆ getPiPlugin() [1/2]

RT::PiPlugin& cl::sycl::detail::plugin::getPiPlugin ( )
inline

Definition at line 106 of file plugin.hpp.

◆ getPiPlugin() [2/2]

const RT::PiPlugin& cl::sycl::detail::plugin::getPiPlugin ( ) const
inline

◆ getPiPluginPtr()

const std::shared_ptr<RT::PiPlugin>& cl::sycl::detail::plugin::getPiPluginPtr ( ) const
inline

Definition at line 107 of file plugin.hpp.

◆ getPlatformId()

int cl::sycl::detail::plugin::getPlatformId ( RT::PiPlatform  Platform)
inline

Definition at line 207 of file plugin.hpp.

◆ getPluginMutex()

std::shared_ptr<std::mutex> cl::sycl::detail::plugin::getPluginMutex ( )
inline

Definition at line 241 of file plugin.hpp.

Referenced by cl::sycl::detail::filterDeviceFilter().

◆ getStartingDeviceId()

int cl::sycl::detail::plugin::getStartingDeviceId ( RT::PiPlatform  Platform)
inline

Definition at line 222 of file plugin.hpp.

Referenced by cl::sycl::detail::filterDeviceFilter().

◆ operator=() [1/2]

plugin& cl::sycl::detail::plugin::operator= ( const plugin )
default

◆ operator=() [2/2]

plugin& cl::sycl::detail::plugin::operator= ( plugin &&  other)
defaultnoexcept

◆ reportPiError()

void cl::sycl::detail::plugin::reportPiError ( RT::PiResult  pi_result,
const char context 
) const
inline

◆ setLastDeviceId()

void cl::sycl::detail::plugin::setLastDeviceId ( RT::PiPlatform  Platform,
int  Id 
)
inline

Definition at line 231 of file plugin.hpp.

Referenced by cl::sycl::detail::filterDeviceFilter().

◆ unload()

int cl::sycl::detail::plugin::unload ( )
inline

Definition at line 202 of file plugin.hpp.

References cl::sycl::detail::pi::unloadPlugin().


The documentation for this class was generated from the following file:
cl::sycl::detail::pi::PiResult
::pi_result PiResult
Definition: pi.hpp:100
cl::sycl::detail::plugin::plugin
plugin()=delete