[IE CLDNN] Fix eltwise activation types mismatch (#2090)
authorVladimir Paramuzov <vladimir.paramuzov@intel.com>
Wed, 9 Sep 2020 06:57:38 +0000 (09:57 +0300)
committerGitHub <noreply@github.com>
Wed, 9 Sep 2020 06:57:38 +0000 (09:57 +0300)
inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/generic_eltwise_ref.cl
inference-engine/thirdparty/clDNN/tests/test_cases/fusings_gpu_test.cpp

index b998783..99d8a2e 100644 (file)
@@ -120,9 +120,9 @@ KERNEL(eltwise)(
     FUSED_OPS;
     OUTPUT_TYPE out = FUSED_OPS_RESULT;
 #elif QUANTIZATION_TERM && !OUTPUT_IS_FP
-    OUTPUT_TYPE out = ACTIVATION(TO_OUTPUT_TYPE(res), ACTIVATION_PARAMS);
+    OUTPUT_TYPE out = TO_OUTPUT_TYPE(ACTIVATION(res, ACTIVATION_PARAMS));
 #else
-    OUTPUT_TYPE out = ACTIVATION_TYPED(TO_OUTPUT_TYPE(res), ACTIVATION_PARAMS_TYPED);
+    OUTPUT_TYPE out = TO_OUTPUT_TYPE(ACTIVATION_TYPED(res, ACTIVATION_PARAMS_TYPED));
 #endif
 
 #if QUANTIZATION_TERM && !OUTPUT_IS_FP
index 0a0d949..9a10f31 100644 (file)
@@ -5377,7 +5377,7 @@ INSTANTIATE_TEST_CASE_P(fusings_gpu, scatter_update_quantize,
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_FP16_4, 2, 3 },
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_FP16_5, 2, 3 },
 
-                        
+
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_5D_FP32_1, 2, 3 },
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_5D_FP32_2, 2, 3 },
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_5D_FP32_3, 2, 3 },
@@ -5421,7 +5421,7 @@ INSTANTIATE_TEST_CASE_P(fusings_gpu, scatter_update_scale_activation,
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_FP16_4, 2, 4 },
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_FP16_5, 2, 4 },
 
-                        
+
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_5D_FP32_1, 2, 4 },
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_5D_FP32_2, 2, 4 },
                         scatter_update_test_params{ CASE_SCATTER_UPDATE_5D_FP32_3, 2, 4 },
@@ -6253,6 +6253,48 @@ INSTANTIATE_TEST_CASE_P(fusings_gpu,
                             eltwise_test_params{CASE_ELTWISE_U8_FP16_3},
                         }), );
 
+class eltwise_activation : public EltwiseFusingTest {};
+TEST_P(eltwise_activation, basic) {
+    auto p = GetParam();
+    create_topologies(input_layout("input", get_input_layout(p)),
+                      input_layout("input2", get_input_layout2(p)),
+                      eltwise("eltwise", {"input", "input2"}, p.mode, p.default_type),
+                      activation("activation", "eltwise", activation_func::relu, {6.0f, 0.0f}),
+                      reorder("out", "activation", p.default_format, data_types::f32));
+
+    tolerance = 1e-5f;
+    execute(p);
+}
+
+TEST_P(eltwise_activation, fp16_out) {
+    auto p = GetParam();
+    create_topologies(input_layout("input", get_input_layout(p)),
+                      input_layout("input2", get_input_layout2(p)),
+                      eltwise("eltwise", {"input", "input2"}, p.mode, data_types::f16),
+                      activation("activation", "eltwise", activation_func::relu, {6.0f, 0.0f}),
+                      reorder("out", "activation", p.default_format, data_types::f32));
+
+    tolerance = 1e-5f;
+    execute(p);
+}
+
+INSTANTIATE_TEST_CASE_P(fusings_gpu,
+                        eltwise_activation,
+                        ::testing::ValuesIn(std::vector<eltwise_test_params>{
+                            eltwise_test_params{CASE_ELTWISE_FP16_1},
+                            eltwise_test_params{CASE_ELTWISE_FP16_2},
+                            eltwise_test_params{CASE_ELTWISE_FP16_3},
+                            eltwise_test_params{CASE_ELTWISE_FP32_1},
+                            eltwise_test_params{CASE_ELTWISE_FP32_2},
+                            eltwise_test_params{CASE_ELTWISE_FP32_3},
+                            eltwise_test_params{CASE_ELTWISE_FP32_FP16_1},
+                            eltwise_test_params{CASE_ELTWISE_FP32_FP16_2},
+                            eltwise_test_params{CASE_ELTWISE_FP32_FP16_3},
+                            eltwise_test_params{CASE_ELTWISE_FP16_FP32_1},
+                            eltwise_test_params{CASE_ELTWISE_FP16_FP32_2},
+                            eltwise_test_params{CASE_ELTWISE_FP16_FP32_3}
+                        }), );
+
 /* ----------------------------------------------------------------------------------------------------- */
 /* ---------------------------------------- Reduce cases ----------------------------------------------- */
 /* ----------------------------------------------------------------------------------------------------- */