#include <detail/context_impl.hpp>
Public Types | |
enum | PropertySupport { NotSupported = 0, Supported = 1, NotChecked = 2 } |
using | CachedLibProgramsT = std::map< std::pair< DeviceLibExt, RT::PiDevice >, RT::PiProgram > |
Public Member Functions | |
context_impl (const device &Device, async_handler AsyncHandler, const property_list &PropList) | |
Constructs a context_impl using a single SYCL devices. More... | |
context_impl (const std::vector< cl::sycl::device > DeviceList, async_handler AsyncHandler, const property_list &PropList) | |
Constructs a context_impl using a list of SYCL devices. More... | |
context_impl (RT::PiContext PiContext, async_handler AsyncHandler, const plugin &Plugin) | |
Construct a context_impl using plug-in interoperability handle. More... | |
~context_impl () | |
template<typename propertyT > | |
bool | has_property () const |
Checks if this context_impl has a property of type propertyT. More... | |
template<typename propertyT > | |
propertyT | get_property () const |
Gets the specified property of this context_impl. More... | |
cl_context | get () const |
Gets OpenCL interoperability context handle. More... | |
bool | is_host () const |
Checks if this context is a host context. More... | |
const async_handler & | get_async_handler () const |
Gets asynchronous exception handler. More... | |
const plugin & | getPlugin () const |
PlatformImplPtr | getPlatformImpl () const |
template<info::context param> | |
info::param_traits< info::context, param >::return_type | get_info () const |
Queries this context for information. More... | |
RT::PiContext & | getHandleRef () |
Gets the underlying context object (if any) without reference count modification. More... | |
const RT::PiContext & | getHandleRef () const |
Gets the underlying context object (if any) without reference count modification. More... | |
const std::vector< device > & | getDevices () const |
Unlike ‘get_info<info::context::devices>’, this function returns a reference. More... | |
Locked< CachedLibProgramsT > | acquireCachedLibPrograms () |
In contrast to user programs, which are compiled from user code, library programs come from the SYCL runtime. More... | |
KernelProgramCache & | getKernelProgramCache () const |
bool | hasDevice (std::shared_ptr< detail::device_impl > Device) const |
Returns true if and only if context contains the given device. More... | |
pi_native_handle | getNative () const |
Gets the native handle of the SYCL context. More... | |
bool | isBufferLocationSupported () const |
Definition at line 31 of file context_impl.hpp.
using cl::sycl::detail::context_impl::CachedLibProgramsT = std::map<std::pair<DeviceLibExt, RT::PiDevice>, RT::PiProgram> |
Definition at line 144 of file context_impl.hpp.
Enumerator | |
---|---|
NotSupported | |
Supported | |
NotChecked |
Definition at line 176 of file context_impl.hpp.
cl::sycl::detail::context_impl::context_impl | ( | const device & | Device, |
async_handler | AsyncHandler, | ||
const property_list & | PropList | ||
) |
Constructs a context_impl using a single SYCL devices.
The constructed context_impl will use the AsyncHandler parameter to handle exceptions. PropList carries the properties of the constructed context_impl.
Device | is an instance of SYCL device. |
AsyncHandler | is an instance of async_handler. |
PropList | is an instance of property_list. |
Definition at line 28 of file context_impl.cpp.
References cl::sycl::detail::KernelProgramCache::setContextPtr().
cl::sycl::detail::context_impl::context_impl | ( | const std::vector< cl::sycl::device > | DeviceList, |
async_handler | AsyncHandler, | ||
const property_list & | PropList | ||
) |
Constructs a context_impl using a list of SYCL devices.
Newly created instance will save each SYCL device in the list. This requres that all devices in the list are associated with the same SYCL platform. The constructed context_impl will use the AsyncHandler parameter to handle exceptions. PropList carries the properties of the constructed context_impl.
DeviceList | is a list of SYCL device instances. |
AsyncHandler | is an instance of async_handler. |
PropList | is an instance of property_list. |
Definition at line 36 of file context_impl.cpp.
References __SYCL_PI_CONTEXT_PROPERTIES_CUDA_PRIMARY, cl::sycl::detail::plugin::call(), cl::sycl::ext_oneapi_cuda, cl::sycl::detail::plugin::getBackend(), getHandleRef(), getPlugin(), cl::sycl::detail::getSyclObjImpl(), cl::sycl::property_list::has_property(), piContextCreate(), and cl::sycl::detail::KernelProgramCache::setContextPtr().
cl::sycl::detail::context_impl::context_impl | ( | RT::PiContext | PiContext, |
async_handler | AsyncHandler, | ||
const plugin & | Plugin | ||
) |
Construct a context_impl using plug-in interoperability handle.
The constructed context_impl will use the AsyncHandler parameter to handle exceptions.
PiContext | is an instance of a valid plug-in context handle. |
AsyncHandler | is an instance of async_handler. |
Plugin | is the reference to the underlying Plugin that this context is associated with. |
Definition at line 68 of file context_impl.cpp.
References cl::sycl::detail::plugin::call(), cl::sycl::detail::platform_impl::getPlatformFromPiDevice(), getPlugin(), cl::sycl::opencl, PI_CONTEXT_INFO_DEVICES, PI_CONTEXT_INFO_NUM_DEVICES, piContextGetInfo(), piContextRetain(), and cl::sycl::detail::KernelProgramCache::setContextPtr().
cl::sycl::detail::context_impl::~context_impl | ( | ) |
Definition at line 119 of file context_impl.cpp.
References cl::sycl::detail::plugin::call(), getPlugin(), piContextRelease(), and piProgramRelease().
|
inline |
In contrast to user programs, which are compiled from user code, library programs come from the SYCL runtime.
They are identified by the corresponding extension:
cl_intel_devicelib_assert -> #<pi_program with assert functions> cl_intel_devicelib_complex -> #<pi_program with complex functions> etc.
See ‘doc/design/DeviceLibExtensions.rst’ for more details.
Definition at line 159 of file context_impl.hpp.
cl_context cl::sycl::detail::context_impl::get | ( | ) | const |
Gets OpenCL interoperability context handle.
Definition at line 106 of file context_impl.cpp.
References cl::sycl::detail::plugin::call(), getPlugin(), PI_INVALID_CONTEXT, and piContextRetain().
const async_handler & cl::sycl::detail::context_impl::get_async_handler | ( | ) | const |
Gets asynchronous exception handler.
Definition at line 130 of file context_impl.cpp.
info::param_traits<info::context, param>::return_type cl::sycl::detail::context_impl::get_info | ( | ) | const |
Queries this context for information.
The return type depends on information being queried.
|
inline |
Gets the specified property of this context_impl.
Throws invalid_object_error if this context_impl does not have a property of type propertyT.
Definition at line 87 of file context_impl.hpp.
|
inline |
Unlike ‘get_info<info::context::devices>’, this function returns a reference.
Definition at line 141 of file context_impl.hpp.
const RT::PiContext & cl::sycl::detail::context_impl::getHandleRef | ( | ) |
Gets the underlying context object (if any) without reference count modification.
Caller must ensure the returned object lives on stack only. It can also be safely passed to the underlying native runtime API. Warning. Returned reference will be invalid if context_impl was destroyed.
Definition at line 187 of file context_impl.cpp.
Referenced by context_impl(), and getNative().
const RT::PiContext& cl::sycl::detail::context_impl::getHandleRef | ( | ) | const |
Gets the underlying context object (if any) without reference count modification.
Caller must ensure the returned object lives on stack only. It can also be safely passed to the underlying native runtime API. Warning. Returned reference will be invalid if context_impl was destroyed.
KernelProgramCache & cl::sycl::detail::context_impl::getKernelProgramCache | ( | ) | const |
Definition at line 190 of file context_impl.cpp.
pi_native_handle cl::sycl::detail::context_impl::getNative | ( | ) | const |
Gets the native handle of the SYCL context.
Definition at line 202 of file context_impl.cpp.
References getHandleRef(), getPlugin(), cl::sycl::opencl, piContextRetain(), and piextContextGetNativeHandle().
|
inline |
Definition at line 110 of file context_impl.hpp.
|
inline |
Definition at line 107 of file context_impl.hpp.
Referenced by context_impl(), get(), getNative(), and ~context_impl().
|
inline |
Checks if this context_impl has a property of type propertyT.
Definition at line 77 of file context_impl.hpp.
bool cl::sycl::detail::context_impl::hasDevice | ( | std::shared_ptr< detail::device_impl > | Device | ) | const |
Returns true if and only if context contains the given device.
Definition at line 194 of file context_impl.cpp.
References cl::sycl::detail::getSyclObjImpl().
bool cl::sycl::detail::context_impl::is_host | ( | ) | const |
Checks if this context is a host context.
Definition at line 117 of file context_impl.cpp.
bool cl::sycl::detail::context_impl::isBufferLocationSupported | ( | ) | const |
Definition at line 211 of file context_impl.cpp.
References NotChecked, NotSupported, and Supported.