src/plugins/intel_npu/docs/runtime-requirements.md
This document describes the internal data flow behind the ov::runtime_requirements
and ov::compatibility_check properties across compilation, export, and import in the Intel NPU plugin.
For the user-facing description, supported values, and usage examples of these properties, see the Supported Properties table in the NPU plugin README.
compiled_model.get_property(ov::runtime_requirements), the plugin embeds that compiler-generated descriptor in its human-readable metadata string and returns it as the complete runtime requirements at the plugin level.export_model(...), the raw descriptor is written into NPU metadata.import_model(...), the raw descriptor is restored from metadata as an owning std::string passed to the parser (before the metadata object is discarded), attached to the parsed graph, and later exposed again through ov::runtime_requirements.sequenceDiagram
autonumber
actor User as OV User
participant Plugin as NPU Plugin
participant Adapter as Compiler Adapter
participant Compiler as Compiler
participant Graph as IGraph / Graph
participant PM as PropertyManager
participant Meta as NPU Metadata
User->>Plugin: compile_model(model, "NPU", config)
Plugin->>Adapter: compile(model, config)
Adapter->>Compiler: obtain blob + compatibility descriptor
Note over Adapter,Compiler: CIP: VCLCompilerImpl::compile()
CID: driver builds graph,
then zeDeviceGetRuntimeRequirements()
Compiler-->>Adapter: blob + compatibilityDescriptor
Adapter->>Graph: construct Graph(..., compatibilityDescriptor)
Adapter-->>Plugin: compiled graph (stores descriptor)
Plugin-->>User: ov::CompiledModel
User->>Plugin: get_property(ov::runtime_requirements)
Plugin->>PM: getProperty("RUNTIME_REQUIREMENTS")
PM->>Graph: get_compatibility_descriptor()
Graph-->>PM: raw compatibilityDescriptor
PM->>Meta: Metadata(..., descriptor).write_as_text()
Meta-->>PM: human-readable requirements string
PM-->>User: requirements string
User->>Plugin: export_model(stream)
Plugin->>Graph: export_blob() + get_compatibility_descriptor()
Graph-->>Plugin: blob bytes + compatibilityDescriptor
Plugin->>Meta: Metadata(..., descriptor).write(stream)
Meta-->>User: stream = blob + metadata payload
User->>Plugin: import_model(stream)
Plugin->>Meta: read_metadata_from(stream)
Meta-->>Plugin: blobSize + compatibilityDescriptor
Plugin->>Graph: parse(blob, descriptor), construct restored Graph
Plugin-->>User: imported ov::CompiledModel
compiled_model_property_manager.cpp, buildRuntimeRequirements(...)plugin_compiler_adapter.cpp, VCLCompilerImpl::compile(...)driver_compiler_adapter.cpp, ze_graph_ext_wrappers.cppgraph.cppcompiled_model.cpp, metadata.cppplugin.cpp, parser.cpp, metadata.cpp