From 2f7ec86c45cf62bb8c203c157734defd2d2a53ec Mon Sep 17 00:00:00 2001 From: MirceaDan99 Date: Fri, 17 Jan 2025 15:32:28 +0200 Subject: [PATCH] Optimize CIP path --- .../include/intel_npu/common/blob_container.hpp | 12 ++++++++++++ .../compiler_adapter/src/plugin_compiler_adapter.cpp | 8 ++------ .../src/compiler_adapter/src/plugin_graph.cpp | 4 +--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/plugins/intel_npu/src/common/include/intel_npu/common/blob_container.hpp b/src/plugins/intel_npu/src/common/include/intel_npu/common/blob_container.hpp index fa6f0cead53e50..8cb6fe8b2c44db 100644 --- a/src/plugins/intel_npu/src/common/include/intel_npu/common/blob_container.hpp +++ b/src/plugins/intel_npu/src/common/include/intel_npu/common/blob_container.hpp @@ -19,6 +19,8 @@ class BlobContainer { virtual bool release_from_memory() = 0; + virtual std::vector get_ownership_blob() = 0; + virtual ~BlobContainer() = default; }; @@ -40,6 +42,10 @@ class BlobContainerVector : public BlobContainer { return true; } + std::vector get_ownership_blob() override { + return _ownershipBlob; + } + private: std::vector _ownershipBlob; }; @@ -65,6 +71,12 @@ class BlobContainerAlignedBuffer : public BlobContainer { return false; } + std::vector get_ownership_blob() override { + std::vector blob(_blobSize); + blob.assign(reinterpret_cast(this->get_ptr()), reinterpret_cast(this->get_ptr()) + this->size()); + return blob; + } + private: uint64_t _blobSize; size_t _ovHeaderOffset; diff --git a/src/plugins/intel_npu/src/compiler_adapter/src/plugin_compiler_adapter.cpp b/src/plugins/intel_npu/src/compiler_adapter/src/plugin_compiler_adapter.cpp index 809e1c88e05a71..d10d2e194449aa 100644 --- a/src/plugins/intel_npu/src/compiler_adapter/src/plugin_compiler_adapter.cpp +++ b/src/plugins/intel_npu/src/compiler_adapter/src/plugin_compiler_adapter.cpp @@ -110,12 +110,8 @@ std::shared_ptr PluginCompilerAdapter::parse(std::unique_ptr network(blobPtr->size()); - network.assign(reinterpret_cast(blobPtr->get_ptr()), - reinterpret_cast(blobPtr->get_ptr()) + blobPtr->size()); - auto networkMeta = _compiler->parse(network, config); - network.clear(); - network.shrink_to_fit(); + const auto& blob = blobPtr->get_ownership_blob(); + auto networkMeta = _compiler->parse(blob, config); _logger.debug("parse end"); ze_graph_handle_t graphHandle = nullptr; diff --git a/src/plugins/intel_npu/src/compiler_adapter/src/plugin_graph.cpp b/src/plugins/intel_npu/src/compiler_adapter/src/plugin_graph.cpp index 726a1196b7c88b..8546f04a84ae95 100644 --- a/src/plugins/intel_npu/src/compiler_adapter/src/plugin_graph.cpp +++ b/src/plugins/intel_npu/src/compiler_adapter/src/plugin_graph.cpp @@ -56,9 +56,7 @@ size_t PluginGraph::export_blob(std::ostream& stream) const { std::vector PluginGraph::process_profiling_output(const std::vector& profData, const Config& config) const { - std::vector blob(_blobPtr->size()); - blob.assign(reinterpret_cast(_blobPtr->get_ptr()), - reinterpret_cast(_blobPtr->get_ptr()) + _blobPtr->size()); + const auto& blob = _blobPtr->get_ownership_blob(); return _compiler->process_profiling_output(profData, blob, config); }