[Transformations] Nop-eliminate 1D Reshape node (#16083)

* Nop-eliminate 1D Reshape node

* Don't eliminate checking Reshape node
This commit is contained in:
Tomasz Jankowski 2023-03-15 11:43:46 +01:00 committed by GitHub
parent fdc2664b24
commit 0f9583c3cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 0 deletions

View File

@ -90,6 +90,12 @@ static bool eliminate_nop(const shared_ptr<Node>& node) {
static bool eliminate_reshape_v1(const shared_ptr<Node>& node) {
auto input = node->input_value(0);
if (input.get_partial_shape().rank().is_static() && input.get_partial_shape().rank().same_scheme(1)) {
if (input.get_partial_shape().same_scheme(node->get_output_partial_shape(0)))
return replace_output_update_name(node->output(0), input);
}
// check if reshape is not identity op
if (input.get_partial_shape().is_dynamic() || node->get_output_partial_shape(0).is_dynamic()) {
NGRAPH_DEBUG << node << " has dynamic shapes.";

View File

@ -120,6 +120,30 @@ TEST(nop_elimination, reshape_elimination_v1) {
ASSERT_TRUE(count_ops_of_type<op::v1::Reshape>(func_zero) == 1);
}
TEST(nop_elimination, reshape_v1_1D) {
auto make_model = [](int64_t input_dim, int64_t requested_dim) {
const auto input = make_shared<op::Parameter>(element::i64, PartialShape{{input_dim}});
const auto abs = make_shared<op::v0::Abs>(input);
const auto req_shape = op::Constant::create(element::i64, Shape{1}, {requested_dim});
const auto reshape = make_shared<op::v1::Reshape>(abs, req_shape, false);
return make_shared<ov::Model>(NodeVector{reshape}, ParameterVector{input});
};
// clang-format off
vector<shared_ptr<ov::Model>> models{
make_model( 7, 7),
make_model( 7, -1),
make_model(-1, -1),
};
// clang-format on
pass::Manager pass_manager;
pass_manager.register_pass<ov::pass::NopElimination>();
for (auto&& m : models) {
pass_manager.run_passes(m);
ASSERT_EQ(count_ops_of_type<op::v1::Reshape>(m), 0);
}
}
TEST(nop_elimination, squeeze_reshape_elimination_check_info) {
std::shared_ptr<Function> f;
{