From e4ba248bb543868ba35038011c7cd50313ef74c0 Mon Sep 17 00:00:00 2001 From: wilson-seok Date: Thu, 4 Dec 2025 18:02:23 +0000 Subject: [PATCH 1/3] add event completion for optimized out instance --- src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp b/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp index a782883dee5d5c..5b4d3eaa5c5f98 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp @@ -244,6 +244,9 @@ struct typed_primitive_impl_ocl : public typed_primitive_impl { typed_primitive_inst& instance) override { stream& stream = instance.get_network().get_stream(); if (instance.can_be_optimized()) { + if (instance.needs_completion_event()) { + stream.wait_for_events(events); + } return stream.aggregate_events(events, false, instance.is_output()); } std::vector tmp_events(events); From 6546b3fd0b8ebf59752ed5aa7bec74d51fc885df Mon Sep 17 00:00:00 2001 From: wilson-seok Date: Fri, 5 Dec 2025 17:42:48 +0000 Subject: [PATCH 2/3] add return when need_completion_events is true --- src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp b/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp index 5b4d3eaa5c5f98..f87aa7a7f5cf9d 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/primitive_base.hpp @@ -246,6 +246,7 @@ struct typed_primitive_impl_ocl : public typed_primitive_impl { if (instance.can_be_optimized()) { if (instance.needs_completion_event()) { stream.wait_for_events(events); + return instance.is_output() ? stream.create_user_event(true) : nullptr; } return stream.aggregate_events(events, false, instance.is_output()); } From 9fe7c849cc34d4277fbf3e2d163f1eee2d1e89e4 Mon Sep 17 00:00:00 2001 From: wilson-seok Date: Tue, 9 Dec 2025 21:49:49 +0000 Subject: [PATCH 3/3] fix unit test about optimized out need_completion_event=true --- .../intel_gpu/tests/unit/module_tests/network_test.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/plugins/intel_gpu/tests/unit/module_tests/network_test.cpp b/src/plugins/intel_gpu/tests/unit/module_tests/network_test.cpp index 23a393b9d0290e..427a61f30530f6 100644 --- a/src/plugins/intel_gpu/tests/unit/module_tests/network_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/module_tests/network_test.cpp @@ -141,24 +141,21 @@ TEST(network_test, has_proper_event_for_in_order_queue_optimized_out) { net.set_input_data("input1", input_mem); net.execute(); + // reshape is optimized out with need_completion_event=true. So it doesn't have event. ASSERT_TRUE(net.has_event("concat")); - ASSERT_TRUE(net.has_event("reshape")); ASSERT_TRUE(net.has_event("reorder")); ASSERT_TRUE(net.has_event("activation")); auto concat_ev = net.get_primitive_event("concat"); - auto reshape_ev = net.get_primitive_event("reshape"); auto reorder_ev = net.get_primitive_event("reorder"); auto activation_ev = net.get_primitive_event("activation"); OV_ASSERT_NO_THROW(downcast(concat_ev.get())); - OV_ASSERT_NO_THROW(downcast(reshape_ev.get())); OV_ASSERT_NO_THROW(downcast(reorder_ev.get())); OV_ASSERT_NO_THROW(downcast(activation_ev.get())); // Check if we have real underlying OpenCL events ASSERT_TRUE(downcast(concat_ev.get())->get().get() != nullptr); - ASSERT_TRUE(downcast(reshape_ev.get())->get().get() != nullptr); ASSERT_TRUE(downcast(reorder_ev.get())->get().get() != nullptr); ASSERT_TRUE(downcast(activation_ev.get())->get().get() != nullptr); }