@@ -37,23 +37,6 @@ ZeroExecutor::ZeroExecutor(const std::shared_ptr<const ZeroInitStructsHolder>& i
37
37
_initStructs->getCommandQueueDdiTable (),
38
38
_config,
39
39
group_ordinal)} {
40
- _logger.debug (" ZeroExecutor::ZeroExecutor init start - create graph_command_list" );
41
- OV_ITT_SCOPED_TASK (itt::domains::LevelZeroBackend, " Executor::ZeroExecutor" );
42
- CommandList graph_command_list (_initStructs->getDevice (),
43
- _initStructs->getContext (),
44
- _graph_ddi_table_ext,
45
- _config,
46
- _group_ordinal);
47
- _logger.debug (" ZeroExecutor::ZeroExecutor - create graph_command_queue" );
48
- CommandQueue graph_command_queue (_initStructs->getDevice (),
49
- _initStructs->getContext (),
50
- ZE_COMMAND_QUEUE_PRIORITY_NORMAL,
51
- _initStructs->getCommandQueueDdiTable (),
52
- _config,
53
- _group_ordinal);
54
- _logger.debug (" ZeroExecutor::ZeroExecutor - create fence" );
55
- Fence fence (graph_command_queue, _config);
56
-
57
40
_logger.debug (" ZeroExecutor::ZeroExecutor - create graph" );
58
41
OV_ITT_TASK_CHAIN (ZERO_EXECUTOR_GRAPH, itt::domains::LevelZeroBackend, " Executor::ZeroExecutor" , " graphCreate" );
59
42
@@ -79,7 +62,10 @@ ZeroExecutor::ZeroExecutor(const std::shared_ptr<const ZeroInitStructsHolder>& i
79
62
80
63
OV_ITT_TASK_NEXT (ZERO_EXECUTOR_GRAPH, " pfnGetProperties" );
81
64
_logger.debug (" performing pfnGetProperties" );
82
- zeroUtils::throwOnFail (" pfnGetProperties" , _graph_ddi_table_ext.pfnGetProperties (_graph, &_props));
65
+ ze_graph_properties_t props{};
66
+ props.stype = ZE_STRUCTURE_TYPE_GRAPH_PROPERTIES;
67
+
68
+ zeroUtils::throwOnFail (" pfnGetProperties" , _graph_ddi_table_ext.pfnGetProperties (_graph, &props));
83
69
auto targetDriverExtVersion = _graph_ddi_table_ext.version ();
84
70
if (targetDriverExtVersion <= ZE_GRAPH_EXT_VERSION_1_1) {
85
71
OPENVINO_THROW (" Incompatibility between the NPU plugin and driver! The driver version is too old, please "
@@ -88,8 +74,9 @@ ZeroExecutor::ZeroExecutor(const std::shared_ptr<const ZeroInitStructsHolder>& i
88
74
89
75
OV_ITT_TASK_NEXT (ZERO_EXECUTOR_GRAPH, " pfnGetArgumentProperties3" );
90
76
_logger.debug (" performing pfnGetArgumentProperties3" );
91
- for (uint32_t index = 0 ; index < _props.numGraphArgs ; ++index ) {
92
- ze_graph_argument_properties_3_t arg3;
77
+ for (uint32_t index = 0 ; index < props.numGraphArgs ; ++index ) {
78
+ ze_graph_argument_properties_3_t arg3{};
79
+ arg3.stype = ZE_STRUCTURE_TYPE_GRAPH_ARGUMENT_PROPERTIES;
93
80
zeroUtils::throwOnFail (" pfnGetArgumentProperties3" ,
94
81
_graph_ddi_table_ext.pfnGetArgumentProperties3 (_graph, index , &arg3));
95
82
@@ -100,6 +87,51 @@ ZeroExecutor::ZeroExecutor(const std::shared_ptr<const ZeroInitStructsHolder>& i
100
87
}
101
88
}
102
89
90
+ if (_graph_ddi_table_ext.version () < ZE_GRAPH_EXT_VERSION_1_8) {
91
+ initialize_graph_through_command_list ();
92
+ } else {
93
+ ze_graph_properties_2_t properties = {};
94
+ properties.stype = ZE_STRUCTURE_TYPE_GRAPH_PROPERTIES;
95
+ _graph_ddi_table_ext.pfnGetProperties2 (_graph, &properties);
96
+
97
+ if (properties.initStageRequired & ZE_GRAPH_STAGE_INITIALIZE) {
98
+ OV_ITT_TASK_NEXT (ZERO_EXECUTOR_GRAPH, " pfnGraphInitialize" );
99
+ _graph_ddi_table_ext.pfnGraphInitialize (_graph);
100
+ }
101
+
102
+ if (properties.initStageRequired & ZE_GRAPH_STAGE_COMMAND_LIST_INITIALIZE) {
103
+ initialize_graph_through_command_list ();
104
+ }
105
+ }
106
+
107
+ if (config.has <WORKLOAD_TYPE>()) {
108
+ setWorkloadType (config.get <WORKLOAD_TYPE>());
109
+ }
110
+ }
111
+
112
+ void ZeroExecutor::initialize_graph_through_command_list () const {
113
+ OV_ITT_TASK_CHAIN (ZERO_EXECUTOR_GRAPH,
114
+ itt::domains::LevelZeroBackend,
115
+ " Executor::ZeroExecutor" ,
116
+ " initialize_graph_through_command_list" );
117
+
118
+ _logger.debug (" ZeroExecutor::ZeroExecutor init start - create graph_command_list" );
119
+ OV_ITT_SCOPED_TASK (itt::domains::LevelZeroBackend, " Executor::ZeroExecutor" );
120
+ CommandList graph_command_list (_initStructs->getDevice (),
121
+ _initStructs->getContext (),
122
+ _graph_ddi_table_ext,
123
+ _config,
124
+ _group_ordinal);
125
+ _logger.debug (" ZeroExecutor::ZeroExecutor - create graph_command_queue" );
126
+ CommandQueue graph_command_queue (_initStructs->getDevice (),
127
+ _initStructs->getContext (),
128
+ ZE_COMMAND_QUEUE_PRIORITY_NORMAL,
129
+ _initStructs->getCommandQueueDdiTable (),
130
+ _config,
131
+ _group_ordinal);
132
+ _logger.debug (" ZeroExecutor::ZeroExecutor - create fence" );
133
+ Fence fence (graph_command_queue, _config);
134
+
103
135
OV_ITT_TASK_NEXT (ZERO_EXECUTOR_GRAPH, " appendGraphInitialize" );
104
136
_logger.debug (" ZeroExecutor::ZeroExecutor - performing appendGraphInitialize" );
105
137
graph_command_list.appendGraphInitialize (_graph);
@@ -112,10 +144,6 @@ ZeroExecutor::ZeroExecutor(const std::shared_ptr<const ZeroInitStructsHolder>& i
112
144
_logger.debug (" ZeroExecutor::ZeroExecutor - performing hostSynchronize" );
113
145
fence.hostSynchronize ();
114
146
_logger.debug (" ZeroExecutor::ZeroExecutor - hostSynchronize completed" );
115
-
116
- if (config.has <WORKLOAD_TYPE>()) {
117
- setWorkloadType (config.get <WORKLOAD_TYPE>());
118
- }
119
147
}
120
148
121
149
void ZeroExecutor::setWorkloadType (const ov::WorkloadType workloadType) const {
0 commit comments