diff --git a/sycl/include/sycl/ext/oneapi/experimental/graph.hpp b/sycl/include/sycl/ext/oneapi/experimental/graph.hpp index 9bbbe2680e7d9..3f5ab5a17b690 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/graph.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/graph.hpp @@ -87,16 +87,18 @@ class depends_on : public ::sycl::detail::PropertyWithData< } // namespace node } // namespace property -/// Graph in the modifiable state. -template -class __SYCL_EXPORT command_graph { +template class command_graph; + +namespace detail { +// Templateless modifiable command-graph base class. +class __SYCL_EXPORT modifiable_command_graph { public: /// Constructor. /// @param SyclContext Context to use for graph. /// @param SyclDevice Device all nodes will be associated with. /// @param PropList Optional list of properties to pass. - command_graph(const context &SyclContext, const device &SyclDevice, - const property_list &PropList = {}); + modifiable_command_graph(const context &SyclContext, const device &SyclDevice, + const property_list &PropList = {}); /// Add an empty node to the graph. /// @param PropList Property list used to pass [0..n] predecessor nodes. @@ -166,10 +168,11 @@ class __SYCL_EXPORT command_graph { /// executing. bool end_recording(const std::vector &RecordingQueues); -private: +protected: /// Constructor used internally by the runtime. /// @param Impl Detail implementation class to construct object with. - command_graph(const std::shared_ptr &Impl) : impl(Impl) {} + modifiable_command_graph(const std::shared_ptr &Impl) + : impl(Impl) {} /// Template-less implementation of add() for CGF nodes. /// @param CGF Command-group function to add. @@ -192,21 +195,22 @@ class __SYCL_EXPORT command_graph { std::shared_ptr impl; }; -template <> class __SYCL_EXPORT command_graph { +// Templateless executable command-graph base class. +class __SYCL_EXPORT executable_command_graph { public: /// An executable command-graph is not user constructable. - command_graph() = delete; + executable_command_graph() = delete; /// Update the inputs & output of the graph. /// @param Graph Graph to use the inputs and outputs of. void update(const command_graph &Graph); -private: +protected: /// Constructor used by internal runtime. /// @param Graph Detail implementation class to construct with. /// @param Ctx Context to use for graph. - command_graph(const std::shared_ptr &Graph, - const sycl::context &Ctx); + executable_command_graph(const std::shared_ptr &Graph, + const sycl::context &Ctx); template friend decltype(Obj::impl) @@ -218,7 +222,34 @@ template <> class __SYCL_EXPORT command_graph { int MTag; std::shared_ptr impl; - friend class command_graph; + friend class modifiable_command_graph; +}; +} // namespace detail + +/// Graph in the modifiable state. +template +class command_graph : public detail::modifiable_command_graph { +public: + /// Constructor. + /// @param SyclContext Context to use for graph. + /// @param SyclDevice Device all nodes will be associated with. + /// @param PropList Optional list of properties to pass. + command_graph(const context &SyclContext, const device &SyclDevice, + const property_list &PropList = {}) + : modifiable_command_graph(SyclContext, SyclDevice, PropList) {} + +private: + /// Constructor used internally by the runtime. + /// @param Impl Detail implementation class to construct object with. + command_graph(const std::shared_ptr &Impl) + : modifiable_command_graph(Impl) {} +}; + +template <> +class command_graph + : public detail::executable_command_graph { +private: + using detail::executable_command_graph::executable_command_graph; }; /// Additional CTAD deduction guide. diff --git a/sycl/source/detail/graph_impl.cpp b/sycl/source/detail/graph_impl.cpp index fc899132eaf81..10a762a9ddccc 100644 --- a/sycl/source/detail/graph_impl.cpp +++ b/sycl/source/detail/graph_impl.cpp @@ -275,17 +275,13 @@ sycl::event exec_graph_impl::enqueue( sycl::detail::createSyclObjFromImpl(NewEvent); return QueueEvent; } -} // namespace detail -template <> -command_graph::command_graph( +modifiable_command_graph::modifiable_command_graph( const sycl::context &SyclContext, const sycl::device &SyclDevice, const sycl::property_list &) : impl(std::make_shared(SyclContext, SyclDevice)) {} -template <> -node command_graph::addImpl( - const std::vector &Deps) { +node modifiable_command_graph::addImpl(const std::vector &Deps) { std::vector> DepImpls; for (auto &D : Deps) { DepImpls.push_back(sycl::detail::getSyclObjImpl(D)); @@ -295,9 +291,8 @@ node command_graph::addImpl( return sycl::detail::createSyclObjFromImpl(NodeImpl); } -template <> -node command_graph::addImpl( - std::function CGF, const std::vector &Deps) { +node modifiable_command_graph::addImpl(std::function CGF, + const std::vector &Deps) { std::vector> DepImpls; for (auto &D : Deps) { DepImpls.push_back(sycl::detail::getSyclObjImpl(D)); @@ -308,8 +303,7 @@ node command_graph::addImpl( return sycl::detail::createSyclObjFromImpl(NodeImpl); } -template <> -void command_graph::make_edge(node &Src, node &Dest) { +void modifiable_command_graph::make_edge(node &Src, node &Dest) { std::shared_ptr SenderImpl = sycl::detail::getSyclObjImpl(Src); std::shared_ptr ReceiverImpl = @@ -320,17 +314,13 @@ void command_graph::make_edge(node &Src, node &Dest) { impl->removeRoot(ReceiverImpl); // remove receiver from root node list } -template <> command_graph -command_graph::finalize( - const sycl::property_list &) const { +modifiable_command_graph::finalize(const sycl::property_list &) const { return command_graph{this->impl, this->impl->getContext()}; } -template <> -bool command_graph::begin_recording( - queue &RecordingQueue) { +bool modifiable_command_graph::begin_recording(queue &RecordingQueue) { auto QueueImpl = sycl::detail::getSyclObjImpl(RecordingQueue); if (QueueImpl->getCommandGraph() == nullptr) { QueueImpl->setCommandGraph(impl); @@ -347,8 +337,7 @@ bool command_graph::begin_recording( return false; } -template <> -bool command_graph::begin_recording( +bool modifiable_command_graph::begin_recording( const std::vector &RecordingQueues) { bool QueueStateChanged = false; for (queue Queue : RecordingQueues) { @@ -357,13 +346,9 @@ bool command_graph::begin_recording( return QueueStateChanged; } -template <> bool command_graph::end_recording() { - return impl->clearQueues(); -} +bool modifiable_command_graph::end_recording() { return impl->clearQueues(); } -template <> -bool command_graph::end_recording( - queue &RecordingQueue) { +bool modifiable_command_graph::end_recording(queue &RecordingQueue) { auto QueueImpl = sycl::detail::getSyclObjImpl(RecordingQueue); if (QueueImpl->getCommandGraph() == impl) { QueueImpl->setCommandGraph(nullptr); @@ -380,8 +365,7 @@ bool command_graph::end_recording( return false; } -template <> -bool command_graph::end_recording( +bool modifiable_command_graph::end_recording( const std::vector &RecordingQueues) { bool QueueStateChanged = false; for (queue Queue : RecordingQueues) { @@ -390,25 +374,26 @@ bool command_graph::end_recording( return QueueStateChanged; } -command_graph::command_graph( +executable_command_graph::executable_command_graph( const std::shared_ptr &Graph, const sycl::context &Ctx) : MTag(rand()), impl(std::make_shared(Ctx, Graph)) { finalizeImpl(); // Create backend representation for executable graph } -void command_graph::finalizeImpl() { +void executable_command_graph::finalizeImpl() { // Create PI command-buffers for each device in the finalized context impl->schedule(); } -void command_graph::update( +void executable_command_graph::update( const command_graph &Graph) { (void)Graph; throw sycl::exception(sycl::make_error_code(errc::invalid), "Method not yet implemented"); } +} // namespace detail } // namespace experimental } // namespace oneapi } // namespace ext diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index 48240ed4c2876..45f065bf137ed 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3661,20 +3661,20 @@ _ZN4sycl3_V13ext6oneapi10level_zero10make_queueERKNS0_7contextERKNS0_6deviceEmbb _ZN4sycl3_V13ext6oneapi10level_zero11make_deviceERKNS0_8platformEm _ZN4sycl3_V13ext6oneapi10level_zero12make_contextERKSt6vectorINS0_6deviceESaIS5_EEmb _ZN4sycl3_V13ext6oneapi10level_zero13make_platformEm -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE13end_recordingERKSt6vectorINS0_5queueESaIS8_EE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE13end_recordingERNS0_5queueE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE13end_recordingEv -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE15begin_recordingERKSt6vectorINS0_5queueESaIS8_EE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE15begin_recordingERNS0_5queueE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE7addImplERKSt6vectorINS3_4nodeESaIS8_EE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE7addImplESt8functionIFvRNS0_7handlerEEERKSt6vectorINS3_4nodeESaISD_EE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE9make_edgeERNS3_4nodeES8_ -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EEC1ERKNS0_7contextERKNS0_6deviceERKNS0_13property_listE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EEC2ERKNS0_7contextERKNS0_6deviceERKNS0_13property_listE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE1EE12finalizeImplEv -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE1EE6updateERKNS4_ILS5_0EEE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE1EEC1ERKSt10shared_ptrINS3_6detail10graph_implEERKNS0_7contextE -_ZN4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE1EEC2ERKSt10shared_ptrINS3_6detail10graph_implEERKNS0_7contextE +_ZN4sycl3_V13ext6oneapi12experimental6detail24executable_command_graph12finalizeImplEv +_ZN4sycl3_V13ext6oneapi12experimental6detail24executable_command_graph6updateERKNS3_13command_graphILNS3_11graph_stateE0EEE +_ZN4sycl3_V13ext6oneapi12experimental6detail24executable_command_graphC1ERKSt10shared_ptrINS4_10graph_implEERKNS0_7contextE +_ZN4sycl3_V13ext6oneapi12experimental6detail24executable_command_graphC2ERKSt10shared_ptrINS4_10graph_implEERKNS0_7contextE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph13end_recordingERKSt6vectorINS0_5queueESaIS7_EE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph13end_recordingERNS0_5queueE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph13end_recordingEv +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph15begin_recordingERKSt6vectorINS0_5queueESaIS7_EE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph15begin_recordingERNS0_5queueE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph7addImplERKSt6vectorINS3_4nodeESaIS7_EE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph7addImplESt8functionIFvRNS0_7handlerEEERKSt6vectorINS3_4nodeESaISC_EE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph9make_edgeERNS3_4nodeES7_ +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graphC1ERKNS0_7contextERKNS0_6deviceERKNS0_13property_listE +_ZN4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graphC2ERKNS0_7contextERKNS0_6deviceERKNS0_13property_listE _ZN4sycl3_V13ext6oneapi15filter_selectorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE _ZN4sycl3_V13ext6oneapi15filter_selectorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE _ZN4sycl3_V13ext8codeplay12experimental14fusion_wrapper12start_fusionEv @@ -4098,7 +4098,7 @@ _ZNK4sycl3_V115interop_handler12GetNativeMemEPNS0_6detail16AccessorImplHostE _ZNK4sycl3_V115interop_handler14GetNativeQueueERi _ZNK4sycl3_V116default_selectorclERKNS0_6deviceE _ZNK4sycl3_V120accelerator_selectorclERKNS0_6deviceE -_ZNK4sycl3_V13ext6oneapi12experimental13command_graphILNS3_11graph_stateE0EE8finalizeERKNS0_13property_listE +_ZNK4sycl3_V13ext6oneapi12experimental6detail24modifiable_command_graph8finalizeERKNS0_13property_listE _ZNK4sycl3_V13ext6oneapi15filter_selector13select_deviceEv _ZNK4sycl3_V13ext6oneapi15filter_selector5resetEv _ZNK4sycl3_V13ext6oneapi15filter_selectorclERKNS0_6deviceE diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index d79aecbb338fc..93aa974ccf2d2 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -382,12 +382,12 @@ ??$has_property@Vuse_primary_context@cuda@context@property@_V1@sycl@@@image_plain@detail@_V1@sycl@@IEBA_NXZ ??$has_property@Vuse_primary_context@cuda@context@property@_V1@sycl@@@sampler@_V1@sycl@@QEBA_NXZ ??$has_property@Vuse_primary_context@cuda@context@property@_V1@sycl@@@stream@_V1@sycl@@QEBA_NXZ -??0?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@AEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@AEBVcontext@45@@Z -??0?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV012345@@Z -??0?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV012345@@Z -??0?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVcontext@45@AEBVdevice@45@AEBVproperty_list@45@@Z +??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@AEBVcontext@56@@Z +?make_edge@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVnode@34567@0@Z +??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??1modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +??0executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z +?finalize@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$command_graph@$00@34567@AEBVproperty_list@67@@Z ??0AccessorBaseHost@detail@_V1@sycl@@IEAA@AEBV?$shared_ptr@VAccessorImplHost@detail@_V1@sycl@@@std@@@Z ??0AccessorBaseHost@detail@_V1@sycl@@QEAA@$$QEAV0123@@Z ??0AccessorBaseHost@detail@_V1@sycl@@QEAA@AEBV0123@@Z @@ -596,8 +596,8 @@ ??0stream_impl@detail@_V1@sycl@@QEAA@_K0AEBVproperty_list@23@@Z ??0tls_code_loc_t@detail@_V1@sycl@@QEAA@AEBUcode_location@123@@Z ??0tls_code_loc_t@detail@_V1@sycl@@QEAA@XZ -??1?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ -??1?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@@Z +??4modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z ??1AccessorBaseHost@detail@_V1@sycl@@QEAA@XZ ??1AccessorImplHost@detail@_V1@sycl@@QEAA@XZ ??1LocalAccessorBaseHost@detail@_V1@sycl@@QEAA@XZ @@ -653,10 +653,10 @@ ??4?$OwnerLessBase@Vqueue@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z ??4?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z ??4?$OwnerLessBase@Vstream@_V1@sycl@@@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z -??4?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z -??4?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@$$QEAV012345@@Z -??4?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV012345@AEBV012345@@Z +?update@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$command_graph@$0A@@34567@@Z +?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEAVqueue@67@@Z +??1executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@XZ +?add@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA?AVnode@34567@AEBVproperty_list@67@@Z ??4AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@$$QEAV0123@@Z ??4AccessorBaseHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z ??4AccessorImplHost@detail@_V1@sycl@@QEAAAEAV0123@AEBV0123@@Z @@ -826,8 +826,8 @@ ?addHostAccessorAndWait@detail@_V1@sycl@@YAXPEAVAccessorImplHost@123@@Z ?addHostSampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVSampledImageAccessorImplHost@123@@Z ?addHostUnsampledImageAccessorAndWait@detail@_V1@sycl@@YAXPEAVUnsampledImageAccessorImplHost@123@@Z -?addImpl@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@AEAA?AVnode@23456@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z -?addImpl@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@AEAA?AVnode@23456@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@9@@Z +?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@V?$function@$$A6AXAEAVhandler@_V1@sycl@@@Z@std@@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBV0123456@@Z ?addInteropObject@buffer_impl@detail@_V1@sycl@@QEBAXAEAV?$vector@_KV?$allocator@_K@std@@@std@@@Z ?addOrReplaceAccessorProperties@SYCLMemObjT@detail@_V1@sycl@@QEAAXAEBVproperty_list@34@@Z ?addOrReplaceAccessorProperties@buffer_plain@detail@_V1@sycl@@IEAAXAEBVproperty_list@34@@Z @@ -877,8 +877,10 @@ ?barrier@handler@_V1@sycl@@QEAAXXZ ?begin@exception_list@_V1@sycl@@QEBA?AV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@Vexception_ptr@std@@@std@@@std@@@std@@XZ ?begin@kernel_bundle_plain@detail@_V1@sycl@@IEBAPEBVdevice_image_plain@234@XZ -?begin_recording@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEAVqueue@56@@Z -?begin_recording@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@AEBVcontext@56@AEBVdevice@56@AEBVproperty_list@56@@Z +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA@$$QEAV0123456@@Z +??4executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@AEBV0123456@@Z +??4executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z ?build_impl@detail@_V1@sycl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@_V1@sycl@@@std@@AEBV?$kernel_bundle@$0A@@23@AEBV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@5@AEBVproperty_list@23@@Z ?canReuseHostPtr@SYCLMemObjT@detail@_V1@sycl@@QEAA_NPEAX_K@Z ?cancel_fusion@fusion_wrapper@experimental@codeplay@ext@_V1@sycl@@QEAAXXZ @@ -919,9 +921,9 @@ ?end@HostProfilingInfo@detail@_V1@sycl@@QEAAXXZ ?end@exception_list@_V1@sycl@@QEBA?AV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@Vexception_ptr@std@@@std@@@std@@@std@@XZ ?end@kernel_bundle_plain@detail@_V1@sycl@@IEBAPEBVdevice_image_plain@234@XZ -?end_recording@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEAVqueue@56@@Z -?end_recording@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@@Z -?end_recording@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAA_NXZ +??4modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAAAEAV0123456@$$QEAV0123456@@Z +?finalizeImpl@executable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAAXXZ +?addImpl@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA?AVnode@34567@AEBV?$vector@Vnode@experimental@oneapi@ext@_V1@sycl@@V?$allocator@Vnode@experimental@oneapi@ext@_V1@sycl@@@std@@@std@@@Z ?ext_codeplay_supports_fusion@queue@_V1@sycl@@QEBA_NXZ ?ext_intel_read_host_pipe@handler@_V1@sycl@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAX_K_N@Z ?ext_intel_write_host_pipe@handler@_V1@sycl@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAX_K_N@Z @@ -959,9 +961,9 @@ ?fill@MemoryManager@detail@_V1@sycl@@SAXPEAVSYCLMemObjI@234@PEAXV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@_KPEBDIV?$range@$02@34@5V?$id@$02@34@IV?$vector@PEAU_pi_event@@V?$allocator@PEAU_pi_event@@@std@@@7@AEAPEAU_pi_event@@@Z ?fill_2d_usm@MemoryManager@detail@_V1@sycl@@SAXPEAXV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@_K22AEBV?$vector@DV?$allocator@D@std@@@6@V?$vector@PEAU_pi_event@@V?$allocator@PEAU_pi_event@@@std@@@6@PEAPEAU_pi_event@@@Z ?fill_usm@MemoryManager@detail@_V1@sycl@@SAXPEAXV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@_KHV?$vector@PEAU_pi_event@@V?$allocator@PEAU_pi_event@@@std@@@6@PEAPEAU_pi_event@@@Z -?finalize@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEBA?AV?$command_graph@$00@23456@AEBVproperty_list@56@@Z +?begin_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEAVqueue@67@@Z ?finalize@handler@_V1@sycl@@AEAA?AVevent@23@XZ -?finalizeImpl@?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@AEAAXXZ +??0modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@IEAA@AEBV?$shared_ptr@Vgraph_impl@detail@experimental@oneapi@ext@_V1@sycl@@@std@@@Z ?find_device_intersection@detail@_V1@sycl@@YA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@AEBV?$vector@V?$kernel_bundle@$00@_V1@sycl@@V?$allocator@V?$kernel_bundle@$00@_V1@sycl@@@std@@@5@@Z ?flush@stream_impl@detail@_V1@sycl@@QEAAXAEBV?$shared_ptr@Vevent_impl@detail@_V1@sycl@@@std@@@Z ?flush@stream_impl@detail@_V1@sycl@@QEAAXXZ @@ -1195,7 +1197,7 @@ ?make_device@detail@_V1@sycl@@YA?AVdevice@23@_KW4backend@23@@Z ?make_device@level_zero@oneapi@ext@_V1@sycl@@YA?AVdevice@45@AEBVplatform@45@_K@Z ?make_device@opencl@_V1@sycl@@YA?AVdevice@23@_K@Z -?make_edge@?$command_graph@$0A@@experimental@oneapi@ext@_V1@sycl@@QEAAXAEAVnode@23456@0@Z +?end_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA_NXZ ?make_error_code@_V1@sycl@@YA?AVerror_code@std@@W4errc@12@@Z ?make_event@detail@_V1@sycl@@YA?AVevent@23@_KAEBVcontext@23@W4backend@23@@Z ?make_event@detail@_V1@sycl@@YA?AVevent@23@_KAEBVcontext@23@_NW4backend@23@@Z @@ -4911,7 +4913,7 @@ ?throw_asynchronous@queue@_V1@sycl@@QEAAXXZ ?unmap@MemoryManager@detail@_V1@sycl@@SAXPEAVSYCLMemObjI@234@PEAXV?$shared_ptr@Vqueue_impl@detail@_V1@sycl@@@std@@1V?$vector@PEAU_pi_event@@V?$allocator@PEAU_pi_event@@@std@@@7@AEAPEAU_pi_event@@@Z ?unset_flag@stream@_V1@sycl@@AEBAXI@Z -?update@?$command_graph@$00@experimental@oneapi@ext@_V1@sycl@@QEAAXAEBV?$command_graph@$0A@@23456@@Z +?begin_recording@modifiable_command_graph@detail@experimental@oneapi@ext@_V1@sycl@@QEAA_NAEBV?$vector@Vqueue@_V1@sycl@@V?$allocator@Vqueue@_V1@sycl@@@std@@@std@@@Z ?updateHostMemory@SYCLMemObjT@detail@_V1@sycl@@IEAAXQEAX@Z ?updateHostMemory@SYCLMemObjT@detail@_V1@sycl@@IEAAXXZ ?useHostPtr@SYCLMemObjT@detail@_V1@sycl@@QEAA_NXZ