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..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 @@ -244,6 +244,10 @@ 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 instance.is_output() ? stream.create_user_event(true) : nullptr; + } return stream.aggregate_events(events, false, instance.is_output()); } std::vector tmp_events(events); 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); }