From d04fd6ed3c3496be29c891a2a5e977841010867a Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Wed, 12 Feb 2025 18:36:46 +0100 Subject: [PATCH] [CPU] Fix google-default-arguments clang-tidy remarks (#28772) ### Details: - Fix "google-default-arguments" issues reported by clang-tidy - Enable "google-default-arguments" clang-tidy checks on CI by default - Introduce "emit_code_impl" in JIT emitters to avoid default arguments in virtual methods ### Tickets: - N/A --- .../snippets/include/snippets/emitter.hpp | 29 +++++++++++++++---- .../snippets/tests/include/lowering_utils.hpp | 9 +++--- src/plugins/intel_cpu/src/.clang-tidy | 1 - src/plugins/intel_cpu/src/cpu_memory.h | 8 ++--- src/plugins/intel_cpu/src/cpu_tensor.h | 2 +- .../intel_cpu/src/dnnl_postops_composer.cpp | 2 +- .../emitters/plugin/aarch64/jit_emitter.cpp | 8 ++--- .../emitters/plugin/aarch64/jit_emitter.hpp | 10 +++---- .../emitters/plugin/x64/jit_dnnl_emitters.cpp | 8 ++--- .../emitters/plugin/x64/jit_dnnl_emitters.hpp | 10 +++---- .../src/emitters/plugin/x64/jit_emitter.cpp | 8 ++--- .../src/emitters/plugin/x64/jit_emitter.hpp | 9 +++--- .../snippets/aarch64/jit_kernel_emitter.cpp | 8 ++--- .../snippets/aarch64/jit_kernel_emitter.hpp | 9 +++--- .../snippets/aarch64/jit_loop_emitters.cpp | 10 +++---- .../snippets/aarch64/jit_loop_emitters.hpp | 17 +++++------ .../snippets/x64/jit_debug_emitter.cpp | 8 ++--- .../snippets/x64/jit_debug_emitter.hpp | 9 +++--- .../snippets/x64/jit_kernel_emitter.cpp | 8 ++--- .../snippets/x64/jit_kernel_emitter.hpp | 9 +++--- .../snippets/x64/jit_loop_emitters.cpp | 14 ++++----- .../snippets/x64/jit_loop_emitters.hpp | 16 +++++----- .../snippets/x64/jit_memory_emitters.cpp | 8 ++--- .../snippets/x64/jit_memory_emitters.hpp | 10 +++---- .../snippets/x64/jit_reg_spill_emitters.cpp | 10 +++---- .../snippets/x64/jit_reg_spill_emitters.hpp | 11 ++++--- .../src/emitters/tpp/x64/jit_tpp_emitter.cpp | 2 +- .../src/emitters/tpp/x64/jit_tpp_emitter.hpp | 2 +- src/plugins/intel_cpu/src/graph.cpp | 4 +-- src/plugins/intel_cpu/src/memory_state.cpp | 6 ++-- src/plugins/intel_cpu/src/node.h | 6 ++-- src/plugins/intel_cpu/src/nodes/bin_conv.cpp | 5 ++-- src/plugins/intel_cpu/src/nodes/conv.cpp | 8 +++-- src/plugins/intel_cpu/src/nodes/eltwise.cpp | 3 +- src/plugins/intel_cpu/src/nodes/eltwise.h | 4 +-- .../intel_cpu/src/nodes/executors/shl/shl.hpp | 4 +-- .../intel_cpu/src/nodes/fake_quantize.h | 4 +-- .../intel_cpu/src/nodes/interpolate.cpp | 6 ++-- src/plugins/intel_cpu/src/nodes/memory.cpp | 12 ++++---- src/plugins/intel_cpu/src/nodes/mvn.cpp | 6 ++-- src/plugins/intel_cpu/src/nodes/normalize.cpp | 6 ++-- src/plugins/intel_cpu/src/nodes/pooling.cpp | 4 ++- src/plugins/intel_cpu/src/nodes/reduce.cpp | 4 ++- .../intel_cpu/src/nodes/tensoriterator.cpp | 10 +++---- .../intel_cpu/src/nodes/tensoriterator.h | 2 +- 45 files changed, 192 insertions(+), 157 deletions(-) diff --git a/src/common/snippets/include/snippets/emitter.hpp b/src/common/snippets/include/snippets/emitter.hpp index 0143fd56df6eee..d2bdb8f8c1ca05 100644 --- a/src/common/snippets/include/snippets/emitter.hpp +++ b/src/common/snippets/include/snippets/emitter.hpp @@ -52,16 +52,21 @@ class Emitter { /** * @brief called by generator to generate code to produce target code for a specific operation + * @details + * Avoid passing default arguments to virtual function, but still allow user to call + * emit_code function without "pool" or "gpr" * @param in vector of vector argument registers * @param out vector of vector resulting registers * @param pool optional vector of free vector registers which might be used inside method - * @param gpr vector of free generam puproce registers which might be used inside method + * @param gpr vector of free general purpose registers which might be used inside method * @return void */ - virtual void emit_code(const std::vector& in, - const std::vector& out, - const std::vector& pool = {}, - const std::vector& gpr = {}) const = 0; + void emit_code(const std::vector& in, + const std::vector& out, + const std::vector& pool = {}, + const std::vector& gpr = {}) const { + emit_code_impl(in, out, pool, gpr); + } /** * @brief called by generator to generate data section, if needed for a specific operation @@ -70,6 +75,20 @@ class Emitter { virtual void emit_data() const {} virtual ~Emitter() = default; + +private: + /** + * @brief called by generator to generate code to produce target code for a specific operation + * @param in vector of vector argument registers + * @param out vector of vector resulting registers + * @param pool optional vector of free vector registers which might be used inside method + * @param gpr vector of free general purpose registers which might be used inside method + * @return void + */ + virtual void emit_code_impl(const std::vector& in, + const std::vector& out, + const std::vector& pool, + const std::vector& gpr) const = 0; }; } // namespace snippets diff --git a/src/common/snippets/tests/include/lowering_utils.hpp b/src/common/snippets/tests/include/lowering_utils.hpp index ba87b3d1a067fa..fbdc1fc808d1fd 100644 --- a/src/common/snippets/tests/include/lowering_utils.hpp +++ b/src/common/snippets/tests/include/lowering_utils.hpp @@ -19,11 +19,12 @@ using BlockedShapeVector = ov::snippets::op::Subgraph::BlockedShapeVector; class DummyEmitter : public ov::snippets::Emitter { public: DummyEmitter(const std::vector& custom_opset = {}) : ov::snippets::Emitter() {} - void emit_code(const std::vector&, - const std::vector&, - const std::vector&, - const std::vector&) const override {} void emit_data() const override {} +protected: + void emit_code_impl(const std::vector&, + const std::vector&, + const std::vector&, + const std::vector&) const override {} }; struct DummyCompiledSnippet : public ov::snippets::CompiledSnippet { diff --git a/src/plugins/intel_cpu/src/.clang-tidy b/src/plugins/intel_cpu/src/.clang-tidy index a1adc9fd8c776f..446ebc0368c4b0 100644 --- a/src/plugins/intel_cpu/src/.clang-tidy +++ b/src/plugins/intel_cpu/src/.clang-tidy @@ -45,7 +45,6 @@ Checks: > -cppcoreguidelines-narrowing-conversions, -cppcoreguidelines-pro-bounds-pointer-arithmetic, -google-build-using-namespace, - -google-default-arguments, -google-explicit-constructor, -google-readability-casting, -google-readability-todo, diff --git a/src/plugins/intel_cpu/src/cpu_memory.h b/src/plugins/intel_cpu/src/cpu_memory.h index 1b1b4debe4fcc4..1004f3eaf36b3d 100644 --- a/src/plugins/intel_cpu/src/cpu_memory.h +++ b/src/plugins/intel_cpu/src/cpu_memory.h @@ -188,7 +188,7 @@ class IMemory { // Caution!!! This action invalidates the previous data layout. The old data may become unreachable. virtual void redefineDesc(MemoryDescPtr desc) = 0; - virtual void load(const IMemory& src, bool ftz = true) const = 0; + virtual void load(const IMemory& src, bool ftz) const = 0; virtual MemoryBlockPtr getMemoryBlock() const = 0; @@ -260,7 +260,7 @@ class StaticMemory final : public IMemory { // Always throws since a static memory descriptor should not be modified void redefineDesc(MemoryDescPtr desc) override; - void load(const IMemory& src, bool ftz = true) const override; + void load(const IMemory& src, bool ftz) const override; MemoryBlockPtr getMemoryBlock() const override; @@ -315,7 +315,7 @@ class Memory : public IMemory { void redefineDesc(MemoryDescPtr desc) override; - void load(const IMemory& src, bool ftz = true) const override; + void load(const IMemory& src, bool ftz) const override; void nullify() override; dnnl::engine getEngine() const { @@ -421,7 +421,7 @@ class StringMemory : public IMemory { void redefineDesc(MemoryDescPtr desc) override; - void load(const IMemory& src, bool ftz = false) const override; + void load(const IMemory& src, bool ftz) const override; MemoryBlockPtr getMemoryBlock() const override; diff --git a/src/plugins/intel_cpu/src/cpu_tensor.h b/src/plugins/intel_cpu/src/cpu_tensor.h index 4885d76358b496..77506389a1fd5f 100644 --- a/src/plugins/intel_cpu/src/cpu_tensor.h +++ b/src/plugins/intel_cpu/src/cpu_tensor.h @@ -27,7 +27,7 @@ class Tensor : public ITensor { const ov::Strides& get_strides() const override; - void* data(const element::Type& type = {}) const override; + void* data(const element::Type& type) const override; MemoryPtr get_memory() { return m_memptr; diff --git a/src/plugins/intel_cpu/src/dnnl_postops_composer.cpp b/src/plugins/intel_cpu/src/dnnl_postops_composer.cpp index 72f48c888406e3..09a01a410f2973 100644 --- a/src/plugins/intel_cpu/src/dnnl_postops_composer.cpp +++ b/src/plugins/intel_cpu/src/dnnl_postops_composer.cpp @@ -659,7 +659,7 @@ static MemoryPtr prepackDecompressionParams(const MemoryCPtr& paramsPtr, srcFormat); auto srcMem = std::make_shared(engine, srcMemoryDesc, paramsPtr->getData()); - dstMem->load(*srcMem); + dstMem->load(*srcMem, true); return dstMem; } diff --git a/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.cpp b/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.cpp index 869191d5070f31..e982cd8a49f440 100644 --- a/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.cpp +++ b/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.cpp @@ -43,10 +43,10 @@ const std::vector jit_emitter::store_gpr_regs = { static const std::vector vec_regs = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; -void jit_emitter::emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_emitter::emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { emitter_preamble(in_idxs, out_idxs, pool_vec_idxs, pool_gpr_idxs); emit_impl(in_idxs, out_idxs); diff --git a/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.hpp b/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.hpp index 2c6ded002966d7..6a958f1057a6b5 100644 --- a/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.hpp +++ b/src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_emitter.hpp @@ -48,11 +48,6 @@ class jit_emitter : public ov::snippets::Emitter { p_table(0), l_table(new Xbyak_aarch64::Label()) {} - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; - void emit_data() const override; virtual size_t get_inputs_count() const = 0; @@ -84,6 +79,11 @@ class jit_emitter : public ov::snippets::Emitter { virtual void prepare_table(); virtual void register_table_entries() {} + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + void load_table_addr() const { h->adr(p_table, *l_table.get()); } diff --git a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.cpp b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.cpp index e7968940b792cd..07fb417edc3cc0 100644 --- a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.cpp @@ -65,10 +65,10 @@ size_t jit_dnnl_emitter::get_inputs_num() const { return 1; } -void jit_dnnl_emitter::emit_code(const std::vector& in_vec_idxs, - const std::vector& out_vec_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_dnnl_emitter::emit_code_impl(const std::vector& in_vec_idxs, + const std::vector& out_vec_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { if (host_isa_ == cpu::x64::sse41) { if (out_vec_idxs[0] != in_vec_idxs[0]) { h->uni_vmovups(Xmm(out_vec_idxs[0]), Xmm(in_vec_idxs[0])); diff --git a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.hpp b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.hpp index 7555b3e1bb89ff..b5e0f610fbadbd 100644 --- a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.hpp +++ b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.hpp @@ -12,11 +12,6 @@ namespace ov::intel_cpu { class jit_dnnl_emitter : public jit_emitter { public: - void emit_code(const std::vector& in_vec_idxs, - const std::vector& out_vec_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const override; - void emit_data() const override; void emit_impl(const std::vector& in_idxs, const std::vector& out_idxs) const override{}; @@ -37,6 +32,11 @@ class jit_dnnl_emitter : public jit_emitter { ov::element::Type exec_prc = ov::element::f32); void set_injector(); + void emit_code_impl(const std::vector& in_vec_idxs, + const std::vector& out_vec_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + dnnl_alg_kind_t kind{dnnl_alg_kind_undef}; float alpha{0.f}; float beta{0.f}; diff --git a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.cpp b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.cpp index 2543ea4e9975b4..63acbaa365f655 100644 --- a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.cpp +++ b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.cpp @@ -247,10 +247,10 @@ void jit_emitter::prepare_table() { } } -void jit_emitter::emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_emitter::emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { emitter_preamble(in_idxs, out_idxs, pool_vec_idxs, pool_gpr_idxs); emit_impl(in_idxs, out_idxs); diff --git a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.hpp b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.hpp index f28fc86b54cf12..a0cc5c9b818d4f 100644 --- a/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.hpp +++ b/src/plugins/intel_cpu/src/emitters/plugin/x64/jit_emitter.hpp @@ -46,10 +46,6 @@ class jit_emitter : public ov::snippets::Emitter { k_mask = Xbyak::Opmask(1); // FIXME: in general case we need preserve k_mask state as well } - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; void emit_data() const override; virtual size_t get_inputs_num() const = 0; @@ -84,6 +80,11 @@ class jit_emitter : public ov::snippets::Emitter { ov::element::Type exec_prc_; Xbyak::Opmask k_mask; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + virtual void prepare_table(); virtual void register_table_entries() {} diff --git a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.cpp b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.cpp index 46f381151d38e2..246705f6bc22bb 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.cpp @@ -101,10 +101,10 @@ jit_kernel_emitter::jit_kernel_emitter(jit_generator* h, data_ptr_regs_idx = snippets::utils::transform_snippets_regs_to_idxs(data_ptr_regs, snippets::RegType::gpr); } -void jit_kernel_emitter::emit_code(const std::vector& in, - const std::vector& out, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_kernel_emitter::emit_code_impl(const std::vector& in, + const std::vector& out, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { validate_arguments(in, out); aux_vec_idxs = pool_vec_idxs; aux_gpr_idxs = pool_gpr_idxs; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.hpp b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.hpp index f130ca62532846..4d6665192e25c7 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_kernel_emitter.hpp @@ -36,10 +36,6 @@ class jit_kernel_emitter : public jit_emitter { size_t get_inputs_count() const override { return 0; } - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const override; protected: void validate_arguments(const std::vector& in, const std::vector& out) const override; @@ -54,6 +50,11 @@ class jit_kernel_emitter : public jit_emitter { virtual void init_data_pointers(const std::vector& arg_regs, const std::vector& data_ptr_regs) const = 0; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + void emit_impl(const std::vector& in, const std::vector& out) const override; jit_snippets_compile_args jcp; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.cpp b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.cpp index 6f7e9d7bbabd49..bac1591dc0b76a 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.cpp @@ -39,10 +39,10 @@ void jit_loop_begin_emitter::validate_arguments(const std::vector& in, c OV_CPU_JIT_EMITTER_ASSERT(loop_begin_label != nullptr, "has not inited label!"); } -void jit_loop_begin_emitter::emit_code(const std::vector& in, - const std::vector& out, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_loop_begin_emitter::emit_code_impl(const std::vector& in, + const std::vector& out, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { validate_arguments(in, out); emit_impl(in, out); } @@ -123,7 +123,7 @@ void jit_loop_end_emitter::validate_arguments(const std::vector& in, con OV_CPU_JIT_EMITTER_ASSERT(loop_begin_label != nullptr, "has not inited begin label!"); } -void jit_loop_end_emitter::emit_code(const std::vector& in, +void jit_loop_end_emitter::emit_code_impl(const std::vector& in, const std::vector& out, const std::vector& pool_vec_idxs, const std::vector& pool_gpr_idxs) const { diff --git a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.hpp b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.hpp index 4038ed8eaa78a3..eddfe64cdc90dd 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/aarch64/jit_loop_emitters.hpp @@ -20,12 +20,6 @@ class jit_loop_begin_emitter : public jit_emitter { size_t get_inputs_count() const override { return 0; } - - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; - std::shared_ptr get_begin_label() { return loop_begin_label; } @@ -34,6 +28,11 @@ class jit_loop_begin_emitter : public jit_emitter { void validate_arguments(const std::vector& in, const std::vector& out) const override; void emit_impl(const std::vector& in, const std::vector& out) const override; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + std::shared_ptr loop_begin_label; size_t work_amount = 0; int64_t wa_increment = 0; @@ -54,10 +53,10 @@ class jit_loop_end_emitter : public jit_emitter { return 0; } - void emit_code(const std::vector& in_idxs, + void emit_code_impl(const std::vector& in_idxs, const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; protected: void validate_arguments(const std::vector& in, const std::vector& out) const override; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.cpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.cpp index fefa07a4202ba7..9f999b0ec0774f 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.cpp @@ -59,10 +59,10 @@ void jit_debug_emitter::emit_impl(const std::vector& in_idxs, const std: m_target_emitter->emit_impl(in_idxs, out_idxs); } -void jit_debug_emitter::emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_debug_emitter::emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { if (m_decorator_emit_loc == EmissionLocation::preamble || m_decorator_emit_loc == EmissionLocation::both) { m_decorator_emitter->emit_code(in_idxs, out_idxs, pool_vec_idxs, pool_gpr_idxs); } diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.hpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.hpp index 1bdbb6926436fc..cec39dad9f71db 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_debug_emitter.hpp @@ -28,10 +28,6 @@ class jit_debug_emitter : public jit_emitter { prepare_table(); } - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; void emit_data() const override; size_t get_inputs_num() const override; @@ -45,6 +41,11 @@ class jit_debug_emitter : public jit_emitter { void emit_impl(const std::vector& in_idxs, const std::vector& out_idxs) const override; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + void emitter_preamble(const std::vector& in_idxs, const std::vector& out_idxs, const std::vector& pool_vec_idxs, diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.cpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.cpp index 16f24d56dae4d7..49f6826e81433d 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.cpp @@ -49,10 +49,10 @@ jit_kernel_emitter::jit_kernel_emitter(jit_generator* h, data_ptr_regs_idx = snippets::utils::transform_snippets_regs_to_idxs(data_ptr_regs, snippets::RegType::gpr); } -void jit_kernel_emitter::emit_code(const std::vector& in, - const std::vector& out, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_kernel_emitter::emit_code_impl(const std::vector& in, + const std::vector& out, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { validate_arguments(in, out); aux_vec_idxs = pool_vec_idxs; aux_gpr_idxs = pool_gpr_idxs; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.hpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.hpp index 600343547abcb7..e09edbfea374e5 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_kernel_emitter.hpp @@ -36,10 +36,6 @@ class jit_kernel_emitter : public jit_emitter { size_t get_inputs_num() const override { return 0; } - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const override; protected: void validate_arguments(const std::vector& in, const std::vector& out) const override; @@ -50,6 +46,11 @@ class jit_kernel_emitter : public jit_emitter { void emit_impl(const std::vector& in, const std::vector& out) const override; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + jit_snippets_compile_args jcp; // gpr's used to store data pointers, track them to apply offsets in Kernel std::vector data_ptr_regs_idx; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.cpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.cpp index 8335f028351081..15c7b85c1928da 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.cpp @@ -81,12 +81,12 @@ void jit_loop_begin_emitter::validate_arguments(const std::vector& in, c "loop increment might be dynamic only if loop evaluates once!"); } -void jit_loop_begin_emitter::emit_code(const std::vector& in, - const std::vector& out, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_loop_begin_emitter::emit_code_impl(const std::vector& in, + const std::vector& out, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { validate_arguments(in, out); - jit_emitter::emit_code(in, out, pool_vec_idxs, pool_gpr_idxs); + jit_emitter::emit_code_impl(in, out, pool_vec_idxs, pool_gpr_idxs); } void jit_loop_begin_emitter::emit_impl(const std::vector& in, const std::vector& out) const { @@ -199,12 +199,12 @@ void jit_loop_end_emitter::validate_arguments(const std::vector& in, con "loop increment might be dynamic only if loop evaluates once!"); } -void jit_loop_end_emitter::emit_code(const std::vector& in, +void jit_loop_end_emitter::emit_code_impl(const std::vector& in, const std::vector& out, const std::vector& pool_vec_idxs, const std::vector& pool_gpr_idxs) const { validate_arguments(in, out); - jit_emitter::emit_code(in, out, pool_vec_idxs, pool_gpr_idxs); + jit_emitter::emit_code_impl(in, out, pool_vec_idxs, pool_gpr_idxs); } void jit_loop_end_emitter::emit_impl(const std::vector& in, const std::vector& out) const { diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.hpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.hpp index 031143f73585fc..7b66cd8b54b48a 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_loop_emitters.hpp @@ -22,11 +22,6 @@ class jit_loop_begin_emitter : public jit_emitter { return 0; } - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; - void set_loop_end_label(const std::shared_ptr& label) { loop_end_label = label; } @@ -38,6 +33,11 @@ class jit_loop_begin_emitter : public jit_emitter { void validate_arguments(const std::vector& in, const std::vector& out) const override; void emit_impl(const std::vector& in, const std::vector& out) const override; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + // `jit_loop_begin_emitter` handles manually aux_gpr allocation using `jit_aux_gpr_holder` size_t aux_gprs_count() const override { return 0; @@ -66,10 +66,10 @@ class jit_loop_end_emitter : public jit_emitter { return 0; } - void emit_code(const std::vector& in_idxs, + void emit_code_impl(const std::vector& in_idxs, const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; protected: void validate_arguments(const std::vector& in, const std::vector& out) const override; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.cpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.cpp index 3a008d95092e02..5a9e776fe9b471 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.cpp @@ -90,10 +90,10 @@ std::vector jit_memory_emitter::get_available_aux_gprs() const { return available_aux_gprs; } -void jit_memory_emitter::emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_memory_emitter::emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { emitter_preamble(in_idxs, out_idxs, pool_vec_idxs, pool_gpr_idxs); Reg64 reg_runtime_params = abi_param1; // defined by jit_kernel_emitter diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.hpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.hpp index a6eb21433feac4..552f9c9b579ba2 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_memory_emitters.hpp @@ -16,11 +16,6 @@ class jit_memory_emitter : public jit_emitter { const ov::snippets::lowered::ExpressionPtr& expr, emitter_in_out_map in_out_type); - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs = {}, - const std::vector& pool_gpr_idxs = {}) const override; - protected: static size_t get_parent_buffer_cluster_id(const ov::snippets::lowered::ExpressionPtr& expr); static size_t get_consumer_buffer_cluster_id(const ov::snippets::lowered::ExpressionPtr& expr); @@ -29,6 +24,11 @@ class jit_memory_emitter : public jit_emitter { std::vector get_available_aux_gprs() const; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; + ov::element::Type src_prc; ov::element::Type dst_prc; diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.cpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.cpp index 8017ae2d873354..59f84c75ee28ee 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.cpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.cpp @@ -33,10 +33,10 @@ void jit_reg_spill_begin_emitter::validate_arguments(const std::vector& "Invalid number of out regs for reg_spill_begin emitter"); } -void jit_reg_spill_begin_emitter::emit_code(const std::vector& in, - const std::vector& out, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const { +void jit_reg_spill_begin_emitter::emit_code_impl(const std::vector& in, + const std::vector& out, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const { validate_arguments(in, out); emit_impl(in, out); } @@ -70,7 +70,7 @@ void jit_reg_spill_end_emitter::validate_arguments(const std::vector& in "Invalid number of in regs for reg_spill_end emitter"); } -void jit_reg_spill_end_emitter::emit_code(const std::vector& in, +void jit_reg_spill_end_emitter::emit_code_impl(const std::vector& in, const std::vector& out, const std::vector& pool_vec_idxs, const std::vector& pool_gpr_idxs) const { diff --git a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.hpp b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.hpp index ad1a876b58dee9..a67caeb15ed6fb 100644 --- a/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.hpp +++ b/src/plugins/intel_cpu/src/emitters/snippets/x64/jit_reg_spill_emitters.hpp @@ -23,14 +23,13 @@ class jit_reg_spill_begin_emitter : public jit_emitter { return 0; } - void emit_code(const std::vector& in_idxs, - const std::vector& out_idxs, - const std::vector& pool_vec_idxs, - const std::vector& pool_gpr_idxs) const override; - protected: void validate_arguments(const std::vector& in, const std::vector& out) const override; void emit_impl(const std::vector& in, const std::vector& out) const override; + void emit_code_impl(const std::vector& in_idxs, + const std::vector& out_idxs, + const std::vector& pool_vec_idxs, + const std::vector& pool_gpr_idxs) const override; std::set m_regs_to_spill; std::shared_ptr m_abi_reg_spiller; }; @@ -49,7 +48,7 @@ class jit_reg_spill_end_emitter : public jit_emitter { return 0; } - void emit_code(const std::vector& in_idxs, + void emit_code_impl(const std::vector& in_idxs, const std::vector& out_idxs, const std::vector& pool_vec_idxs, const std::vector& pool_gpr_idxs) const override; diff --git a/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.cpp b/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.cpp index 3e761f631ca7c6..aa25febe98a0af 100644 --- a/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.cpp +++ b/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.cpp @@ -75,7 +75,7 @@ TppEmitter::TppEmitter(dnnl::impl::cpu::x64::jit_generator* h, } } -void TppEmitter::emit_code(const std::vector& in, const std::vector& out) const { +void TppEmitter::emit_code_impl(const std::vector& in, const std::vector& out) const { validate_arguments(in, out); emit_impl(in, out); } diff --git a/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.hpp b/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.hpp index 3da9222357186e..48178f7ea344dc 100644 --- a/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.hpp +++ b/src/plugins/intel_cpu/src/emitters/tpp/x64/jit_tpp_emitter.hpp @@ -32,11 +32,11 @@ class TppEmitter : public jit_binary_call_emitter { TppEmitter(dnnl::impl::cpu::x64::jit_generator* h, dnnl::impl::cpu::x64::cpu_isa_t isa, const ov::snippets::lowered::ExpressionPtr& expr); - void emit_code(const std::vector& in, const std::vector& out) const; static libxsmm_datatype ov_to_xsmm_dtype(ov::element::Type_t elemet_type); protected: void emit_impl(const std::vector& in, const std::vector& out) const override; + void emit_code_impl(const std::vector& in, const std::vector& out) const; static ov::snippets::VectorDims get_projected_subtensor(const snippets::lowered::PortDescriptorPtr& desc); /// Generate function pointer to the thin wrapper over the kernel that is called in runtime on every iteration diff --git a/src/plugins/intel_cpu/src/graph.cpp b/src/plugins/intel_cpu/src/graph.cpp index f89663e4d03437..caad2ccfdd1d67 100644 --- a/src/plugins/intel_cpu/src/graph.cpp +++ b/src/plugins/intel_cpu/src/graph.cpp @@ -1183,7 +1183,7 @@ void Graph::PushInputData(const std::size_t& index, const ov::SoPtr& in if (actualDesc->getPrecision() == element::string) { StringMemory ext_mem(getEngine(), ext_tensor_desc, ext_data_ptr); - edgeMemory->load(ext_mem); + edgeMemory->load(ext_mem, false); } else if (!actualDesc->isCompatible(*ext_tensor_desc)) { Memory ext_mem(getEngine(), ext_tensor_desc, ext_data_ptr, false); edgeMemory->load(ext_mem, false); @@ -1293,7 +1293,7 @@ void Graph::PullOutputData(std::unordered_map>& if (actualDesc->getPrecision() == element::string) { StringMemory outBloMem(getEngine(), expected_desc_ptr, ext_blob_ptr); - outBloMem.load(intr_blob); + outBloMem.load(intr_blob, false); } else if (!actualDesc->isCompatible(*expected_desc_ptr) && !isScalarOutput) { Memory outBloMem(getEngine(), expected_desc_ptr, ext_blob_ptr, false); outBloMem.load(intr_blob, false); diff --git a/src/plugins/intel_cpu/src/memory_state.cpp b/src/plugins/intel_cpu/src/memory_state.cpp index bf284e22ae7c6e..ba6173fe280884 100644 --- a/src/plugins/intel_cpu/src/memory_state.cpp +++ b/src/plugins/intel_cpu/src/memory_state.cpp @@ -57,7 +57,7 @@ void VariableStateBase::set_state_impl(const ov::SoPtr& state) { auto src = state->data(); Memory mem(get_engine(), state_desc, src); - input_mem()->load(mem); + input_mem()->load(mem, true); reset_state_flag = false; } @@ -96,7 +96,7 @@ ov::SoPtr VariableStateBase::get_state() const { // reorder auto mem = std::make_shared(get_engine(), current_ext_desc); - mem->load(*(internal_state_mem())); + mem->load(*(internal_state_mem()), true); return std::make_shared(mem); } @@ -312,7 +312,7 @@ void VariableStateKVcache::set_state_impl(const ov::SoPtr& state) { m_scale_zp.at({m, b, h, size_t{1}})); }); } else { - m_internal_mem->load(external_mem); + m_internal_mem->load(external_mem, true); } // 2. Reset the beam search table diff --git a/src/plugins/intel_cpu/src/node.h b/src/plugins/intel_cpu/src/node.h index 6ac03b91b39934..0acbe387f1c464 100644 --- a/src/plugins/intel_cpu/src/node.h +++ b/src/plugins/intel_cpu/src/node.h @@ -508,7 +508,7 @@ class Node { return perfCounter; } - virtual void resolveInPlaceEdges(Edge::LOOK look = Edge::LOOK_BOTH); + virtual void resolveInPlaceEdges(Edge::LOOK look); // @todo this supposed to be 'execute + executeImpl' instead of 'executeStatic + execute' // but this requires changes in all the nodes. Since moving to a numa node right before an execute @@ -715,11 +715,11 @@ class Node { virtual void appendPostOps(dnnl::post_ops& ops, const VectorDims& postOpDims, std::unordered_map& postOpsMem, - const int channelAxis = 1); + const int channelAxis); virtual void appendPostOps(dnnl::post_ops& ops, const VectorDims& postOpDims, std::vector& postOpsMem, - const int channelAxis = 1); + const int channelAxis); virtual bool canBeExecutedInInt8() const { OPENVINO_THROW_NOT_IMPLEMENTED("canBeExecutedInInt8 not implemented for node with type ", NameFromType(getType())); diff --git a/src/plugins/intel_cpu/src/nodes/bin_conv.cpp b/src/plugins/intel_cpu/src/nodes/bin_conv.cpp index 59cada77ce2692..314e7214b9788e 100644 --- a/src/plugins/intel_cpu/src/nodes/bin_conv.cpp +++ b/src/plugins/intel_cpu/src/nodes/bin_conv.cpp @@ -1205,19 +1205,20 @@ void BinaryConvolution::setPostOps(dnnl::primitive_attr& attr) { postOpsDataPtrs.clear(); for (auto& node : fusedWith) { auto* eltwiseNode = dynamic_cast(node.get()); + int channelAxis = 1; if (eltwiseNode) { if (eltwiseNode->isSpecialConvolutionAddFusing()) { ops.append_sum(1.0); } else { // TODO [DS]: change to shape from memory - eltwiseNode->appendPostOps(ops, getOutputShapeAtPort(0).getStaticDims(), postOpsDataPtrs); + eltwiseNode->appendPostOps(ops, getOutputShapeAtPort(0).getStaticDims(), postOpsDataPtrs, channelAxis); } continue; } auto* fakeQuantizeNode = dynamic_cast(node.get()); if (fakeQuantizeNode) { - fakeQuantizeNode->appendPostOps(ops, getOutputShapeAtPort(0).getStaticDims(), postOpsDataPtrs); + fakeQuantizeNode->appendPostOps(ops, getOutputShapeAtPort(0).getStaticDims(), postOpsDataPtrs, channelAxis); continue; } diff --git a/src/plugins/intel_cpu/src/nodes/conv.cpp b/src/plugins/intel_cpu/src/nodes/conv.cpp index 932fc58986d654..c0721734d0a27e 100644 --- a/src/plugins/intel_cpu/src/nodes/conv.cpp +++ b/src/plugins/intel_cpu/src/nodes/conv.cpp @@ -705,7 +705,8 @@ void Convolution::setPostOps(dnnl::primitive_attr& attr, continue; } DEBUG_LOG(getName(), ": Append ", node->getName(), " as legacy post op"); - eltwiseNode->appendPostOps(ops, dims, args); + int channelAxis = 1; + eltwiseNode->appendPostOps(ops, dims, args, channelAxis); } else { DEBUG_LOG(getName(), ": Append ", node->getName(), " as original post op with binary"); eltwiseNode->appendAttrPostOps(dnnlpoc, isLastPostOp, outputDataType); @@ -747,7 +748,8 @@ void Convolution::setPostOps(dnnl::primitive_attr& attr, } // fallback to legacy DEBUG_LOG(getName(), ": Append ", node->getName(), " as legacy post op"); - fakeQuantizeNode->appendPostOps(ops, dims, args); + int channelAxis = 1; + fakeQuantizeNode->appendPostOps(ops, dims, args, channelAxis); } else { DEBUG_LOG(getName(), ": Append ", node->getName(), " as original post op with binary"); fakeQuantizeNode->appendAttrPostOps(dnnlpoc, isLastPostOp, outputDataType, true, do_rounding); @@ -1685,7 +1687,7 @@ void Convolution::executeDynamicImpl(const dnnl::stream& strm) { const auto& outMem = out->getParentEdgeAt(0)->getMemory(); auto convOutMem = getDstMemoryAtPort(0); Node::redefineOutputMemory({outMem.getStaticDims()}); - convOutMem->load(outMem); + convOutMem->load(outMem, true); } } diff --git a/src/plugins/intel_cpu/src/nodes/eltwise.cpp b/src/plugins/intel_cpu/src/nodes/eltwise.cpp index d7e0d3f498b5bd..6e26bfb3a48e05 100644 --- a/src/plugins/intel_cpu/src/nodes/eltwise.cpp +++ b/src/plugins/intel_cpu/src/nodes/eltwise.cpp @@ -1899,7 +1899,8 @@ void Eltwise::prepareParams() { eltwise->getGamma()}); } } else if (node->getType() == Type::FakeQuantize) { - node->appendPostOps(key.postOps, {}, fqDataPtrs); + int channelAxis = 1; + node->appendPostOps(key.postOps, {}, fqDataPtrs, channelAxis); } else { THROW_CPU_NODE_ERR("has unexpected fused op of type '", node->getTypeStr(), "'"); } diff --git a/src/plugins/intel_cpu/src/nodes/eltwise.h b/src/plugins/intel_cpu/src/nodes/eltwise.h index 5175ca61cbf246..9697d9b29c0ea6 100644 --- a/src/plugins/intel_cpu/src/nodes/eltwise.h +++ b/src/plugins/intel_cpu/src/nodes/eltwise.h @@ -48,11 +48,11 @@ class Eltwise : public Node { void appendPostOps(dnnl::post_ops& ops, const VectorDims& postOpDims, std::unordered_map& postOpsMem, - const int channelAxis = 1) override; + const int channelAxis) override; void appendPostOps(dnnl::post_ops& ops, const VectorDims& postOpDims, std::vector& postOpsMem, - const int channelAxis = 1) override; + const int channelAxis) override; bool appendAttrPostOps(DnnlPostOpsComposerLegacy& dnnlpoc, bool isLastPostOp, dnnl::memory::data_type outDataType, diff --git a/src/plugins/intel_cpu/src/nodes/executors/shl/shl.hpp b/src/plugins/intel_cpu/src/nodes/executors/shl/shl.hpp index 440f93aa8e9b6c..344c22c0a540a0 100644 --- a/src/plugins/intel_cpu/src/nodes/executors/shl/shl.hpp +++ b/src/plugins/intel_cpu/src/nodes/executors/shl/shl.hpp @@ -169,7 +169,7 @@ struct ShlTensor : public ShlStructure { struct IShlParams { public: virtual ~IShlParams() = default; - virtual void* get(bool allow_empty = false) const = 0; + virtual void* get(bool allow_empty) const = 0; }; template > @@ -190,7 +190,7 @@ struct ShlParams : public ShlStructure, public IShlParams { setAPI(api); } - void* get(bool allow_empty = false) const override { + void* get(bool allow_empty) const override { return this->ShlStructure::get(allow_empty); } diff --git a/src/plugins/intel_cpu/src/nodes/fake_quantize.h b/src/plugins/intel_cpu/src/nodes/fake_quantize.h index 950c598dfdb51d..2872ed30f15dd4 100644 --- a/src/plugins/intel_cpu/src/nodes/fake_quantize.h +++ b/src/plugins/intel_cpu/src/nodes/fake_quantize.h @@ -179,11 +179,11 @@ class FakeQuantize : public Node { void appendPostOps(dnnl::post_ops& ops, const VectorDims& postOpDims, std::unordered_map& postOpsMem, - const int channelAxis = 1) override; + const int channelAxis) override; void appendPostOps(dnnl::post_ops& ops, const VectorDims& postOpDims, std::vector& postOpsMem, - const int channelAxis = 1) override; + const int channelAxis) override; bool appendAttrPostOps(DnnlPostOpsComposerLegacy& dnnlpoc, bool isLastPostOp, dnnl::memory::data_type outDataType, diff --git a/src/plugins/intel_cpu/src/nodes/interpolate.cpp b/src/plugins/intel_cpu/src/nodes/interpolate.cpp index 454e7468d3e8da..eb7c3d0841d316 100644 --- a/src/plugins/intel_cpu/src/nodes/interpolate.cpp +++ b/src/plugins/intel_cpu/src/nodes/interpolate.cpp @@ -2565,15 +2565,17 @@ void Interpolate::setPostOps(dnnl::primitive_attr& attr, const VectorDims& dims) postOpsDataPtrs.clear(); for (auto& node : fusedWith) { + int channelAxis = 1; + auto* fakeQuantizeNode = dynamic_cast(node.get()); if (fakeQuantizeNode) { - fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs); + fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs, channelAxis); continue; } auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode) { - eltwiseNode->appendPostOps(ops, dims, postOpsDataPtrs); + eltwiseNode->appendPostOps(ops, dims, postOpsDataPtrs, channelAxis); continue; } diff --git a/src/plugins/intel_cpu/src/nodes/memory.cpp b/src/plugins/intel_cpu/src/nodes/memory.cpp index b61efb7692b064..1f408be7d38467 100644 --- a/src/plugins/intel_cpu/src/nodes/memory.cpp +++ b/src/plugins/intel_cpu/src/nodes/memory.cpp @@ -82,7 +82,7 @@ class MemoryStub : public IMemory { m_pMemDesc = desc; } - void load(const IMemory& src, bool ftz = true) const override { + void load(const IMemory& src, bool ftz) const override { OPENVINO_THROW("Unexpected call MemoryStub::load()"); } @@ -306,7 +306,7 @@ void MemoryOutput::runStatic(dnnl::stream strm) { CPU_NODE_ASSERT(assignedMem, " uninitialized assigned memory"); if (inputMem->getData() != assignedMem->getData()) { - assignedMem->load(*inputMem); + assignedMem->load(*inputMem, true); } } @@ -811,7 +811,7 @@ void MemoryInput::runDynamic(dnnl::stream strm) { // copy data when necessary if (src->getData() != dst->getData()) { - dst->load(*src); + dst->load(*src, true); } } @@ -855,7 +855,7 @@ void MemoryInput::runStatic(dnnl::stream strm) { // copy data when necessary auto dst = getDstMemoryAtPort(0); if (src->getData() != dst->getData()) { - dst->load(*src); + dst->load(*src, true); } } @@ -1068,7 +1068,7 @@ void MemoryInputSingle::runStatic(dnnl::stream strm) { auto stateMem = getAssignedState()->output_mem(); CPU_NODE_ASSERT(stateMem, " state memory has nullptr"); if (result->getData() != stateMem->getData()) { - stateMem->load(*result); + stateMem->load(*result, true); } } getAssignedState()->commit(); // since we don't use MemoryOutput, commit must be called to change the reset state @@ -1093,7 +1093,7 @@ void MemoryInputSingle::runDynamic(dnnl::stream strm) { } if (result->getData() != stateMem->getData()) { - stateMem->load(*result); + stateMem->load(*result, true); } } getAssignedState()->commit(); // since we don't use MemoryOutput, commit must be called to change the reset state diff --git a/src/plugins/intel_cpu/src/nodes/mvn.cpp b/src/plugins/intel_cpu/src/nodes/mvn.cpp index cbb7e5b9e246d7..3f3395fcb652f7 100644 --- a/src/plugins/intel_cpu/src/nodes/mvn.cpp +++ b/src/plugins/intel_cpu/src/nodes/mvn.cpp @@ -2282,15 +2282,17 @@ void MVN::setPostOps(dnnl::primitive_attr& attr, bool initWeights) { dnnl::post_ops ops; postOpsDataPtrs.clear(); for (auto& node : fusedWith) { + int channelAxis = 1; + auto* fakeQuantizeNode = dynamic_cast(node.get()); if (fakeQuantizeNode) { - fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs); + fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs, channelAxis); continue; } auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode) { - eltwiseNode->appendPostOps(ops, shape5D, postOpsDataPtrs); + eltwiseNode->appendPostOps(ops, shape5D, postOpsDataPtrs, channelAxis); continue; } THROW_CPU_NODE_ERR("Fusing of ", diff --git a/src/plugins/intel_cpu/src/nodes/normalize.cpp b/src/plugins/intel_cpu/src/nodes/normalize.cpp index cf3740930e575c..3b622e87fd2e68 100644 --- a/src/plugins/intel_cpu/src/nodes/normalize.cpp +++ b/src/plugins/intel_cpu/src/nodes/normalize.cpp @@ -903,15 +903,17 @@ void NormalizeL2::setPostOps(dnnl::primitive_attr& kernel_attrs, const VectorDim postOpsDataPtrs.clear(); for (auto& node : fusedWith) { + int channelAxis = 1; + auto* fakeQuantizeNode = dynamic_cast(node.get()); if (fakeQuantizeNode) { - fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs); + fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs, channelAxis); continue; } auto* eltwiseNode = dynamic_cast(node.get()); if (eltwiseNode) { - eltwiseNode->appendPostOps(ops, dims, postOpsDataPtrs); + eltwiseNode->appendPostOps(ops, dims, postOpsDataPtrs, channelAxis); continue; } diff --git a/src/plugins/intel_cpu/src/nodes/pooling.cpp b/src/plugins/intel_cpu/src/nodes/pooling.cpp index 4661bd1cc37930..ae93655c340399 100644 --- a/src/plugins/intel_cpu/src/nodes/pooling.cpp +++ b/src/plugins/intel_cpu/src/nodes/pooling.cpp @@ -757,9 +757,11 @@ void Pooling::setPostOps(dnnl::primitive_attr& attr) { dnnl::post_ops ops; for (auto& node : fusedWith) { + int channelAxis = 1; + auto* fakeQuantizeNode = dynamic_cast(node.get()); if (fakeQuantizeNode) { - fakeQuantizeNode->appendPostOps(ops, {}, postOpsArgs); + fakeQuantizeNode->appendPostOps(ops, {}, postOpsArgs, channelAxis); continue; } diff --git a/src/plugins/intel_cpu/src/nodes/reduce.cpp b/src/plugins/intel_cpu/src/nodes/reduce.cpp index cdf3a1e730a052..17f8affcfbc1d1 100644 --- a/src/plugins/intel_cpu/src/nodes/reduce.cpp +++ b/src/plugins/intel_cpu/src/nodes/reduce.cpp @@ -3698,9 +3698,11 @@ void Reduce::setPostOps(dnnl::primitive_attr& attr, const VectorDims& postOpDims dnnl::post_ops ops; postOpsDataPtrs.clear(); for (auto& node : fusedWith) { + int channelAxis = 1; + auto* fakeQuantizeNode = dynamic_cast(node.get()); if (fakeQuantizeNode) { - fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs); + fakeQuantizeNode->appendPostOps(ops, {}, postOpsDataPtrs, channelAxis); continue; } diff --git a/src/plugins/intel_cpu/src/nodes/tensoriterator.cpp b/src/plugins/intel_cpu/src/nodes/tensoriterator.cpp index 245c4d72ab4be0..2faa2d96db5f6c 100644 --- a/src/plugins/intel_cpu/src/nodes/tensoriterator.cpp +++ b/src/plugins/intel_cpu/src/nodes/tensoriterator.cpp @@ -154,7 +154,7 @@ class BackEdgePortHelper : public PortMapHelper { getReorderPrim(cache, mem_holder_dst.get_engine(), mem_holder_src.get_desc(), mem_holder_dst.get_desc()); } - void execute(const dnnl::stream& strm, int iter = -1) override { + void execute(const dnnl::stream& strm, int iter) override { if (iter != 0) { reorder.execute(strm, {{DNNL_ARG_FROM, mem_holder_src}, {DNNL_ARG_TO, mem_holder_dst}}); } @@ -648,7 +648,7 @@ void TensorIterator::execute(const dnnl::stream& strm) { int max_num_iter = trip_count_check->getStatus(); for (auto& mapper : first_mappers) { - mapper.second->execute(strm); + mapper.second->execute(strm, -1); } // use "i != max_num_iter" only to allow "-1" works like infinite loop @@ -670,7 +670,7 @@ void TensorIterator::execute(const dnnl::stream& strm) { } for (auto& mapper : last_mappers) { - mapper->execute(strm); + mapper->execute(strm, -1); } } @@ -682,7 +682,7 @@ void TensorIterator::executeDynamicImpl(const dnnl::stream& strm) { int max_num_iter = trip_count_check->getStatus(); for (auto& mapper : first_mappers) { - mapper.second->execute(strm); + mapper.second->execute(strm, -1); } // use "i != max_num_iter" only to allow "-1" works like infinite loop @@ -866,7 +866,7 @@ void TensorIterator::reshapeAndFillOutput(const dnnl::stream& strm) { if (!newShape.isDynamic()) { BackEdgePortHelper mapper(context->getParamsCache(), from_mem, to_mems.front()); - mapper.execute(strm); + mapper.execute(strm, -1); } } } diff --git a/src/plugins/intel_cpu/src/nodes/tensoriterator.h b/src/plugins/intel_cpu/src/nodes/tensoriterator.h index 247b88ab1bddf9..e1ef2175422796 100644 --- a/src/plugins/intel_cpu/src/nodes/tensoriterator.h +++ b/src/plugins/intel_cpu/src/nodes/tensoriterator.h @@ -37,7 +37,7 @@ struct PortMap { class PortMapHelper { public: virtual ~PortMapHelper() = default; - virtual void execute(const dnnl::stream& strm, int n_iter = -1) = 0; + virtual void execute(const dnnl::stream& strm, int n_iter) = 0; protected: dnnl::primitive reorder;