diff --git a/src/plugins/intel_npu/src/common/include/intel_npu/common/igraph.hpp b/src/plugins/intel_npu/src/common/include/intel_npu/common/igraph.hpp index 4f2583c4f92419..ec4d7091ac6345 100644 --- a/src/plugins/intel_npu/src/common/include/intel_npu/common/igraph.hpp +++ b/src/plugins/intel_npu/src/common/include/intel_npu/common/igraph.hpp @@ -36,7 +36,6 @@ class IGraph : public std::enable_shared_from_this { virtual ~IGraph() = default; const NetworkMetadata& get_metadata() const; - const BlobContainer& get_blob_container() const; ze_graph_handle_t get_handle() const; void update_network_name(std::string_view name); diff --git a/src/plugins/intel_npu/src/common/src/igraph.cpp b/src/plugins/intel_npu/src/common/src/igraph.cpp index 5552d77d2c0fe5..f641813e44c0e7 100644 --- a/src/plugins/intel_npu/src/common/src/igraph.cpp +++ b/src/plugins/intel_npu/src/common/src/igraph.cpp @@ -27,10 +27,6 @@ const NetworkMetadata& IGraph::get_metadata() const { return _metadata; } -const BlobContainer& IGraph::get_blob_container() const { - return *_blobPtr; -} - ze_graph_handle_t IGraph::get_handle() const { return _handle; } diff --git a/src/plugins/intel_npu/tests/unit/CMakeLists.txt b/src/plugins/intel_npu/tests/unit/CMakeLists.txt index b552979d8b1a51..1097e183369fe4 100644 --- a/src/plugins/intel_npu/tests/unit/CMakeLists.txt +++ b/src/plugins/intel_npu/tests/unit/CMakeLists.txt @@ -10,7 +10,6 @@ set(MANDATORY_UNIT_TESTS_LIBS "openvino::gtest" "openvino::gtest_main" "openvino::runtime" - "openvino_runtime_s" "openvino::npu_common" "openvino::npu_al" "openvino::npu_logger_utils" @@ -30,7 +29,6 @@ ov_add_test_target( ${OpenVINO_SOURCE_DIR}/src/plugins/intel_npu/src/utils/include ${OpenVINO_SOURCE_DIR}/src/plugins/intel_npu/src/plugin/include ${OpenVINO_SOURCE_DIR}/src/plugins/intel_npu/src/al/include - $ OBJECT_FILES ${OpenVINO_SOURCE_DIR}/src/plugins/intel_npu/src/plugin/src/metadata.cpp LINK_LIBRARIES diff --git a/src/plugins/intel_npu/tests/unit/npu/blob_container.cpp b/src/plugins/intel_npu/tests/unit/npu/blob_container.cpp deleted file mode 100644 index 6732058c0e5820..00000000000000 --- a/src/plugins/intel_npu/tests/unit/npu/blob_container.cpp +++ /dev/null @@ -1,217 +0,0 @@ -// Copyright (C) 2018-2025 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 -// - -#include - -#include -#include - -#include "common_test_utils/file_utils.hpp" -#include "common_test_utils/subgraph_builders/2_input_subtract.hpp" -#include "common_test_utils/test_assertions.hpp" -#include "common_test_utils/test_constants.hpp" -#include "dev/core_impl.hpp" -#include "intel_npu/common/icompiled_model.hpp" -#include "openvino/runtime/core.hpp" -#include "openvino/runtime/iasync_infer_request.hpp" -#include "openvino/runtime/intel_npu/properties.hpp" -#include "openvino/runtime/properties.hpp" -#include "openvino/util/file_path.hpp" - -using namespace intel_npu; - -class BlobContainerUnitTests : public ::testing::Test { -protected: - void TearDown() override { - ov::util::iterate_files(testCacheDir, [](const std::string& file, bool is_dir) { - if (!is_dir) { - ov::test::utils::removeFile(file); - } - }); - ov::test::utils::removeDir(testCacheDir); - ov::test::utils::removeFile(testFileName); - } - - const char* dummyBlobHeader = "blobwillstartafterspace "; - const char* testCacheDir = "blob_container_test_cache_dir"; - const char* testFileName = "blob_container_test.blob"; -}; - -TEST_F(BlobContainerUnitTests, isBlobContainerCorrectlyPickedForCacheEnabled) { - auto core = std::make_shared(); - core->register_compile_time_plugins(); - auto model = ov::test::utils::make_2_input_subtract(); - - { - auto compiledModel = core->compile_model(model, - ov::test::utils::DEVICE_NPU, - {ov::cache_dir(testCacheDir), ov::enable_profiling(true)}); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - - auto* compiledModelPtr = dynamic_cast(compiledModel._ptr.get()); - OPENVINO_ASSERT(compiledModelPtr != nullptr); - const auto& blobContainer = compiledModelPtr->get_graph()->get_blob_container(); - auto* blobContainerAlignedBufferPtr = - dynamic_cast(&blobContainer); - OPENVINO_ASSERT(blobContainerAlignedBufferPtr == nullptr, - "Blob after compilation should not be memory mapped!"); - } - - { - auto compiledModel = core->compile_model(model, - ov::test::utils::DEVICE_NPU, - {ov::cache_dir(testCacheDir), ov::enable_profiling(true)}); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - - auto testCacheDirPath = ov::util::Path(testCacheDir); - auto outputFile = std::ofstream(testCacheDirPath / testFileName, std::ios::out | std::ios::binary); - std::ostringstream blobStream; - OV_ASSERT_NO_THROW(compiledModel->export_model(outputFile)); - OV_ASSERT_NO_THROW(compiledModel->export_model(blobStream)); - - auto* compiledModelPtr = dynamic_cast(compiledModel._ptr.get()); - OPENVINO_ASSERT(compiledModelPtr != nullptr); - const auto& blobContainer = compiledModelPtr->get_graph()->get_blob_container(); - auto* blobContainerAlignedBufferPtr = - dynamic_cast(&blobContainer); - OPENVINO_ASSERT(blobContainerAlignedBufferPtr != nullptr, "Cached blob should be memory mapped!"); - - // Expect output stream with metadata to be larger than actual blob size - OPENVINO_ASSERT(outputFile.tellp() > 0 && blobContainer.size() > 0 && - static_cast(outputFile.tellp()) > blobContainer.size()); - OPENVINO_ASSERT(blobStream.tellp() > 0 && blobContainer.size() > 0 && - static_cast(blobStream.tellp()) > blobContainer.size()); - } -} - -TEST_F(BlobContainerUnitTests, isBlobContainerCorrectlyPickedForFStream) { - auto core = std::make_shared(); - core->register_compile_time_plugins(); - auto model = ov::test::utils::make_2_input_subtract(); - - { - auto compiledModel = core->compile_model(model, ov::test::utils::DEVICE_NPU, {ov::enable_profiling(true)}); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - auto outputFile = std::ofstream(testFileName, std::ios::out | std::ios::binary); - OV_ASSERT_NO_THROW(compiledModel->export_model(outputFile)); - } - - { - auto inputFile = std::ifstream(testFileName, std::ios::in | std::ios::binary); - auto compiledModel = core->import_model(inputFile, ov::test::utils::DEVICE_NPU, {ov::enable_profiling(true)}); - inputFile.close(); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - auto outputFile = std::ofstream(testFileName, std::ios::out | std::ios::binary); - OV_ASSERT_NO_THROW(compiledModel->export_model(outputFile)); - - auto* compiledModelPtr = dynamic_cast(compiledModel._ptr.get()); - OPENVINO_ASSERT(compiledModelPtr != nullptr); - const auto& blobContainer = compiledModelPtr->get_graph()->get_blob_container(); - auto* blobContainerAlignedBufferPtr = - dynamic_cast(&blobContainer); - OPENVINO_ASSERT(blobContainerAlignedBufferPtr == nullptr, "Cannot have memory mapped blob for std::fstream!"); - } -} - -TEST_F(BlobContainerUnitTests, isBlobContainerCorrectlyPickedForSStream) { - auto core = std::make_shared(); - core->register_compile_time_plugins(); - auto model = ov::test::utils::make_2_input_subtract(); - std::stringstream blobStream; - - { - auto compiledModel = core->compile_model(model, ov::test::utils::DEVICE_NPU, {ov::enable_profiling(true)}); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - OV_ASSERT_NO_THROW(compiledModel->export_model(blobStream)); - } - - { - auto compiledModel = core->import_model(blobStream, ov::test::utils::DEVICE_NPU, {ov::enable_profiling(true)}); - blobStream = std::stringstream(); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - OV_ASSERT_NO_THROW(compiledModel->export_model(blobStream)); - - auto* compiledModelPtr = dynamic_cast(compiledModel._ptr.get()); - OPENVINO_ASSERT(compiledModelPtr != nullptr); - const auto& blobContainer = compiledModelPtr->get_graph()->get_blob_container(); - auto* blobContainerAlignedBufferPtr = - dynamic_cast(&blobContainer); - OPENVINO_ASSERT(blobContainerAlignedBufferPtr == nullptr, - "Cannot have memory mapped blob for std::stringstream!"); - } -} - -TEST_F(BlobContainerUnitTests, isBlobHeaderHandledCorrectly) { - auto core = std::make_shared(); - core->register_compile_time_plugins(); - auto model = ov::test::utils::make_2_input_subtract(); - std::stringstream blobStream; - blobStream << dummyBlobHeader; - - { - auto compiledModel = core->compile_model(model, ov::test::utils::DEVICE_NPU, {ov::enable_profiling(true)}); - auto inferRequest = compiledModel->create_infer_request(); - inferRequest->infer(); - OV_ASSERT_NO_THROW(auto profilingInfo = inferRequest->get_profiling_info()); - auto outputFile = std::ofstream(testFileName, std::ios::out | std::ios::binary); - outputFile << dummyBlobHeader; - OV_ASSERT_NO_THROW(compiledModel->export_model(outputFile)); - OV_ASSERT_NO_THROW(compiledModel->export_model(blobStream)); - } - - { - std::string parseDummyHeader; - std::string blob; - blobStream >> parseDummyHeader; - blobStream.get(); - - auto compiledModel = - core->import_model(blobStream, ov::test::utils::DEVICE_NPU, {ov::intel_npu::defer_weights_load(true)}); - - auto* compiledModelPtr = dynamic_cast(compiledModel._ptr.get()); - OPENVINO_ASSERT(compiledModelPtr != nullptr); - const auto& blobContainer = compiledModelPtr->get_graph()->get_blob_container(); - blob.assign(reinterpret_cast(blobContainer.get_ptr()), blobContainer.size()); - ASSERT_EQ(blobStream.str().substr(std::strlen(dummyBlobHeader), blobContainer.size()), blob); - } - - { - std::string parseDummyHeader; - std::string blob; - std::string referenceBlob; - auto inputFile = std::ifstream(testFileName, std::ios::in | std::ios::binary); - inputFile >> parseDummyHeader; - inputFile.get(); - - std::streampos currentPos = inputFile.tellg(); - inputFile.seekg(0, std::ios::end); - std::streampos endPos = inputFile.tellg(); - inputFile.seekg(currentPos, std::ios::beg); - referenceBlob.resize(endPos - currentPos); - inputFile.read(&referenceBlob[0], referenceBlob.size()); - inputFile.seekg(currentPos, std::ios::beg); - - auto compiledModel = - core->import_model(inputFile, ov::test::utils::DEVICE_NPU, {ov::intel_npu::defer_weights_load(true)}); - - auto* compiledModelPtr = dynamic_cast(compiledModel._ptr.get()); - OPENVINO_ASSERT(compiledModelPtr != nullptr); - const auto& blobContainer = compiledModelPtr->get_graph()->get_blob_container(); - blob.assign(reinterpret_cast(blobContainer.get_ptr()), blobContainer.size()); - referenceBlob.resize(blobContainer.size()); // exclude metadata - ASSERT_EQ(referenceBlob, blob); - } -}