From 8ea9986896288dadb7bf4c7edb5436b7325463c2 Mon Sep 17 00:00:00 2001 From: Sergey Shlyapnikov Date: Fri, 15 Oct 2021 09:31:49 +0300 Subject: [PATCH] [GPU] Add additional handling of fused activations for OneDNN primitives (#8004) --- .../clDNN/src/impls/onednn/primitive_onednn_base.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/inference-engine/thirdparty/clDNN/src/impls/onednn/primitive_onednn_base.h b/inference-engine/thirdparty/clDNN/src/impls/onednn/primitive_onednn_base.h index 2f4b40c6e49..f4700ac57db 100644 --- a/inference-engine/thirdparty/clDNN/src/impls/onednn/primitive_onednn_base.h +++ b/inference-engine/thirdparty/clDNN/src/impls/onednn/primitive_onednn_base.h @@ -783,6 +783,17 @@ protected: } } + if (cldnn_post_ops.size() && arg.get_fused_activations_funcs().size()) + throw std::runtime_error("Unsupported mix of fused ops and activations"); + + for (size_t i = 0; i < arg.get_fused_activations_funcs().size(); i++) { + auto activation_type = arg.get_fused_activations_funcs()[i]; + auto params = arg.get_fused_activations_params()[i]; + dnnl::algorithm alg = onednn::convert_activation_func(activation_type); + post_ops.append_eltwise(1.0f, alg, params.a, params.b); + update_onednn_post_op_list(onednn_post_op_type::eltwise_act, empty_mem); + } + // Update total onednn post-ops info onednn_fusing_map.emplace(arg.id(), std::move(fused_ops));