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

#include <detail/queue_impl.hpp>

Collaboration diagram for sycl::_V1::detail::queue_impl:

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 (RT::PiQueue PiQueue, const ContextImplPtr &Context, const async_handler &AsyncHandler, const property_list &PropList)
 Constructs a SYCL queue from plugin interoperability handle. More...
 
 ~queue_impl ()
 
cl_command_queue get ()
 
context get_context () const
 
const PluginPtrgetPlugin () const
 
const ContextImplPtrgetContextImplPtr () const
 
const DeviceImplPtrgetDeviceImplPtr () const
 
device get_device () const
 
bool is_host () const
 
bool has_discard_events_support () const
 
bool isInOrder () const
 
template<typename Param >
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 noexcept
 
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...
 
ThreadPoolgetThreadPool ()
 
pi_native_handle getNative (int32_t &NativeHandleDesc) const
 Gets the native handle of the SYCL queue. More...
 
buffer< AssertHappened, 1 > & getAssertHappenedBuffer ()
 
void registerStreamServiceEvent (const EventImplPtr &Event)
 
bool ext_oneapi_empty () const
 
bool is_in_fusion_mode ()
 Check whether the queue is in fusion mode. More...
 
event memcpyToDeviceGlobal (const std::shared_ptr< queue_impl > &Self, void *DeviceGlobalPtr, const void *Src, bool IsDeviceImageScope, size_t NumBytes, size_t Offset, const std::vector< event > &DepEvents)
 
event memcpyFromDeviceGlobal (const std::shared_ptr< queue_impl > &Self, void *Dest, const void *DeviceGlobalPtr, bool IsDeviceImageScope, size_t NumBytes, size_t Offset, const std::vector< event > &DepEvents)
 
bool isProfilingLimited ()
 

Static Public Member Functions

static ContextImplPtr getDefaultOrNew (const DeviceImplPtr &Device)
 
static RT::PiQueueProperties createPiQueueProperties (const property_list &PropList, QueueOrder Order)
 Creates PI properties array. More...
 

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)
 
event submit_impl (const std::function< void(handler &)> &CGF, const std::shared_ptr< queue_impl > &Self, const std::shared_ptr< queue_impl > &PrimaryQueue, const std::shared_ptr< queue_impl > &SecondaryQueue, const detail::code_location &Loc, const SubmitPostProcessF *PostProcess)
 Performs command group submission to the queue. More...
 
void * instrumentationProlog (const detail::code_location &CodeLoc, std::string &Name, int32_t StreamID, uint64_t &iid)
 
void instrumentationEpilog (void *TelementryEvent, std::string &Name, int32_t StreamID, uint64_t IId)
 
void addSharedEvent (const event &Event)
 queue_impl.addEvent tracks events with weak pointers but some events have no other owners. More...
 
void addEvent (const event &Event)
 Stores an event that should be associated with the queue. More...
 

Protected Attributes

std::mutex MMutex
 Protects all the fields that can be changed by class' methods. More...
 
DeviceImplPtr MDevice
 
const ContextImplPtr MContext
 
std::vector< std::weak_ptr< event_impl > > MEventsWeak
 These events are tracked, but not owned, by the queue. More...
 
std::vector< eventMEventsShared
 Events without data dependencies (such as USM) need an owner, additionally, USM operations are not added to the scheduler command graph, queue is the only owner on the runtime side. More...
 
exception_list MExceptions
 
const async_handler MAsyncHandler
 
const property_list MPropList
 
std::vector< RT::PiQueue > MQueues
 List of queues created for FPGA device from a single SYCL queue. More...
 
size_t MNextQueueIdx = 0
 Iterator through MQueues. More...
 
const bool MHostQueue = false
 
bool MEmulateOOO = false
 Indicates that a native out-of-order queue could not be created and we need to emulate it with multiple native in-order queues. More...
 
buffer< AssertHappened, 1 > MAssertHappenedBuffer
 
event MLastEvent
 
std::mutex MLastEventMtx
 
CG::CGTYPE MLastCGType = CG::CGTYPE::None
 
const bool MIsInorder
 
std::vector< EventImplPtrMStreamsServiceEvents
 
void * MTraceEvent = nullptr
 
uint8_t MStreamID
 The stream under which the traces are emitted from the queue object. More...
 
