Skip to content

Commit faca59f

Browse files
Done refactoring
1 parent ea58a81 commit faca59f

File tree

8 files changed

+95
-98
lines changed

8 files changed

+95
-98
lines changed

src/plugins/intel_npu/src/common/include/intel_npu/common/icompiler_adapter.hpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44

55
#pragma once
66

7+
#include "intel_npu/common/filtered_config.hpp"
78
#include "intel_npu/common/igraph.hpp"
89

910
namespace intel_npu {
1011

1112
class ICompilerAdapter {
1213
public:
1314
virtual std::shared_ptr<IGraph> compile(const std::shared_ptr<const ov::Model>& model,
14-
const Config& config) const = 0;
15+
const FilteredConfig& config) const = 0;
1516

1617
/**
1718
* @brief Compiles the model, weights separation enabled.
@@ -27,7 +28,8 @@ class ICompilerAdapter {
2728
* "icompiler.hpp".
2829
* @return A "WeightlessGraph" type of object.
2930
*/
30-
virtual std::shared_ptr<IGraph> compileWS(const std::shared_ptr<ov::Model>& model, const Config& config) const = 0;
31+
virtual std::shared_ptr<IGraph> compileWS(const std::shared_ptr<ov::Model>& model,
32+
const FilteredConfig& config) const = 0;
3133

3234
/**
3335
* @brief Parses the provided binary objects and returns a wrapper over the resulted L0 handles. The model may also
@@ -44,11 +46,12 @@ class ICompilerAdapter {
4446
*/
4547
virtual std::shared_ptr<IGraph> parse(
4648
ov::Tensor mainBlob,
47-
const Config& config,
49+
const FilteredConfig& config,
4850
std::optional<std::vector<ov::Tensor>> initBlobs = std::nullopt,
4951
const std::optional<std::shared_ptr<const ov::Model>>& model = std::nullopt) const = 0;
5052

51-
virtual ov::SupportedOpsMap query(const std::shared_ptr<const ov::Model>& model, const Config& config) const = 0;
53+
virtual ov::SupportedOpsMap query(const std::shared_ptr<const ov::Model>& model,
54+
const FilteredConfig& config) const = 0;
5255
virtual uint32_t get_version() const = 0;
5356
virtual std::vector<std::string> get_supported_options() const = 0;
5457
virtual bool is_option_supported(std::string optname) const = 0;

src/plugins/intel_npu/src/compiler_adapter/include/driver_compiler_adapter.hpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,20 @@ class DriverCompilerAdapter final : public ICompilerAdapter {
2121
public:
2222
DriverCompilerAdapter(const std::shared_ptr<ZeroInitStructsHolder>& zeroInitStruct);
2323

24-
std::shared_ptr<IGraph> compile(const std::shared_ptr<const ov::Model>& model, const Config& config) const override;
24+
std::shared_ptr<IGraph> compile(const std::shared_ptr<const ov::Model>& model,
25+
const FilteredConfig& config) const override;
2526

26-
std::shared_ptr<IGraph> compileWS(const std::shared_ptr<ov::Model>& model, const Config& config) const override;
27+
std::shared_ptr<IGraph> compileWS(const std::shared_ptr<ov::Model>& model,
28+
const FilteredConfig& config) const override;
2729

2830
std::shared_ptr<IGraph> parse(
2931
ov::Tensor mainBlob,
30-
const Config& config,
32+
const FilteredConfig& config,
3133
std::optional<std::vector<ov::Tensor>> initBlobs = std::nullopt,
3234
const std::optional<std::shared_ptr<const ov::Model>>& model = std::nullopt) const override;
3335

34-
ov::SupportedOpsMap query(const std::shared_ptr<const ov::Model>& model, const Config& config) const override;
36+
ov::SupportedOpsMap query(const std::shared_ptr<const ov::Model>& model,
37+
const FilteredConfig& config) const override;
3538

3639
std::vector<std::string> get_supported_options() const override;
3740

@@ -61,7 +64,7 @@ class DriverCompilerAdapter final : public ICompilerAdapter {
6164
const uint32_t supportedOpsetVersion,
6265
const bool useBetterModelSerialization) const;
6366

64-
std::string serializeConfig(const Config& config, ze_graph_compiler_version_info_t compilerVersion) const;
67+
std::string serializeConfig(const FilteredConfig& config, ze_graph_compiler_version_info_t compilerVersion) const;
6568

6669
std::shared_ptr<ZeroInitStructsHolder> _zeroInitStruct;
6770
std::shared_ptr<ZeGraphExtWrappers> _zeGraphExt;

src/plugins/intel_npu/src/compiler_adapter/include/ir_serializer.hpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
//
44

55
#pragma once
6+
#include <ze_graph_ext.h>
7+
68
#include <iostream>
79
#include <string>
810
#include <vector>
@@ -17,12 +19,12 @@
1719
*/
1820
namespace intel_npu::driver_compiler_utils {
1921

20-
// TODO interface and inheritance
22+
using SerializedIR = std::pair<size_t, std::shared_ptr<uint8_t>>;
23+
2124
class IRSerializerBase {
2225
public:
2326
IRSerializerBase(const std::shared_ptr<const ov::Model>& origModel,
24-
const uint16_t compilerMajorVersion,
25-
const uint16_t compilerMinorVersion,
27+
const ze_graph_compiler_version_info_t compilerVersion,
2628
const uint32_t supportedOpset = 11);
2729

2830
virtual SerializedIR serialize() = 0;
@@ -32,15 +34,14 @@ class IRSerializerBase {
3234
std::shared_ptr<ov::Model> _model = nullptr;
3335
ze_graph_compiler_version_info_t _compilerVersion;
3436
uint32_t _supportedOpset = 11;
37+
static std::mutex rtInfoMutex;
3538
};
3639

3740
class IRSerializerWithWeightsCopy : public IRSerializerBase {
3841
public:
3942
IRSerializerWithWeightsCopy(const std::shared_ptr<const ov::Model>& origModel,
40-
const uint16_t compilerMajorVersion,
41-
const uint16_t compilerMinorVersion,
42-
const uint32_t supportedOpset = 11)
43-
: IRSerializerBase(origModel, compilerMajorVersion, compilerMinorVersion, supportedOpset){};
43+
const ze_graph_compiler_version_info_t compilerVersion,
44+
const uint32_t supportedOpset = 11);
4445

4546
SerializedIR serialize() override;
4647

@@ -67,10 +68,8 @@ class IRSerializerWithWeightsCopy : public IRSerializerBase {
6768
class IRSerializerWithoutWeightsCopy : public IRSerializerBase {
6869
public:
6970
IRSerializerWithoutWeightsCopy(const std::shared_ptr<const ov::Model>& origModel,
70-
const uint16_t compilerMajorVersion,
71-
const uint16_t compilerMinorVersion,
72-
const uint32_t supportedOpset = 11)
73-
: IRSerializerBase(origModel, compilerMajorVersion, compilerMinorVersion, supportedOpset){};
71+
const ze_graph_compiler_version_info_t compilerVersion,
72+
const uint32_t supportedOpset = 11);
7473

7574
SerializedIR serialize() override;
7675

@@ -79,12 +78,9 @@ class IRSerializerWithoutWeightsCopy : public IRSerializerBase {
7978

8079
void serializeModelToStream(std::ostream& stream);
8180

82-
/**
83-
* @brief Get size of xml and weights from model
84-
*/
8581
void countModelSize();
8682

87-
size_t _serializedModelSize = 0;
83+
uint64_t _serializedModelSize = 0;
8884
};
8985

9086
} // namespace intel_npu::driver_compiler_utils

src/plugins/intel_npu/src/compiler_adapter/include/plugin_compiler_adapter.hpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,20 @@ class PluginCompilerAdapter final : public ICompilerAdapter {
1919
public:
2020
PluginCompilerAdapter(const std::shared_ptr<ZeroInitStructsHolder>& zeroInitStruct);
2121

22-
std::shared_ptr<IGraph> compile(const std::shared_ptr<const ov::Model>& model, const Config& config) const override;
22+
std::shared_ptr<IGraph> compile(const std::shared_ptr<const ov::Model>& model,
23+
const FilteredConfig& config) const override;
2324

24-
std::shared_ptr<IGraph> compileWS(const std::shared_ptr<ov::Model>& model, const Config& config) const override;
25+
std::shared_ptr<IGraph> compileWS(const std::shared_ptr<ov::Model>& model,
26+
const FilteredConfig& config) const override;
2527

2628
std::shared_ptr<IGraph> parse(
2729
ov::Tensor mainBlob,
28-
const Config& config,
30+
const FilteredConfig& config,
2931
std::optional<std::vector<ov::Tensor>> initBlobs = std::nullopt,
3032
const std::optional<std::shared_ptr<const ov::Model>>& model = std::nullopt) const override;
3133

32-
ov::SupportedOpsMap query(const std::shared_ptr<const ov::Model>& model, const Config& config) const override;
34+
ov::SupportedOpsMap query(const std::shared_ptr<const ov::Model>& model,
35+
const FilteredConfig& config) const override;
3336

3437
std::vector<std::string> get_supported_options() const override;
3538

src/plugins/intel_npu/src/compiler_adapter/src/driver_compiler_adapter.cpp

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#include <string_view>
1010

1111
#include "graph.hpp"
12-
#include "intel_npu/common/filtered_config.hpp"
1312
#include "intel_npu/common/itt.hpp"
1413
#include "intel_npu/config/options.hpp"
1514
#include "intel_npu/prefix.hpp"
@@ -187,23 +186,19 @@ DriverCompilerAdapter::DriverCompilerAdapter(const std::shared_ptr<ZeroInitStruc
187186
}
188187

189188
std::shared_ptr<IGraph> DriverCompilerAdapter::compile(const std::shared_ptr<const ov::Model>& model,
190-
const Config& config) const {
189+
const FilteredConfig& config) const {
191190
OV_ITT_TASK_CHAIN(COMPILE_BLOB, itt::domains::NPUPlugin, "DriverCompilerAdapter", "compile");
192191

193192
const ze_graph_compiler_version_info_t& compilerVersion = _compilerProperties.compilerVersion;
194193
const auto maxOpsetVersion = _compilerProperties.maxOVOpsetVersionSupported;
195194
_logger.info("getSupportedOpsetVersion Max supported version of opset in CiD: %d", maxOpsetVersion);
196195

197196
_logger.debug("serialize IR");
198-
const FilteredConfig* filteredConfig = dynamic_cast<const FilteredConfig*>(&config);
199-
if (filteredConfig == nullptr) {
200-
OPENVINO_THROW("config is not FilteredConfig");
201-
}
202197
auto serializedIR = serializeIR(model,
203198
compilerVersion,
204199
maxOpsetVersion,
205-
filteredConfig->isAvailable(ov::intel_npu::better_model_serialization.name())
206-
? filteredConfig->get<BETTER_MODEL_SERIALIZATION>()
200+
config.isAvailable(ov::intel_npu::better_model_serialization.name())
201+
? config.get<BETTER_MODEL_SERIALIZATION>()
207202
: false);
208203

209204
std::string buildFlags;
@@ -240,7 +235,7 @@ std::shared_ptr<IGraph> DriverCompilerAdapter::compile(const std::shared_ptr<con
240235
}
241236

242237
std::shared_ptr<IGraph> DriverCompilerAdapter::compileWS(const std::shared_ptr<ov::Model>& model,
243-
const Config& config) const {
238+
const FilteredConfig& config) const {
244239
OV_ITT_TASK_CHAIN(COMPILE_BLOB, itt::domains::NPUPlugin, "DriverCompilerAdapter", "compileWS");
245240

246241
storeWeightlessCacheAttribute(model);
@@ -263,7 +258,12 @@ std::shared_ptr<IGraph> DriverCompilerAdapter::compileWS(const std::shared_ptr<o
263258
}
264259

265260
_logger.debug("serialize IR");
266-
auto serializedIR = serializeIR(model, compilerVersion, maxOpsetVersion);
261+
auto serializedIR = serializeIR(model,
262+
compilerVersion,
263+
maxOpsetVersion,
264+
config.isAvailable(ov::intel_npu::better_model_serialization.name())
265+
? config.get<BETTER_MODEL_SERIALIZATION>()
266+
: false);
267267

268268
std::string buildFlags;
269269
const bool useIndices = !((compilerVersion.major < 5) || (compilerVersion.major == 5 && compilerVersion.minor < 9));
@@ -347,7 +347,7 @@ std::shared_ptr<IGraph> DriverCompilerAdapter::compileWS(const std::shared_ptr<o
347347

348348
std::shared_ptr<IGraph> DriverCompilerAdapter::parse(
349349
ov::Tensor mainBlob,
350-
const Config& config,
350+
const FilteredConfig& config,
351351
std::optional<std::vector<ov::Tensor>> initBlobs,
352352
const std::optional<std::shared_ptr<const ov::Model>>& model) const {
353353
OV_ITT_TASK_CHAIN(PARSE_BLOB, itt::domains::NPUPlugin, "DriverCompilerAdapter", "parse");
@@ -401,15 +401,20 @@ std::shared_ptr<IGraph> DriverCompilerAdapter::parse(
401401
}
402402

403403
ov::SupportedOpsMap DriverCompilerAdapter::query(const std::shared_ptr<const ov::Model>& model,
404-
const Config& config) const {
404+
const FilteredConfig& config) const {
405405
OV_ITT_TASK_CHAIN(query_BLOB, itt::domains::NPUPlugin, "DriverCompilerAdapter", "query");
406406

407407
const ze_graph_compiler_version_info_t& compilerVersion = _compilerProperties.compilerVersion;
408408
const auto maxOpsetVersion = _compilerProperties.maxOVOpsetVersionSupported;
409409
_logger.info("getSupportedOpsetVersion Max supported version of opset in CiD: %d", maxOpsetVersion);
410410

411411
_logger.debug("serialize IR");
412-
auto serializedIR = serializeIR(model, compilerVersion, maxOpsetVersion);
412+
auto serializedIR = serializeIR(model,
413+
compilerVersion,
414+
maxOpsetVersion,
415+
config.isAvailable(ov::intel_npu::better_model_serialization.name())
416+
? config.get<BETTER_MODEL_SERIALIZATION>()
417+
: false);
413418

414419
std::string buildFlags;
415420
buildFlags += serializeConfig(config, compilerVersion);
@@ -441,18 +446,16 @@ uint32_t DriverCompilerAdapter::get_version() const {
441446
* @details Format of the memory:
442447
*/
443448
SerializedIR DriverCompilerAdapter::serializeIR(const std::shared_ptr<const ov::Model>& model,
444-
ze_graph_compiler_version_info_t compilerVersion,
449+
const ze_graph_compiler_version_info_t compilerVersion,
445450
const uint32_t supportedOpsetVersion,
446451
const bool useBetterModelSerialization) const {
447452
std::shared_ptr<driver_compiler_utils::IRSerializerBase> irSerializer =
448453
useBetterModelSerialization
449454
? std::make_shared<driver_compiler_utils::IRSerializerWithoutWeightsCopy>(model,
450-
compilerVersion.major,
451-
compilerVersion.minor,
455+
compilerVersion,
452456
supportedOpsetVersion)
453457
: std::make_shared<driver_compiler_utils::IRSerializerWithWeightsCopy>(model,
454-
compilerVersion.major,
455-
compilerVersion.minor,
458+
compilerVersion,
456459
supportedOpsetVersion);
457460
return irSerializer->serialize();
458461
}
@@ -546,20 +549,13 @@ std::string DriverCompilerAdapter::serializeIOInfo(const std::shared_ptr<const o
546549
outputsPrecisionSS.str() + VALUES_SEPARATOR.data() + outputsLayoutSS.str();
547550
}
548551

549-
std::string DriverCompilerAdapter::serializeConfig(const Config& config,
552+
std::string DriverCompilerAdapter::serializeConfig(const FilteredConfig& config,
550553
ze_graph_compiler_version_info_t compilerVersion) const {
551554
Logger logger("serializeConfig", Logger::global().level());
552555

553556
std::string content = {};
554-
555-
const FilteredConfig* plgConfig = dynamic_cast<const FilteredConfig*>(&config);
556-
if (plgConfig != nullptr) {
557-
content += plgConfig->toStringForCompiler();
558-
content += plgConfig->toStringForCompilerInternal();
559-
} else {
560-
logger.warning("Failed to cast Config to FilteredConfig. Exporting all configs");
561-
content += config.toString();
562-
}
557+
content += config.toStringForCompiler();
558+
content += config.toStringForCompilerInternal();
563559

564560
logger.debug("Original content of config: %s", content.c_str());
565561

0 commit comments

Comments
 (0)