27 using ContextImplPtr = std::shared_ptr<cl::sycl::detail::context_impl>;
29 using QueueImplPtr = std::shared_ptr<cl::sycl::detail::queue_impl>;
31 using EventImplPtr = std::shared_ptr<cl::sycl::detail::event_impl>;
44 event_impl(HostEventState State = HES_Complete);
73 void wait(std::shared_ptr<cl::sycl::detail::event_impl> Self)
const;
83 void wait_and_throw(std::shared_ptr<cl::sycl::detail::event_impl> Self);
89 void cleanupCommand(std::shared_ptr<cl::sycl::detail::event_impl> Self)
const;
102 template <info::event_profiling param>
104 get_profiling_info()
const;
109 template <info::event param>
115 void waitInternal()
const;
176 return MPreparedDepsEvents;
183 return MPreparedHostDepsEvents;
189 std::vector<EventImplPtr> getWaitList();
197 void cleanupDependencyEvents();
200 void cleanDepEventsThroughOneLevel();
208 MNeedsCleanupAfterWait = NeedsCleanupAfterWait;
215 void *instrumentationProlog(std::string &Name, int32_t StreamID,
216 uint64_t &instance_id)
const;
218 void instrumentationEpilog(
void *TelementryEvent,
const std::string &Name,
219 int32_t StreamID, uint64_t IId)
const;
220 void checkProfilingPreconditions()
const;
221 mutable bool MIsInitialized =
true;
224 mutable bool MOpenCLInterop =
false;
225 mutable bool MHostEvent =
true;
226 std::unique_ptr<HostProfilingInfo> MHostProfilingInfo;
227 void *MCommand =
nullptr;
228 std::weak_ptr<queue_impl> MQueue;
229 const bool MIsProfilingEnabled =
false;
232 std::vector<EventImplPtr> MPreparedDepsEvents;
233 std::vector<EventImplPtr> MPreparedHostDepsEvents;
237 std::atomic<bool> MIsFlushed =
false;
242 std::atomic<int> MState;
248 bool MNeedsCleanupAfterWait =
false;