uint64_t MInstanceID = 0
 The instance ID of the trace event for queue object. More...
 
bool MLimitedProfiling = false
 
const bool MHasDiscardEventsSupport
 

Detailed Description

Definition at line 61 of file queue_impl.hpp.

Member Typedef Documentation

◆ SubmitPostProcessF

using sycl::_V1::detail::queue_impl::SubmitPostProcessF = std::function<void(bool, bool, event &)>

Definition at line 340 of file queue_impl.hpp.

Constructor & Destructor Documentation

◆ queue_impl() [1/4]

sycl::_V1::detail::queue_impl::queue_impl ( const DeviceImplPtr Device,
const async_handler AsyncHandler,
const property_list PropList 
)
inline

Constructs a SYCL queue from a device using an async_handler and property_list provided.

Parameters
Deviceis a SYCL device that is used to dispatch tasks submitted to the queue.
AsyncHandleris a SYCL asynchronous exception handler.
PropListis a list of properties to use for queue construction.

Definition at line 84 of file queue_impl.hpp.

◆ queue_impl() [2/4]

sycl::_V1::detail::queue_impl::queue_impl ( const DeviceImplPtr Device,
const ContextImplPtr Context,
const async_handler AsyncHandler,
const property_list PropList 
)
inline

Constructs a SYCL queue with an async_handler and property_list provided form a device and a context.

Parameters
Deviceis a SYCL device that is used to dispatch tasks submitted to the queue.
Contextis a SYCL context to associate with the queue being constructed.
AsyncHandleris a SYCL asynchronous exception handler.
PropListis a list of properties to use for queue construction.

Definition at line 97 of file queue_impl.hpp.

◆ queue_impl() [3/4]

sycl::_V1::detail::queue_impl::queue_impl ( RT::PiQueue  PiQueue,
const ContextImplPtr Context,
const async_handler AsyncHandler 
)
inline

Constructs a SYCL queue from plugin interoperability handle.

Parameters
PiQueueis a raw PI queue handle.
Contextis a SYCL context to associate with the queue being constructed.
AsyncHandleris a SYCL asynchronous exception handler.

Definition at line 250 of file queue_impl.hpp.

◆ queue_impl() [4/4]

sycl::_V1::detail::queue_impl::queue_impl ( RT::PiQueue  PiQueue,
const ContextImplPtr Context,
const async_handler AsyncHandler,
const property_list PropList 
)
inline

Constructs a SYCL queue from plugin interoperability handle.

Parameters
PiQueueis a raw PI queue handle.
Contextis a SYCL context to associate with the queue being constructed.
AsyncHandleris a SYCL asynchronous exception handler.
PropListis the queue properties.

Definition at line 270 of file queue_impl.hpp.

◆ ~queue_impl()

sycl::_V1::detail::queue_impl::~queue_impl ( )
inline

Definition at line 283 of file queue_impl.hpp.

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

Member Function Documentation

◆ addEvent()

void sycl::_V1::detail::queue_impl::addEvent ( const event Event)
protected

Stores an event that should be associated with the queue.

Parameters
Eventis the event to be stored

Definition at line 326 of file queue_impl.cpp.

References sycl::_V1::detail::getSyclObjImpl().

◆ addSharedEvent()

void sycl::_V1::detail::queue_impl::addSharedEvent ( const event Event)
protected

queue_impl.addEvent tracks events with weak pointers but some events have no other owners.

addSharedEvent - queue_impl tracks events with weak pointers but some events have no other owner.

addSharedEvent() follows events with a shared pointer.

Parameters
Eventis the event to be stored

In this case, addSharedEvent will have the queue track the events via a shared pointer.

Definition at line 349 of file queue_impl.cpp.

◆ createPiQueueProperties()

static RT::PiQueueProperties sycl::_V1::detail::queue_impl::createPiQueueProperties ( const property_list PropList,
QueueOrder  Order 
)
inlinestatic

Creates PI properties array.

Parameters
PropListSYCL properties.
Orderspecifies whether queue is in-order or out-of-order.
PropertiesPI properties array created from SYCL properties.

Definition at line 428 of file queue_impl.hpp.

