From 17cb356be84469b533440b63e3f877ef80806d06 Mon Sep 17 00:00:00 2001 From: Bogdan Pereanu Date: Wed, 29 Jan 2025 16:00:00 +0200 Subject: [PATCH] Create event pool and events only if they are used Signed-off-by: Bogdan Pereanu --- .../src/backend/src/zero_pipeline.cpp | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/plugins/intel_npu/src/backend/src/zero_pipeline.cpp b/src/plugins/intel_npu/src/backend/src/zero_pipeline.cpp index 7ae3db67433a0c..c4ce9aba1d5e40 100644 --- a/src/plugins/intel_npu/src/backend/src/zero_pipeline.cpp +++ b/src/plugins/intel_npu/src/backend/src/zero_pipeline.cpp @@ -31,10 +31,6 @@ Pipeline::Pipeline(const Config& config, _config(config), _id(_graph->get_unique_id()), _number_of_command_lists(_graph->get_batch_size().has_value() ? *_graph->get_batch_size() : 1), - _event_pool{ - std::make_shared(_init_structs->getDevice(), - _init_structs->getContext(), - _number_of_command_lists ? static_cast(_number_of_command_lists) : 1)}, _npu_profiling(npu_profiling), _logger("Pipeline", _config.get()), _group_ordinal(group_ordinal) { @@ -51,16 +47,31 @@ Pipeline::Pipeline(const Config& config, _ze_queue_priority = zeroUtils::toZeQueuePriority(_config.get()); + OPENVINO_ASSERT(_sync_output_with_fences && !_config.get(), + "In-order execution doesn't work in case synchronization of the inferences is done using events"); + + if (!_sync_output_with_fences || _config.get()) { + _event_pool = + std::make_shared(_init_structs->getDevice(), + _init_structs->getContext(), + _number_of_command_lists ? static_cast(_number_of_command_lists) : 1); + + _events.reserve(_number_of_command_lists); + for (size_t i = 0; i < _number_of_command_lists; i++) { + _events.emplace_back(std::make_shared(_event_pool, static_cast(i))); + } + } + _command_lists.reserve(_number_of_command_lists); - _events.reserve(_number_of_command_lists); - _fences.resize(_number_of_command_lists); - _logger.debug("Pipeline - emplace_back _event_pool and _command_queue"); for (size_t i = 0; i < _number_of_command_lists; i++) { _command_lists.emplace_back( std::make_unique(_init_structs, group_ordinal, _init_structs->getMutableCommandListVersion() ? true : false)); - _events.emplace_back(std::make_shared(_event_pool, static_cast(i))); + } + + if (_sync_output_with_fences) { + _fences.resize(_number_of_command_lists); } for (size_t i = 0; i < _number_of_command_lists; i++) {