From cbb90454ed22f075ab3563df95d0647a1fd79d52 Mon Sep 17 00:00:00 2001 From: "Efode, Irina" Date: Fri, 18 Sep 2020 13:46:45 +0300 Subject: [PATCH 1/6] ReverseSeq --- ngraph/test/runtime/interpreter/evaluates_map.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index 536b095c2dedf4..f622fb80f89c80 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -591,7 +591,7 @@ namespace outputs[0]->get_data_ptr(), \ input[0]->get_shape(), \ op->get_batch_axis(), \ - op->get_origin_sequence_axis(), \ + op->get_sequence_axis(), \ input[1]->get_data_ptr()); \ break; From 67900dcba153e1c602250cff0a76da18524b0bec Mon Sep 17 00:00:00 2001 From: "Efode, Irina" Date: Fri, 18 Sep 2020 17:33:01 +0300 Subject: [PATCH 2/6] Select --- .../runtime/reference/autobroadcast_binop.hpp | 25 +++++++++++-------- .../ngraph/runtime/reference/select.hpp | 4 ++- .../runtime/interpreter/evaluates_map.cpp | 10 ++++++++ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp index 70410784226478..2858ad26fc799a 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp @@ -388,19 +388,24 @@ namespace ngraph Shape arg1_padded_shape = arg1_shape; Shape arg2_padded_shape = arg2_shape; - while (arg1_padded_shape.size() < arg2_padded_shape.size()) + size_t max_shape_size = std::max({ + arg0_padded_shape.size(), + arg1_padded_shape.size(), + arg2_padded_shape.size()}); + + while (arg0_padded_shape.size() < max_shape_size) { - arg1_padded_shape.insert(arg1_padded_shape.begin(), 1); + arg0_padded_shape.insert(arg0_padded_shape.begin(), 1); } - while (arg2_padded_shape.size() < arg1_padded_shape.size()) + while (arg1_padded_shape.size() < max_shape_size) { - arg2_padded_shape.insert(arg2_padded_shape.begin(), 1); + arg1_padded_shape.insert(arg1_padded_shape.begin(), 1); } - while (arg0_padded_shape.size() < arg1_padded_shape.size()) + while (arg2_padded_shape.size() < max_shape_size) { - arg0_padded_shape.insert(arg0_padded_shape.begin(), 1); + arg2_padded_shape.insert(arg2_padded_shape.begin(), 1); } Shape arg0_squeezed_shape; @@ -411,7 +416,7 @@ namespace ngraph AxisSet arg2_squeezed_axes; Shape output_shape; - for (size_t i = 0; i < arg1_padded_shape.size(); i++) + for (size_t i = 0; i < max_shape_size; i++) { if (arg1_padded_shape[i] == 1) { @@ -440,9 +445,9 @@ namespace ngraph arg0_squeezed_shape.push_back(arg0_padded_shape[i]); } - output_shape.push_back(arg1_padded_shape[i] == 1 - ? arg2_padded_shape[i] - : arg1_padded_shape[i]); + output_shape.push_back(arg0_padded_shape[i] == 1 + ? std::max(arg2_padded_shape[i], arg1_padded_shape[i]) + : arg0_padded_shape[i]); } CoordinateTransform arg0_transform(arg0_squeezed_shape); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp index 9803d24164fb30..79c78479373d8d 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp @@ -62,7 +62,9 @@ namespace ngraph arg1_shape, arg2_shape, broadcast_spec, - [](char s, T x, T y) -> T { return static_cast(s ? x : y); }); + [](char s, T x, T y) -> T { + return static_cast(s ? x : y); + }); } } } diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index f622fb80f89c80..0c49cffecd6136 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -399,6 +399,14 @@ namespace const HostTensorVector& input) { using T = typename element_type_traits::value_type; + + auto c1 = std::make_shared(input[0]); + auto v1 = c1->cast_vector(); + auto c2 = std::make_shared(input[1]); + auto v2 = c2->cast_vector(); + auto c3 = std::make_shared(input[2]); + auto v3 = c3->cast_vector(); + runtime::reference::select(input[0]->get_data_ptr(), input[1]->get_data_ptr(), input[2]->get_data_ptr(), @@ -407,6 +415,8 @@ namespace op->get_input_shape(1), op->get_input_shape(2), op->get_auto_broadcast()); + auto c4 = std::make_shared(outputs[0]); + auto v4 = c4->cast_vector(); return true; } From 70721e8dd7393c5253f36c2acebd33be2ac0d92b Mon Sep 17 00:00:00 2001 From: "Efode, Irina" Date: Fri, 18 Sep 2020 18:17:26 +0300 Subject: [PATCH 3/6] ExtractImagePatches, Seqence --- .../runtime/reference/autobroadcast_binop.hpp | 4 +- .../reference/extract_image_patches.hpp | 13 +-- .../runtime/interpreter/evaluates_map.cpp | 102 ++++++++++++++++++ .../runtime/interpreter/opset_int_tbl.hpp | 4 + 4 files changed, 114 insertions(+), 9 deletions(-) diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp index 2858ad26fc799a..bd204c62ac7902 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp @@ -445,9 +445,7 @@ namespace ngraph arg0_squeezed_shape.push_back(arg0_padded_shape[i]); } - output_shape.push_back(arg0_padded_shape[i] == 1 - ? std::max(arg2_padded_shape[i], arg1_padded_shape[i]) - : arg0_padded_shape[i]); + output_shape.push_back(std::max({arg0_padded_shape[i], arg2_padded_shape[i], arg1_padded_shape[i]})); } CoordinateTransform arg0_transform(arg0_squeezed_shape); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp index 4e16e1c0f75ebf..b78780a3a1b5f7 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/extract_image_patches.hpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // +#include #include "ngraph/shape_util.hpp" namespace ngraph @@ -10,12 +11,12 @@ namespace ngraph { namespace reference { - template - void extractImagePatches(const op::ExtractImagePatches* extImgPatches, - const T* input, - T* out, - const Shape& inShape, - const Shape& outShape) + template + void extract_image_patches(const std::shared_ptr extImgPatches, + const T* input, + T* out, + const Shape& inShape, + const Shape& outShape) { const size_t dimsSize = inShape.size(); const size_t BATCH = 0, CHANNEL = 1, HIGHT = 0, WIDTH = 1; diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index 0c49cffecd6136..6ee867a48671ee 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include "ngraph/ops.hpp" #include "ngraph/runtime/reference/avg_pool.hpp" #include "ngraph/runtime/reference/batch_norm.hpp" @@ -625,6 +627,21 @@ namespace return true; } + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& input) + { + using T = typename element_type_traits::value_type; + runtime::reference::extract_image_patches( + op, + input[0]->get_data_ptr(), + outputs[0]->get_data_ptr(), + input[0]->get_shape(), + outputs[0]->get_shape()); + return true; + } + template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs, @@ -798,6 +815,63 @@ namespace return true; } + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + using T = typename element_type_traits::value_type; + runtime::reference::rnn_sequence(inputs[0]->get_data_ptr(), + inputs[0]->get_shape(), + inputs[1]->get_data_ptr(), + inputs[1]->get_shape(), + inputs[2]->get_data_ptr(), + inputs[2]->get_shape(), + inputs[3]->get_data_ptr(), + inputs[3]->get_shape(), + inputs[4]->get_data_ptr(), + inputs[4]->get_shape(), + inputs[5]->get_data_ptr(), + inputs[5]->get_shape(), + outputs[0]->get_data_ptr(), + outputs[1]->get_data_ptr(), + op->get_activations()[0], + op->get_clip(), + op->get_direction()); + return true; + } + + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + using T = typename element_type_traits::value_type; + runtime::reference::lstm_sequence(inputs[0]->get_data_ptr(), + inputs[0]->get_shape(), + inputs[1]->get_data_ptr(), + inputs[1]->get_shape(), + inputs[2]->get_data_ptr(), + inputs[2]->get_shape(), + inputs[3]->get_data_ptr(), + inputs[3]->get_shape(), + inputs[4]->get_data_ptr(), + inputs[4]->get_shape(), + inputs[5]->get_data_ptr(), + inputs[5]->get_shape(), + inputs[6]->get_data_ptr(), + inputs[6]->get_shape(), + outputs[0]->get_data_ptr(), + outputs[1]->get_data_ptr(), + outputs[3]->get_data_ptr(), + op->get_activations()[0], + op->get_activations()[1], + op->get_activations()[2], + op->get_clip(), + op->get_direction()); + return true; + } + template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs, @@ -816,6 +890,34 @@ namespace return true; } + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + using T = typename element_type_traits::value_type; + runtime::reference::gru_sequence(inputs[0]->get_data_ptr(), + inputs[0]->get_shape(), + inputs[1]->get_data_ptr(), + inputs[1]->get_shape(), + inputs[2]->get_data_ptr(), + inputs[2]->get_shape(), + inputs[3]->get_data_ptr(), + inputs[3]->get_shape(), + inputs[4]->get_data_ptr(), + inputs[4]->get_shape(), + inputs[5]->get_data_ptr(), + inputs[5]->get_shape(), + outputs[0]->get_data_ptr(), + outputs[1]->get_data_ptr(), + op->get_activations()[0], + op->get_activations()[1], + op->get_clip(), + op->get_direction(), + op->get_linear_before_reset()); + return true; + } + template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs, diff --git a/ngraph/test/runtime/interpreter/opset_int_tbl.hpp b/ngraph/test/runtime/interpreter/opset_int_tbl.hpp index 885ca53298bc61..8d4748caa4b3d1 100644 --- a/ngraph/test/runtime/interpreter/opset_int_tbl.hpp +++ b/ngraph/test/runtime/interpreter/opset_int_tbl.hpp @@ -62,3 +62,7 @@ NGRAPH_OP(ShapeOf, op::v3) NGRAPH_OP(CTCLoss, op::v4) NGRAPH_OP(LSTMCell, op::v4) + +NGRAPH_OP(GRUSequence, op::v5) +NGRAPH_OP(LSTMSequence, op::v5) +NGRAPH_OP(RNNSequence, op::v5) From 1293fac08af19853f68dea412bea4cbb85fdabb2 Mon Sep 17 00:00:00 2001 From: "Efode, Irina" Date: Fri, 18 Sep 2020 18:19:10 +0300 Subject: [PATCH 4/6] Fix Code Style --- .../runtime/reference/autobroadcast_binop.hpp | 11 ++++++----- .../include/ngraph/runtime/reference/select.hpp | 4 +--- ngraph/test/runtime/interpreter/evaluates_map.cpp | 15 +++++++-------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp index bd204c62ac7902..345555b6a8426b 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/autobroadcast_binop.hpp @@ -388,10 +388,9 @@ namespace ngraph Shape arg1_padded_shape = arg1_shape; Shape arg2_padded_shape = arg2_shape; - size_t max_shape_size = std::max({ - arg0_padded_shape.size(), - arg1_padded_shape.size(), - arg2_padded_shape.size()}); + size_t max_shape_size = std::max({arg0_padded_shape.size(), + arg1_padded_shape.size(), + arg2_padded_shape.size()}); while (arg0_padded_shape.size() < max_shape_size) { @@ -445,7 +444,9 @@ namespace ngraph arg0_squeezed_shape.push_back(arg0_padded_shape[i]); } - output_shape.push_back(std::max({arg0_padded_shape[i], arg2_padded_shape[i], arg1_padded_shape[i]})); + output_shape.push_back(std::max({arg0_padded_shape[i], + arg2_padded_shape[i], + arg1_padded_shape[i]})); } CoordinateTransform arg0_transform(arg0_squeezed_shape); diff --git a/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp b/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp index 79c78479373d8d..9803d24164fb30 100644 --- a/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp +++ b/ngraph/core/reference/include/ngraph/runtime/reference/select.hpp @@ -62,9 +62,7 @@ namespace ngraph arg1_shape, arg2_shape, broadcast_spec, - [](char s, T x, T y) -> T { - return static_cast(s ? x : y); - }); + [](char s, T x, T y) -> T { return static_cast(s ? x : y); }); } } } diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index 6ee867a48671ee..dd1b004031c5b7 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -33,7 +34,6 @@ #include #include #include -#include #include #include "ngraph/ops.hpp" #include "ngraph/runtime/reference/avg_pool.hpp" @@ -603,7 +603,7 @@ namespace outputs[0]->get_data_ptr(), \ input[0]->get_shape(), \ op->get_batch_axis(), \ - op->get_sequence_axis(), \ + op->get_sequence_axis(), \ input[1]->get_data_ptr()); \ break; @@ -633,12 +633,11 @@ namespace const HostTensorVector& input) { using T = typename element_type_traits::value_type; - runtime::reference::extract_image_patches( - op, - input[0]->get_data_ptr(), - outputs[0]->get_data_ptr(), - input[0]->get_shape(), - outputs[0]->get_shape()); + runtime::reference::extract_image_patches(op, + input[0]->get_data_ptr(), + outputs[0]->get_data_ptr(), + input[0]->get_shape(), + outputs[0]->get_shape()); return true; } From 762c0e9ab8a449dd9b15d8f198c3319eb2bcfbaa Mon Sep 17 00:00:00 2001 From: "Efode, Irina" Date: Fri, 18 Sep 2020 18:20:41 +0300 Subject: [PATCH 5/6] remove extra --- ngraph/test/runtime/interpreter/evaluates_map.cpp | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index dd1b004031c5b7..65e9b9481d81b7 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -402,13 +402,6 @@ namespace { using T = typename element_type_traits::value_type; - auto c1 = std::make_shared(input[0]); - auto v1 = c1->cast_vector(); - auto c2 = std::make_shared(input[1]); - auto v2 = c2->cast_vector(); - auto c3 = std::make_shared(input[2]); - auto v3 = c3->cast_vector(); - runtime::reference::select(input[0]->get_data_ptr(), input[1]->get_data_ptr(), input[2]->get_data_ptr(), @@ -417,8 +410,6 @@ namespace op->get_input_shape(1), op->get_input_shape(2), op->get_auto_broadcast()); - auto c4 = std::make_shared(outputs[0]); - auto v4 = c4->cast_vector(); return true; } @@ -862,7 +853,7 @@ namespace inputs[6]->get_shape(), outputs[0]->get_data_ptr(), outputs[1]->get_data_ptr(), - outputs[3]->get_data_ptr(), + outputs[2]->get_data_ptr(), op->get_activations()[0], op->get_activations()[1], op->get_activations()[2], From 53eac648fa139a7f83cff32b84b0fa99773fbf85 Mon Sep 17 00:00:00 2001 From: "Efode, Irina" Date: Tue, 22 Sep 2020 13:48:46 +0300 Subject: [PATCH 6/6] Remove etra line@ --- ngraph/core/src/op/add.cpp | 2 -- .../runtime/interpreter/evaluates_map.cpp | 36 +++++++++---------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/ngraph/core/src/op/add.cpp b/ngraph/core/src/op/add.cpp index 3bdeea67b8137c..a41cafbb79d8cb 100644 --- a/ngraph/core/src/op/add.cpp +++ b/ngraph/core/src/op/add.cpp @@ -19,8 +19,6 @@ #include "ngraph/runtime/host_tensor.hpp" #include "ngraph/runtime/reference/add.hpp" -NGRAPH_SUPPRESS_DEPRECATED_START - using namespace std; using namespace ngraph; diff --git a/ngraph/test/runtime/interpreter/evaluates_map.cpp b/ngraph/test/runtime/interpreter/evaluates_map.cpp index 65e9b9481d81b7..4b5b307ee87de6 100644 --- a/ngraph/test/runtime/interpreter/evaluates_map.cpp +++ b/ngraph/test/runtime/interpreter/evaluates_map.cpp @@ -862,24 +862,6 @@ namespace return true; } - template - bool evaluate(const shared_ptr& op, - const HostTensorVector& outputs, - const HostTensorVector& inputs) - { - using T = typename element_type_traits::value_type; - runtime::reference::pad(inputs[0]->get_data_ptr(), - inputs[1]->get_data_ptr(), - outputs[0]->get_data_ptr(), - shape_size(inputs[0]->get_shape()), - inputs[1]->get_shape(), - outputs[0]->get_shape(), - op->get_pads_end(), - op->get_pads_begin(), - op->get_pad_mode()); - return true; - } - template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs, @@ -908,6 +890,24 @@ namespace return true; } + template + bool evaluate(const shared_ptr& op, + const HostTensorVector& outputs, + const HostTensorVector& inputs) + { + using T = typename element_type_traits::value_type; + runtime::reference::pad(inputs[0]->get_data_ptr(), + inputs[1]->get_data_ptr(), + outputs[0]->get_data_ptr(), + shape_size(inputs[0]->get_shape()), + inputs[1]->get_shape(), + outputs[0]->get_shape(), + op->get_pads_end(), + op->get_pads_begin(), + op->get_pad_mode()); + return true; + } + template bool evaluate(const shared_ptr& op, const HostTensorVector& outputs,