References __SYCL_PI_CUDA_USE_DEFAULT_STREAM, sycl::_V1::property_list::has_property(), sycl::_V1::make_error_code(), sycl::_V1::detail::OOO, PI_EXT_ONEAPI_QUEUE_FLAG_DISCARD_EVENTS, PI_EXT_ONEAPI_QUEUE_FLAG_PRIORITY_HIGH, PI_EXT_ONEAPI_QUEUE_FLAG_PRIORITY_LOW, PI_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE, and PI_QUEUE_FLAG_PROFILING_ENABLE.

◆ createQueue()

RT::PiQueue sycl::_V1::detail::queue_impl::createQueue ( QueueOrder  Order)
inline

Creates PI queue.

Parameters
Orderspecifies whether the queue being constructed as in-order or out-of-order.

Definition at line 477 of file queue_impl.hpp.

References sycl::_V1::detail::pi::getPlugin(), sycl::_V1::detail::Ordered, PI_QUEUE_COMPUTE_INDEX, PI_QUEUE_FLAGS, and piextQueueCreate().

◆ ext_oneapi_empty()

bool sycl::_V1::detail::queue_impl::ext_oneapi_empty ( ) const

◆ finalizeHandler()

template<typename HandlerType = handler>
void sycl::_V1::detail::queue_impl::finalizeHandler ( HandlerType &  Handler,
const CG::CGTYPE Type,
event EventRet 
)
inlineprotected

Definition at line 651 of file queue_impl.hpp.

◆ get()

cl_command_queue sycl::_V1::detail::queue_impl::get ( )
inline
Returns
an OpenCL interoperability queue handle.

Definition at line 303 of file queue_impl.hpp.

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

◆ get_context()

context sycl::_V1::detail::queue_impl::get_context ( ) const
inline
Returns
an associated SYCL context.

Definition at line 314 of file queue_impl.hpp.

◆ get_device()

device sycl::_V1::detail::queue_impl::get_device ( ) const
inline
Returns
an associated SYCL device.

Definition at line 325 of file queue_impl.hpp.

◆ get_info()

template<typename Param >
Param::return_type sycl::_V1::detail::queue_impl::get_info ( ) const

Queries SYCL queue for information.

The return type depends on information being queried.

◆ get_property()

template<typename propertyT >
propertyT sycl::_V1::detail::queue_impl::get_property ( ) const
inline
Returns
a copy of the property of type PropertyT that the queue was constructed with. If the queue was not constructed with the PropertyT property, an invalid_object_error SYCL exception.

Definition at line 556 of file queue_impl.hpp.

◆ getAssertHappenedBuffer()

buffer<AssertHappened, 1>& sycl::_V1::detail::queue_impl::getAssertHappenedBuffer ( )
inline

Definition at line 615 of file queue_impl.hpp.

◆ getContextImplPtr()

const ContextImplPtr& sycl::_V1::detail::queue_impl::getContextImplPtr ( ) const
inline

Definition at line 320 of file queue_impl.hpp.

◆ getDefaultOrNew()

static ContextImplPtr sycl::_V1::detail::queue_impl::getDefaultOrNew ( const DeviceImplPtr Device)
inlinestatic

Definition at line 65 of file queue_impl.hpp.

References sycl::_V1::detail::getSyclObjImpl().

◆ getDeviceImplPtr()

const DeviceImplPtr& sycl::_V1::detail::queue_impl::getDeviceImplPtr ( ) const
inline

Definition at line 322 of file queue_impl.hpp.

◆ getExceptionList()

exception_list sycl::_V1::detail::queue_impl::getExceptionList ( ) const
inline
Returns
list of asynchronous exceptions occurred during execution.

Definition at line 391 of file queue_impl.hpp.

◆ getExclusiveQueueHandleRef()

RT::PiQueue& sycl::_V1::detail::queue_impl::getExclusiveQueueHandleRef ( )
inline
Returns
a raw PI handle for a free queue. The returned handle is not retained. It is caller responsibility to make sure queue is still alive.

Definition at line 509 of file queue_impl.hpp.

References sycl::_V1::detail::pi::getPlugin(), sycl::_V1::detail::MaxNumQueues, sycl::_V1::detail::Ordered, and piQueueFinish().

◆ getHandleRef()

