Skip to content

Commit 97d09b3

Browse files
authored
[CPU] migrate onednn3.6 (#27957)
1. migrate to oneDNN3.6 - apply x64 patch - apply arm patch - apply rv64 patch 2. fix conflicts in OpenVINO - adapt `jit_uni_eltwise_injector` constructor - adapt `dnnl::impl::md2fmt_str` func 3. track by tickets - MFDNN-12818 - MFDNN-12919 - MFDNN-12924 4. oneDNN link - branch: https://github.com/openvinotoolkit/oneDNN/tree/xiuchuan/dev-v3.6
1 parent b5519d3 commit 97d09b3

File tree

16 files changed

+80
-54
lines changed

16 files changed

+80
-54
lines changed

src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,18 @@ jit_dnnl_emitter::jit_dnnl_emitter(jit_generator* host,
4646
void jit_dnnl_emitter::set_injector() {
4747
if (host_isa_ == cpu::x64::sse41) {
4848
eltwise_injector_sse42 =
49-
std::make_shared<jit_uni_eltwise_injector_f32<cpu::x64::sse41>>(h, kind, alpha, beta, 1.f);
49+
std::make_shared<jit_uni_eltwise_injector<cpu::x64::sse41>>(h, kind, alpha, beta, 1.f, data_type::f32);
5050
} else if (host_isa_ == cpu::x64::avx2) {
5151
eltwise_injector_avx2 =
52-
std::make_shared<jit_uni_eltwise_injector_f32<cpu::x64::avx2>>(h, kind, alpha, beta, 1.f);
52+
std::make_shared<jit_uni_eltwise_injector<cpu::x64::avx2>>(h, kind, alpha, beta, 1.f, data_type::f32);
5353
} else if (host_isa_ == cpu::x64::avx512_core) {
5454
eltwise_injector_avx512_core =
55-
std::make_shared<jit_uni_eltwise_injector_f32<cpu::x64::avx512_core>>(h, kind, alpha, beta, 1.f);
55+
std::make_shared<jit_uni_eltwise_injector<cpu::x64::avx512_core>>(h,
56+
kind,
57+
alpha,
58+
beta,
59+
1.f,
60+
data_type::f32);
5661
} else {
5762
OV_CPU_JIT_EMITTER_THROW("Unsupported ISA ", host_isa_);
5863
}

src/plugins/intel_cpu/src/emitters/plugin/x64/jit_dnnl_emitters.hpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,9 @@ class jit_dnnl_emitter : public jit_emitter {
4242
float alpha{0.f};
4343
float beta{0.f};
4444

45-
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector_f32<dnnl::impl::cpu::x64::sse41>>
46-
eltwise_injector_sse42;
47-
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector_f32<dnnl::impl::cpu::x64::avx2>>
48-
eltwise_injector_avx2;
49-
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector_f32<dnnl::impl::cpu::x64::avx512_core>>
45+
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector<dnnl::impl::cpu::x64::sse41>> eltwise_injector_sse42;
46+
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector<dnnl::impl::cpu::x64::avx2>> eltwise_injector_avx2;
47+
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector<dnnl::impl::cpu::x64::avx512_core>>
5048
eltwise_injector_avx512_core;
5149

5250
private:

src/plugins/intel_cpu/src/nodes/bin_conv.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,12 @@ struct jit_uni_bin_conv_kernel_f32 : public jit_uni_bin_conv_kernel, public jit_
6666
for (int i = 0; i < end_idx; i++) {
6767
auto& post_op = p.entry_[i];
6868
if (post_op.is_eltwise()) {
69-
eltwise_injectors.push_back(std::make_shared<jit_uni_eltwise_injector_f32<isa>>(this,
70-
post_op.eltwise,
71-
true,
72-
eltwise_reserved,
73-
mask_post_op_reserved));
69+
eltwise_injectors.push_back(std::make_shared<jit_uni_eltwise_injector<isa>>(this,
70+
post_op.eltwise,
71+
data_type::f32,
72+
true,
73+
eltwise_reserved,
74+
mask_post_op_reserved));
7475
} else if (post_op.is_depthwise()) {
7576
depthwise_injectors.push_back(
7677
std::make_shared<jit_uni_depthwise_injector_f32<isa>>(this, post_op, mask_post_op_reserved));
@@ -217,7 +218,7 @@ struct jit_uni_bin_conv_kernel_f32 : public jit_uni_bin_conv_kernel, public jit_
217218

218219
Xbyak::Label l_table;
219220

220-
nstl::vector<std::shared_ptr<jit_uni_eltwise_injector_f32<isa>>> eltwise_injectors;
221+
nstl::vector<std::shared_ptr<jit_uni_eltwise_injector<isa>>> eltwise_injectors;
221222
nstl::vector<std::shared_ptr<jit_uni_depthwise_injector_f32<isa>>> depthwise_injectors;
222223

223224
void cvt2ps(dnnl::memory::data_type type_in, Vmm vmm_in, const Xbyak::Operand& op, bool scalar_load) {

src/plugins/intel_cpu/src/nodes/common/softmax.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "utils/bfloat16.hpp"
1717

1818
using namespace dnnl;
19+
using namespace dnnl::impl;
1920
using namespace dnnl::impl::cpu;
2021
using namespace dnnl::impl::cpu::x64;
2122
using namespace dnnl::impl::utils;
@@ -68,7 +69,7 @@ struct jit_uni_softmax_kernel_f32 : public jit_uni_softmax_kernel, public jit_ge
6869

6970
void generate() override {
7071
exp_injector.reset(
71-
new jit_uni_eltwise_injector_f32<isa>(this, dnnl::impl::alg_kind::eltwise_exp, 0.f, 0.f, 1.0f));
72+
new jit_uni_eltwise_injector<isa>(this, dnnl::impl::alg_kind::eltwise_exp, 0.f, 0.f, 1.0f, data_type::f32));
7273

7374
if (mayiuse(avx512_core))
7475
uni_vcvtneps2bf16.reset(new jit_uni_vcvtneps2bf16(this, isa));
@@ -200,7 +201,7 @@ struct jit_uni_softmax_kernel_f32 : public jit_uni_softmax_kernel, public jit_ge
200201

201202
std::unique_ptr<jit_uni_vcvtneps2bf16> uni_vcvtneps2bf16;
202203

203-
std::shared_ptr<jit_uni_eltwise_injector_f32<isa>> exp_injector;
204+
std::shared_ptr<jit_uni_eltwise_injector<isa>> exp_injector;
204205

205206
jit_softmax_config_params jcp_;
206207

src/plugins/intel_cpu/src/nodes/interpolate.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ struct jit_uni_interpolate_kernel_f32 : public jit_uni_interpolate_kernel, publi
7373
for (int i = 0; i < p.len(); i++) {
7474
auto& post_op = p.entry_[i];
7575
if (post_op.is_eltwise()) {
76-
eltwise_injectors.push_back(std::make_shared<jit_uni_eltwise_injector_f32<isa>>(this,
77-
post_op.eltwise.alg,
78-
post_op.eltwise.alpha,
79-
post_op.eltwise.beta,
80-
1.f));
76+
eltwise_injectors.push_back(std::make_shared<jit_uni_eltwise_injector<isa>>(this,
77+
post_op.eltwise.alg,
78+
post_op.eltwise.alpha,
79+
post_op.eltwise.beta,
80+
1.f,
81+
data_type::f32));
8182
} else if (post_op.is_depthwise()) {
8283
depthwise_injectors.push_back(std::make_shared<jit_uni_depthwise_injector_f32<isa>>(this, post_op));
8384
} else if (post_op.is_quantization()) {
@@ -275,7 +276,7 @@ struct jit_uni_interpolate_kernel_f32 : public jit_uni_interpolate_kernel, publi
275276
std::vector<size_t> store_pool_vec_idxs;
276277
std::vector<size_t> load_pool_gpr_idxs;
277278

278-
std::vector<std::shared_ptr<jit_uni_eltwise_injector_f32<isa>>> eltwise_injectors;
279+
std::vector<std::shared_ptr<jit_uni_eltwise_injector<isa>>> eltwise_injectors;
279280
std::vector<std::shared_ptr<jit_uni_depthwise_injector_f32<isa>>> depthwise_injectors;
280281
std::vector<std::shared_ptr<jit_uni_quantization_injector_f32<isa>>> quantization_injectors;
281282

src/plugins/intel_cpu/src/nodes/kernels/x64/brgemm_kernel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ void BrgemmKernel::init_brgemm_copy_b(
289289
brgemm_matmul_conf_t brgCopyKernelConf;
290290
brgCopyKernelConf.src_dt = is_avx_f16_only ? dnnl_data_type_t::dnnl_f32 : dt_in0;
291291
brgCopyKernelConf.wei_dt = is_avx_f16_only ? dnnl_data_type_t::dnnl_f32 : dt_in1;
292-
brgCopyKernelConf.orig_wei_dt = dt_in1;
292+
brgCopyKernelConf.orig_wei_dt = static_cast<dnnl_data_type_t>(DnnlExtensionUtils::ElementTypeToDataType(inType));
293293
brgCopyKernelConf.wei_n_blk = N_blk;
294294
brgCopyKernelConf.wei_tag = transpose ? dnnl_ba : dnnl_ab;
295295
brgCopyKernelConf.copy_B_wei_stride = copy_B_wei_stride;

src/plugins/intel_cpu/src/nodes/kernels/x64/mlp_kernel.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,12 +550,13 @@ void GateUpCombine::generate() {
550550
const auto zmm_up = zmm0;
551551
const auto ymm_dst = ymm5;
552552

553-
auto injector = std::make_shared<jit_uni_eltwise_injector_f32<dnnl::impl::cpu::x64::avx512_core>>(
553+
auto injector = std::make_shared<jit_uni_eltwise_injector<dnnl::impl::cpu::x64::avx512_core>>(
554554
this,
555555
m_act_alg,
556556
1.f,
557557
1.0f,
558558
1.f,
559+
data_type::f32,
559560
true, // save_state, true due to additional r15 is used.
560561
Xbyak::Reg64(Xbyak::Operand::R10), // p_table
561562
Xbyak::Opmask(1), // k_mask

src/plugins/intel_cpu/src/nodes/kernels/x64/non_max_suppression.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "utils/general_utils.h"
88

9+
using namespace dnnl::impl;
910
using namespace dnnl::impl::cpu;
1011

1112
#define GET_OFF(field) offsetof(NmsCallArgs, field)
@@ -20,7 +21,7 @@ void NonMaxSuppression<isa>::generate() {
2021
load_scalar_emitter.reset(new jit_load_emitter(this, isa, ov::element::f32, ov::element::f32, scalar_step));
2122

2223
exp_injector.reset(
23-
new x64::jit_uni_eltwise_injector_f32<isa>(this, dnnl::impl::alg_kind::eltwise_exp, 0.f, 0.f, 1.f));
24+
new x64::jit_uni_eltwise_injector<isa>(this, dnnl::impl::alg_kind::eltwise_exp, 0.f, 0.f, 1.f, data_type::f32));
2425

2526
this->preamble();
2627

src/plugins/intel_cpu/src/nodes/kernels/x64/non_max_suppression.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class NonMaxSuppression : public JitKernel<NmsCompileParams, NmsCallArgs> {
110110
Xbyak::Opmask k_mask = Xbyak::Opmask(7);
111111
Xbyak::Opmask k_mask_one = Xbyak::Opmask(6);
112112

113-
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector_f32<isa>> exp_injector;
113+
std::shared_ptr<dnnl::impl::cpu::x64::jit_uni_eltwise_injector<isa>> exp_injector;
114114

115115
inline void hard_nms();
116116

src/plugins/intel_cpu/src/nodes/mvn.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -949,11 +949,12 @@ struct jit_uni_mvn_kernel_f32 : public jit_uni_mvn_kernel, public jit_generator
949949
for (int i = 0; i < p.len(); i++) {
950950
auto& post_op = p.entry_[i];
951951
if (post_op.is_eltwise()) {
952-
eltwise_injectors.push_back(std::make_shared<jit_uni_eltwise_injector_f32<isa>>(this,
953-
post_op.eltwise.alg,
954-
post_op.eltwise.alpha,
955-
post_op.eltwise.beta,
956-
post_op.eltwise.scale));
952+
eltwise_injectors.push_back(std::make_shared<jit_uni_eltwise_injector<isa>>(this,
953+
post_op.eltwise.alg,
954+
post_op.eltwise.alpha,
955+
post_op.eltwise.beta,
956+
post_op.eltwise.scale,
957+
data_type::f32));
957958
} else if (post_op.is_depthwise()) {
958959
depthwise_injectors.push_back(std::make_shared<jit_uni_depthwise_injector_f32<isa>>(this, post_op));
959960
} else if (post_op.is_quantization()) {
@@ -1093,7 +1094,7 @@ struct jit_uni_mvn_kernel_f32 : public jit_uni_mvn_kernel, public jit_generator
10931094

10941095
const int tile_size[kTileNum] = {8, 4, 2, 1};
10951096

1096-
std::vector<std::shared_ptr<jit_uni_eltwise_injector_f32<isa>>> eltwise_injectors;
1097+
std::vector<std::shared_ptr<jit_uni_eltwise_injector<isa>>> eltwise_injectors;
10971098
std::vector<std::shared_ptr<jit_uni_depthwise_injector_f32<isa>>> depthwise_injectors;
10981099
std::vector<std::shared_ptr<jit_uni_quantization_injector_f32<isa>>> quantization_injectors;
10991100

0 commit comments

Comments
 (0)