From 778f280e3d3e114660abf2a7de10166a3ea10a09 Mon Sep 17 00:00:00 2001 From: Vladimir Paramuzov Date: Fri, 22 Mar 2024 00:29:43 +0400 Subject: [PATCH] [GPU] Re-enable memory reuse for gemm (#23600) ### Details: - Since #22726 gemm is derived from multi-stage impl which had memory reuse flag enforced to false for all sub-classes. - This patch enables memory reuse back for gemm kernel to reduce memory consumption. ### Tickets: - *135361* --- src/plugins/intel_gpu/src/graph/impls/ocl/gemm.cpp | 6 ++++++ .../intel_gpu/src/graph/impls/ocl/multi_stage_primitive.hpp | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/gemm.cpp b/src/plugins/intel_gpu/src/graph/impls/ocl/gemm.cpp index 443771d40dc..2ed48b659d3 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl/gemm.cpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/gemm.cpp @@ -33,6 +33,12 @@ struct gemm_impl : multi_stage_primitive { return make_unique(*this); } + gemm_impl() = default; + + gemm_impl(const std::vector& kd) : parent(kd) { + this->can_reuse_memory = true; + } + void load(BinaryInputBuffer& ib) override { parent::load(ib); if (is_dynamic()) { diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/multi_stage_primitive.hpp b/src/plugins/intel_gpu/src/graph/impls/ocl/multi_stage_primitive.hpp index 658cdc88d18..b035e6b900e 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl/multi_stage_primitive.hpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/multi_stage_primitive.hpp @@ -51,7 +51,7 @@ struct multi_stage_primitive : public typed_primitive_impl { for (size_t k = 0; k < other._kernels.size(); ++k) { _kernels.emplace_back(other._kernels[k]->clone()); } - this->can_reuse_memory = false; + this->can_reuse_memory = other.can_reuse_memory; this->_kernel_name = other._kernel_name; this->_is_dynamic = other._is_dynamic; }