#include <detail/queue_impl.hpp>
Public Types | |
using | SubmitPostProcessF = std::function< void(bool, bool, event &)> |
Public Member Functions | |
queue_impl (const DeviceImplPtr &Device, const async_handler &AsyncHandler, const property_list &PropList) | |
Constructs a SYCL queue from a device using an async_handler and property_list provided. More... | |
queue_impl (const DeviceImplPtr &Device, const ContextImplPtr &Context, const async_handler &AsyncHandler, const property_list &PropList) | |
Constructs a SYCL queue with an async_handler and property_list provided form a device and a context. More... | |
queue_impl (RT::PiQueue PiQueue, const ContextImplPtr &Context, const async_handler &AsyncHandler) | |
Constructs a SYCL queue from plugin interoperability handle. More... | |
~queue_impl () | |
cl_command_queue | get () |
context | get_context () const |
const plugin & | getPlugin () const |
const ContextImplPtr & | getContextImplPtr () const |
const DeviceImplPtr & | getDeviceImplPtr () const |
device | get_device () const |
bool | is_host () const |
bool | has_discard_events_support () const |
template<info::queue Param> | |
info::param_traits< info::queue, Param >::return_type | get_info () const |
Queries SYCL queue for information. More... | |
event | submit (const std::function< void(handler &)> &CGF, const std::shared_ptr< queue_impl > &Self, const std::shared_ptr< queue_impl > &SecondQueue, const detail::code_location &Loc, const SubmitPostProcessF *PostProcess=nullptr) |
Submits a command group function object to the queue, in order to be scheduled for execution on the device. More... | |
event | submit (const std::function< void(handler &)> &CGF, const std::shared_ptr< queue_impl > &Self, const detail::code_location &Loc, const SubmitPostProcessF *PostProcess=nullptr) |
Submits a command group function object to the queue, in order to be scheduled for execution on the device. More... | |
void | wait (const detail::code_location &Loc={}) |
Performs a blocking wait for the completion of all enqueued tasks in the queue. More... | |
exception_list | getExceptionList () const |
void | wait_and_throw (const detail::code_location &Loc={}) |
void | throw_asynchronous () |
Performs a blocking wait for the completion of all enqueued tasks in the queue. More... | |
RT::PiQueue | createQueue (QueueOrder Order) |
Creates PI queue. More... | |
RT::PiQueue & | getExclusiveQueueHandleRef () |
RT::PiQueue & | getHandleRef () |
template<typename propertyT > | |
bool | has_property () const |
template<typename propertyT > | |
propertyT | get_property () const |
event | memset (const std::shared_ptr< queue_impl > &Self, void *Ptr, int Value, size_t Count, const std::vector< event > &DepEvents) |
Fills the memory pointed by a USM pointer with the value specified. More... | |
event | memcpy (const std::shared_ptr< queue_impl > &Self, void *Dest, const void *Src, size_t Count, const std::vector< event > &DepEvents) |
Copies data from one memory region to another, both pointed by USM pointers. More... | |
event | mem_advise (const std::shared_ptr< queue_impl > &Self, const void *Ptr, size_t Length, pi_mem_advice Advice, const std::vector< event > &DepEvents) |
Provides additional information to the underlying runtime about how different allocations are used. More... | |
void | reportAsyncException (const std::exception_ptr &ExceptionPtr) |
Puts exception to the list of asynchronous ecxeptions. More... | |
ThreadPool & | getThreadPool () |
pi_native_handle | getNative () const |
Gets the native handle of the SYCL queue. More... | |
buffer< AssertHappened, 1 > & | getAssertHappenedBuffer () |
Static Public Member Functions | |
static ContextImplPtr | getDefaultOrNew (const DeviceImplPtr &Device) |
Public Attributes | |
const bool | MDiscardEvents |
const bool | MIsProfilingEnabled |
Protected Member Functions | |
template<typename HandlerType = handler> | |
void | finalizeHandler (HandlerType &Handler, const CG::CGTYPE &Type, event &EventRet) |
Definition at line 54 of file queue_impl.hpp.
using cl::sycl::detail::queue_impl::SubmitPostProcessF = std::function<void(bool, bool, event &)> |
Definition at line 207 of file queue_impl.hpp.
|
inline |
Constructs a SYCL queue from a device using an async_handler and property_list provided.
Device | is a SYCL device that is used to dispatch tasks submitted to the queue. |
AsyncHandler | is a SYCL asynchronous exception handler. |
PropList | is a list of properties to use for queue construction. |
Definition at line 79 of file queue_impl.hpp.
|
inline |
Constructs a SYCL queue with an async_handler and property_list provided form a device and a context.
Device | is a SYCL device that is used to dispatch tasks submitted to the queue. |
Context | is a SYCL context to associate with the queue being constructed. |
AsyncHandler | is a SYCL asynchronous exception handler. |
PropList | is a list of properties to use for queue construction. |
Definition at line 92 of file queue_impl.hpp.
|
inline |
Constructs a SYCL queue from plugin interoperability handle.
PiQueue | is a raw PI queue handle. |
Context | is a SYCL context to associate with the queue being constructed. |
AsyncHandler | is a SYCL asynchronous exception handler. |
Definition at line 132 of file queue_impl.hpp.
|
inline |
Definition at line 163 of file queue_impl.hpp.
References cl::sycl::detail::plugin::call(), cl::sycl::detail::pi::getPlugin(), and piQueueRelease().
|
inline |
Creates PI queue.
Order | specifies whether the queue being constructed as in-order or out-of-order. |
Definition at line 297 of file queue_impl.hpp.
References __SYCL_PI_CUDA_USE_DEFAULT_STREAM, cl::sycl::detail::plugin::call_nocheck(), cl::sycl::detail::plugin::checkPiResult(), cl::sycl::detail::plugin::getBackend(), cl::sycl::detail::pi::getPlugin(), cl::sycl::detail::OOO, cl::sycl::detail::Ordered, PI_INVALID_QUEUE_PROPERTIES, PI_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, PI_QUEUE_PROFILING_ENABLE, and piQueueCreate().
|
inlineprotected |
Definition at line 447 of file queue_impl.hpp.
|
inline |
Definition at line 171 of file queue_impl.hpp.
References cl::sycl::detail::plugin::call(), cl::sycl::detail::pi::getPlugin(), PI_INVALID_QUEUE, and piQueueRetain().
|
inline |
Definition at line 182 of file queue_impl.hpp.
|
inline |
Definition at line 193 of file queue_impl.hpp.
info::param_traits<info::queue, Param>::return_type cl::sycl::detail::queue_impl::get_info | ( | ) | const |
Queries SYCL queue for information.
The return type depends on information being queried.
|
inline |
Definition at line 381 of file queue_impl.hpp.
|
inline |
Definition at line 440 of file queue_impl.hpp.
|
inline |
Definition at line 188 of file queue_impl.hpp.
|
inlinestatic |
Definition at line 58 of file queue_impl.hpp.
References cl::sycl::detail::getSyclObjImpl().
|
inline |
Definition at line 190 of file queue_impl.hpp.
|
inline |
Definition at line 262 of file queue_impl.hpp.
|
inline |
Definition at line 334 of file queue_impl.hpp.
References cl::sycl::detail::plugin::call(), cl::sycl::detail::pi::getPlugin(), cl::sycl::detail::MaxNumQueues, cl::sycl::detail::Ordered, and piQueueFinish().
|
inline |
Definition at line 365 of file queue_impl.hpp.
pi_native_handle cl::sycl::detail::queue_impl::getNative | ( | ) | const |
Gets the native handle of the SYCL queue.
Definition at line 322 of file queue_impl.cpp.
References cl::sycl::detail::plugin::call(), cl::sycl::detail::plugin::getBackend(), cl::sycl::detail::pi::getPlugin(), piextQueueGetNativeHandle(), and piQueueRetain().
|
inline |
Definition at line 186 of file queue_impl.hpp.
|
inline |
Definition at line 431 of file queue_impl.hpp.
|
inline |
Definition at line 199 of file queue_impl.hpp.
|
inline |
Definition at line 374 of file queue_impl.hpp.
|
inline |
Definition at line 196 of file queue_impl.hpp.
event cl::sycl::detail::queue_impl::mem_advise | ( | const std::shared_ptr< queue_impl > & | Self, |
const void * | Ptr, | ||
size_t | Length, | ||
pi_mem_advice | Advice, | ||
const std::vector< event > & | DepEvents | ||
) |
Provides additional information to the underlying runtime about how different allocations are used.
Self | is a shared_ptr to this queue. |
Ptr | is a USM pointer to the allocation. |
Length | is a number of bytes in the allocation. |
Advice | is a device-defined advice for the specified allocation. |
DepEvents | is a vector of events that specifies the kernel dependencies. |
Definition at line 104 of file queue_impl.cpp.
References cl::sycl::detail::createDiscardedEvent(), cl::sycl::detail::getOrWaitEvents(), and cl::sycl::detail::prepareUSMEvent().
event cl::sycl::detail::queue_impl::memcpy | ( | const std::shared_ptr< queue_impl > & | Self, |
void * | Dest, | ||
const void * | Src, | ||
size_t | Count, | ||
const std::vector< event > & | DepEvents | ||
) |
Copies data from one memory region to another, both pointed by USM pointers.
Self | is a shared_ptr to this queue. |
Dest | is a USM pointer to the destination memory. |
Src | is a USM pointer to the source memory. |
Count | is a number of bytes to copy. |
DepEvents | is a vector of events that specifies the kernel dependencies. |
Definition at line 82 of file queue_impl.cpp.
References cl::sycl::detail::createDiscardedEvent(), cl::sycl::detail::getOrWaitEvents(), and cl::sycl::detail::prepareUSMEvent().
event cl::sycl::detail::queue_impl::memset | ( | const std::shared_ptr< queue_impl > & | Self, |
void * | Ptr, | ||
int | Value, | ||
size_t | Count, | ||
const std::vector< event > & | DepEvents | ||
) |
Fills the memory pointed by a USM pointer with the value specified.
Self | is a shared_ptr to this queue. |
Ptr | is a USM pointer to the memory to fill. |
Value | is a value to be set. Value is cast as an unsigned char. |
Count | is a number of bytes to fill. |
DepEvents | is a vector of events that specifies the kernel dependencies. |
Definition at line 60 of file queue_impl.cpp.
References cl::sycl::detail::createDiscardedEvent(), cl::sycl::detail::getOrWaitEvents(), and cl::sycl::detail::prepareUSMEvent().
|
inline |
Puts exception to the list of asynchronous ecxeptions.
ExceptionPtr | is a pointer to exception to be put. |
Definition at line 426 of file queue_impl.hpp.
|
inline |
Submits a command group function object to the queue, in order to be scheduled for execution on the device.
CGF | is a function object containing command group. |
Self | is a shared_ptr to this queue. |
Loc | is the code location of the submit call (default argument) |
StoreAdditionalInfo | makes additional info be stored in event_impl |
Definition at line 247 of file queue_impl.hpp.
|
inline |
Submits a command group function object to the queue, in order to be scheduled for execution on the device.
On a kernel error, this command group function object is then scheduled for execution on a secondary queue.
CGF | is a function object containing command group. |
Self | is a shared_ptr to this queue. |
SecondQueue | is a shared_ptr to the secondary queue. |
Loc | is the code location of the submit call (default argument) |
StoreAdditionalInfo | makes additional info be stored in event_impl |
Definition at line 222 of file queue_impl.hpp.
|
inline |
Performs a blocking wait for the completion of all enqueued tasks in the queue.
Synchronous errors will be reported through SYCL exceptions. Asynchronous errors will be passed to the async_handler passed to the queue on construction. If no async_handler was provided then asynchronous exceptions will be lost.
Definition at line 277 of file queue_impl.hpp.
References cl::sycl::exception_list::size().
void cl::sycl::detail::queue_impl::wait | ( | const detail::code_location & | Loc = {} | ) |
Performs a blocking wait for the completion of all enqueued tasks in the queue.
Synchronous errors will be reported through SYCL exceptions.
Loc | is the code location of the submit call (default argument) |
Definition at line 269 of file queue_impl.cpp.
References cl::sycl::detail::plugin::call(), cl::sycl::detail::pi::getPlugin(), piQueueFinish(), and cl::sycl::detail::SYCL_STREAM_NAME.
|
inline |
Loc | is the code location of the submit call (default argument) |
Definition at line 265 of file queue_impl.hpp.
const bool cl::sycl::detail::queue_impl::MDiscardEvents |
Definition at line 588 of file queue_impl.hpp.
const bool cl::sycl::detail::queue_impl::MIsProfilingEnabled |
Definition at line 589 of file queue_impl.hpp.