RT::PiQueue& sycl::_V1::detail::queue_impl::getHandleRef ( )
inline
Returns
a raw PI queue handle. The returned handle is not retained. It is caller responsibility to make sure queue is still alive.

Definition at line 540 of file queue_impl.hpp.

◆ getNative()

pi_native_handle sycl::_V1::detail::queue_impl::getNative ( int32_t &  NativeHandleDesc) const

Gets the native handle of the SYCL queue.

Returns
a native handle.

Definition at line 520 of file queue_impl.cpp.

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

◆ getPlugin()

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

Definition at line 318 of file queue_impl.hpp.

◆ getThreadPool()

ThreadPool& sycl::_V1::detail::queue_impl::getThreadPool ( )
inline

Definition at line 606 of file queue_impl.hpp.

◆ has_discard_events_support()

bool sycl::_V1::detail::queue_impl::has_discard_events_support ( ) const
inline
Returns
true if this queue has discard_events support.

Definition at line 331 of file queue_impl.hpp.

◆ has_property()

template<typename propertyT >
bool sycl::_V1::detail::queue_impl::has_property ( ) const
inlinenoexcept
Returns
true if the queue was constructed with property specified by PropertyT.

Definition at line 549 of file queue_impl.hpp.

◆ instrumentationEpilog()

void sycl::_V1::detail::queue_impl::instrumentationEpilog ( void *  TelementryEvent,
std::string &  Name,
int32_t  StreamID,
uint64_t  IId 
)
protected

Definition at line 446 of file queue_impl.cpp.

◆ instrumentationProlog()

◆ is_host()

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

Definition at line 328 of file queue_impl.hpp.

◆ is_in_fusion_mode()

bool sycl::_V1::detail::queue_impl::is_in_fusion_mode ( )
inline

Check whether the queue is in fusion mode.

Returns
true if the queue is in fusion mode, false otherwise.

Definition at line 629 of file queue_impl.hpp.

◆ isInOrder()

bool sycl::_V1::detail::queue_impl::isInOrder ( ) const
inline

Definition at line 333 of file queue_impl.hpp.

◆ isProfilingLimited()

bool sycl::_V1::detail::queue_impl::isProfilingLimited ( )
inline

Definition at line 646 of file queue_impl.hpp.

◆ mem_advise()

event sycl::_V1::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.

Parameters
Selfis a shared_ptr to this queue.
Ptris a USM pointer to the allocation.
Lengthis a number of bytes in the allocation.
Adviceis a device-defined advice for the specified allocation.
DepEventsis a vector of events that specifies the kernel dependencies.
Returns
an event representing advise operation.

Definition at line 188 of file queue_impl.cpp.

References sycl::_V1::detail::createDiscardedEvent(), sycl::_V1::detail::getOrWaitEvents(), and sycl::_V1::detail::prepareUSMEvent().

◆ memcpy()

event sycl::_V1::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.

Parameters
Selfis a shared_ptr to this queue.
Destis a USM pointer to the destination memory.
Srcis a USM pointer to the source memory.
Countis a number of bytes to copy.
DepEventsis a vector of events that specifies the kernel dependencies.
Returns
an event representing copy operation.

Definition at line 125 of file queue_impl.cpp.

References sycl::_V1::detail::createDiscardedEvent(), sycl::_V1::detail::getOrWaitEvents(), sycl::_V1::detail::prepareUSMEvent(), and sycl::_V1::detail::SYCL_MEM_ALLOC_STREAM_NAME.

◆ memcpyFromDeviceGlobal()

event sycl::_V1::detail::queue_impl::memcpyFromDeviceGlobal ( const std::shared_ptr< queue_impl > &  Self,
void *  Dest,
const void *  DeviceGlobalPtr,
bool  IsDeviceImageScope,
size_t  NumBytes,
size_t  Offset,
const std::vector< event > &  DepEvents 
)

◆ memcpyToDeviceGlobal()

event sycl::_V1::detail::queue_impl::memcpyToDeviceGlobal ( const std::shared_ptr< queue_impl > &  Self,
void *  DeviceGlobalPtr,
const void *  Src,
bool  IsDeviceImageScope,
size_t  NumBytes,
size_t  Offset,
const std::vector< event > &  DepEvents 
)

◆ memset()

event sycl::_V1::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.

Parameters
Selfis a shared_ptr to this queue.
Ptris a USM pointer to the memory to fill.
Valueis a value to be set. Value is cast as an unsigned char.
Countis a number of bytes to fill.
DepEventsis a vector of events that specifies the kernel dependencies.
Returns
an event representing fill operation.

Definition at line 63 of file queue_impl.cpp.

References sycl::_V1::detail::createDiscardedEvent(), sycl::_V1::detail::getOrWaitEvents(), sycl::_V1::detail::prepareUSMEvent(), and sycl::_V1::detail::SYCL_MEM_ALLOC_STREAM_NAME.

◆ registerStreamServiceEvent()

void sycl::_V1::detail::queue_impl::registerStreamServiceEvent ( const EventImplPtr Event)
inline

Definition at line 619 of file queue_impl.hpp.

◆ reportAsyncException()

void sycl::_V1::detail::queue_impl::reportAsyncException ( const std::exception_ptr &  ExceptionPtr)
inline

Puts exception to the list of asynchronous ecxeptions.

Parameters
ExceptionPtris a pointer to exception to be put.

Definition at line 601 of file queue_impl.hpp.

◆ submit() [1/2]

event sycl::_V1::detail::queue_impl::submit ( const std::function< void(handler &)> &  CGF,
const std::shared_ptr< queue_impl > &  Self,
const detail::code_location Loc,
const SubmitPostProcessF PostProcess = nullptr 
)
inline

Submits a command group function object to the queue, in order to be scheduled for execution on the device.

Parameters
CGFis a function object containing command group.
Selfis a shared_ptr to this queue.
Locis the code location of the submit call (default argument)
StoreAdditionalInfomakes additional info be stored in event_impl
Returns
a SYCL event object for the submitted command group.

Definition at line 376 of file queue_impl.hpp.

◆ submit() [2/2]

event sycl::_V1::detail::queue_impl::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 
)
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.

Parameters
CGFis a function object containing command group.
Selfis a shared_ptr to this queue.
SecondQueueis a shared_ptr to the secondary queue.
Locis the code location of the submit call (default argument)
StoreAdditionalInfomakes additional info be stored in event_impl
Returns
a SYCL event object, which corresponds to the queue the command group is being enqueued on.

Definition at line 355 of file queue_impl.hpp.

◆ submit_impl()

event sycl::_V1::detail::queue_impl::submit_impl ( const std::function< void(handler &)> &  CGF,
const std::shared_ptr< queue_impl > &  Self,
const std::shared_ptr< queue_impl > &  PrimaryQueue,
const std::shared_ptr< queue_impl > &  SecondaryQueue,
const detail::code_location Loc,
const SubmitPostProcessF PostProcess 
)
inlineprotected

Performs command group submission to the queue.

Parameters
CGFis a function object containing command group.
Selfis a pointer to this queue.
PrimaryQueueis a pointer to the primary queue. This may be the same as Self.
SecondaryQueueis a pointer to the secondary queue. This may be the same as Self.
Locis the code location of the submit call (default argument)
Returns
a SYCL event representing submitted command group.

Definition at line 693 of file queue_impl.hpp.

References sycl::_V1::detail::reduction::finalizeHandler().

◆ throw_asynchronous()

void sycl::_V1::detail::queue_impl::throw_asynchronous ( )
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 406 of file queue_impl.hpp.

References sycl::_V1::exception_list::size().

◆ wait()

void sycl::_V1::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.

Parameters
Locis the code location of the submit call (default argument)

Definition at line 463 of file queue_impl.cpp.

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

◆ wait_and_throw()

void sycl::_V1::detail::queue_impl::wait_and_throw ( const detail::code_location Loc = {})
inline
Parameters
Locis the code location of the submit call (default argument)

Definition at line 394 of file queue_impl.hpp.

Member Data Documentation

◆ MAssertHappenedBuffer

buffer<AssertHappened, 1> sycl::_V1::detail::queue_impl::MAssertHappenedBuffer
protected

Definition at line 779 of file queue_impl.hpp.

◆ MAsyncHandler

const async_handler sycl::_V1::detail::queue_impl::MAsyncHandler
protected

Definition at line 765 of file queue_impl.hpp.

◆ MContext

const ContextImplPtr sycl::_V1::detail::queue_impl::MContext
protected

Definition at line 755 of file queue_impl.hpp.

◆ MDevice

DeviceImplPtr sycl::_V1::detail::queue_impl::MDevice
protected

Definition at line 754 of file queue_impl.hpp.

◆ MDiscardEvents

const bool sycl::_V1::detail::queue_impl::MDiscardEvents

Definition at line 812 of file queue_impl.hpp.

◆ MEmulateOOO

bool sycl::_V1::detail::queue_impl::MEmulateOOO = false
protected

Indicates that a native out-of-order queue could not be created and we need to emulate it with multiple native in-order queues.

Definition at line 776 of file queue_impl.hpp.

◆ MEventsShared

std::vector<event> sycl::_V1::detail::queue_impl::MEventsShared
protected

Events without data dependencies (such as USM) need an owner, additionally, USM operations are not added to the scheduler command graph, queue is the only owner on the runtime side.

Definition at line 763 of file queue_impl.hpp.

◆ MEventsWeak

std::vector<std::weak_ptr<event_impl> > sycl::_V1::detail::queue_impl::MEventsWeak
protected

These events are tracked, but not owned, by the queue.

Definition at line 758 of file queue_impl.hpp.

◆ MExceptions

exception_list sycl::_V1::detail::queue_impl::MExceptions
protected

Definition at line 764 of file queue_impl.hpp.

◆ MHasDiscardEventsSupport

const bool sycl::_V1::detail::queue_impl::MHasDiscardEventsSupport
protected

Definition at line 821 of file queue_impl.hpp.

◆ MHostQueue

const bool sycl::_V1::detail::queue_impl::MHostQueue = false
protected

Definition at line 773 of file queue_impl.hpp.

◆ MInstanceID

uint64_t sycl::_V1::detail::queue_impl::MInstanceID = 0
protected

The instance ID of the trace event for queue object.

Definition at line 802 of file queue_impl.hpp.

◆ MIsInorder

const bool sycl::_V1::detail::queue_impl::MIsInorder
protected

Definition at line 790 of file queue_impl.hpp.

◆ MIsProfilingEnabled

const bool sycl::_V1::detail::queue_impl::MIsProfilingEnabled

Definition at line 813 of file queue_impl.hpp.

◆ MLastCGType

CG::CGTYPE sycl::_V1::detail::queue_impl::MLastCGType = CG::CGTYPE::None
protected

Definition at line 788 of file queue_impl.hpp.

◆ MLastEvent

event sycl::_V1::detail::queue_impl::MLastEvent
protected

Definition at line 783 of file queue_impl.hpp.

◆ MLastEventMtx

std::mutex sycl::_V1::detail::queue_impl::MLastEventMtx
mutableprotected

Definition at line 784 of file queue_impl.hpp.

◆ MLimitedProfiling

bool sycl::_V1::detail::queue_impl::MLimitedProfiling = false
protected

Definition at line 808 of file queue_impl.hpp.

◆ MMutex

std::mutex sycl::_V1::detail::queue_impl::MMutex
mutableprotected

Protects all the fields that can be changed by class' methods.

Definition at line 752 of file queue_impl.hpp.

◆ MNextQueueIdx

size_t sycl::_V1::detail::queue_impl::MNextQueueIdx = 0
protected

Iterator through MQueues.

Definition at line 771 of file queue_impl.hpp.

◆ MPropList

const property_list sycl::_V1::detail::queue_impl::MPropList
protected

Definition at line 766 of file queue_impl.hpp.

◆ MQueues

std::vector<RT::PiQueue> sycl::_V1::detail::queue_impl::MQueues
protected

List of queues created for FPGA device from a single SYCL queue.

Definition at line 769 of file queue_impl.hpp.

◆ MStreamID

uint8_t sycl::_V1::detail::queue_impl::MStreamID
protected

The stream under which the traces are emitted from the queue object.

Definition at line 800 of file queue_impl.hpp.

◆ MStreamsServiceEvents

std::vector<EventImplPtr> sycl::_V1::detail::queue_impl::MStreamsServiceEvents
protected

Definition at line 792 of file queue_impl.hpp.

◆ MTraceEvent

void* sycl::_V1::detail::queue_impl::MTraceEvent = nullptr
protected

Definition at line 798 of file queue_impl.hpp.


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