[core] Migrate SpaceToDepth operator to new API (#20530)

* Drop HostTensor and move to ov namespace

* Drop HostTensor

---------

Co-authored-by: Michal Lukaszewski <michal.lukaszewski@intel.com>
This commit is contained in:
Tomasz Jankowski 2023-10-26 08:35:38 +02:00 committed by GitHub
parent b9c64370fb
commit 301ea0beb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 50 deletions

View File

@ -55,9 +55,7 @@ public:
void validate_and_infer_types() override;
std::shared_ptr<Node> clone_with_new_inputs(const OutputVector& new_args) const override;
OPENVINO_SUPPRESS_DEPRECATED_START
bool evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const override;
OPENVINO_SUPPRESS_DEPRECATED_END
bool evaluate(TensorVector& outputs, const TensorVector& inputs) const override;
bool has_evaluate() const override;
protected:

View File

@ -2,40 +2,40 @@
// SPDX-License-Identifier: Apache-2.0
//
#include "ngraph/op/space_to_depth.hpp"
#include "openvino/op/space_to_depth.hpp"
#include <cmath>
#include <cstddef>
#include <memory>
#include <numeric>
#include <space_to_depth_shape_inference.hpp>
#include "itt.hpp"
#include "ngraph/attribute_visitor.hpp"
#include "ngraph/builder/reshape.hpp"
#include "ngraph/shape.hpp"
#include "openvino/core/attribute_visitor.hpp"
#include "openvino/core/shape.hpp"
#include "openvino/reference/space_to_depth.hpp"
#include "space_to_depth_shape_inference.hpp"
using namespace ngraph;
ov::op::v0::SpaceToDepth::SpaceToDepth(const Output<Node>& data, const SpaceToDepthMode& mode, size_t block_size)
namespace ov {
namespace op {
namespace v0 {
SpaceToDepth::SpaceToDepth(const Output<Node>& data, const SpaceToDepthMode& mode, size_t block_size)
: Op({data}),
m_blocksize(block_size),
m_mode(mode) {
constructor_validate_and_infer_types();
}
ov::op::v0::SpaceToDepth::SpaceToDepth(const Output<Node>& data, const std::string& mode, size_t block_size)
SpaceToDepth::SpaceToDepth(const Output<Node>& data, const std::string& mode, size_t block_size)
: SpaceToDepth(data, as_enum<SpaceToDepthMode>(mode), block_size) {}
bool ngraph::op::v0::SpaceToDepth::visit_attributes(AttributeVisitor& visitor) {
bool SpaceToDepth::visit_attributes(AttributeVisitor& visitor) {
OV_OP_SCOPE(v0_SpaceToDepth_visit_attributes);
visitor.on_attribute("block_size", m_blocksize);
visitor.on_attribute("mode", m_mode);
return true;
}
std::shared_ptr<Node> ov::op::v0::SpaceToDepth::clone_with_new_inputs(const OutputVector& new_args) const {
std::shared_ptr<Node> SpaceToDepth::clone_with_new_inputs(const OutputVector& new_args) const {
OV_OP_SCOPE(v0_SpaceToDepth_clone_with_new_inputs);
if (new_args.size() != 1) {
OPENVINO_THROW("Incorrect number of new arguments");
@ -43,7 +43,7 @@ std::shared_ptr<Node> ov::op::v0::SpaceToDepth::clone_with_new_inputs(const Outp
return std::make_shared<SpaceToDepth>(new_args.at(0), m_mode, m_blocksize);
}
void ngraph::op::v0::SpaceToDepth::validate_and_infer_types() {
void SpaceToDepth::validate_and_infer_types() {
OV_OP_SCOPE(v0_SpaceToDepth_validate_and_infer_types);
OPENVINO_SUPPRESS_DEPRECATED_START
@ -52,61 +52,48 @@ void ngraph::op::v0::SpaceToDepth::validate_and_infer_types() {
set_output_type(0, get_input_element_type(0), output_shape);
}
OPENVINO_SUPPRESS_DEPRECATED_START
namespace {
bool evaluate_space_to_depth(const HostTensorVector& outputs,
const HostTensorVector& inputs,
const std::size_t block_size,
const ov::op::v0::SpaceToDepth::SpaceToDepthMode mode) {
bool SpaceToDepth::evaluate(TensorVector& outputs, const TensorVector& inputs) const {
OV_OP_SCOPE(v0_SpaceToDepth_evaluate);
OPENVINO_ASSERT(outputs.size() == 1);
const auto& in = inputs[0];
const auto& out = outputs[0];
size_t elem_size = in->get_element_type().size();
if (in->get_partial_shape().is_dynamic()) {
return false;
}
ov::reference::space_to_depth(in->get_data_ptr<char>(),
in->get_shape(),
out->get_data_ptr<char>(),
out->get_shape(),
block_size,
mode,
elem_size);
reference::space_to_depth(static_cast<const char*>(in.data()),
in.get_shape(),
static_cast<char*>(out.data()),
out.get_shape(),
m_blocksize,
m_mode,
in.get_element_type().size());
return true;
}
} // namespace
bool ngraph::op::v0::SpaceToDepth::evaluate(const HostTensorVector& outputs, const HostTensorVector& inputs) const {
OV_OP_SCOPE(v0_SpaceToDepth_evaluate);
return evaluate_space_to_depth(outputs, inputs, m_blocksize, m_mode);
}
bool ngraph::op::v0::SpaceToDepth::has_evaluate() const {
bool SpaceToDepth::has_evaluate() const {
OV_OP_SCOPE(v0_SpaceToDepth_has_evaluate);
return !get_input_partial_shape(0).is_dynamic();
}
void op::v0::SpaceToDepth::set_block_size(size_t block_size) {
void SpaceToDepth::set_block_size(size_t block_size) {
m_blocksize = block_size;
}
void op::v0::SpaceToDepth::set_mode(SpaceToDepthMode mode) {
void SpaceToDepth::set_mode(SpaceToDepthMode mode) {
m_mode = mode;
}
} // namespace v0
} // namespace op
std::ostream& ov::operator<<(std::ostream& s, const op::v0::SpaceToDepth::SpaceToDepthMode& type) {
std::ostream& operator<<(std::ostream& s, const op::v0::SpaceToDepth::SpaceToDepthMode& type) {
return s << as_string(type);
}
namespace ov {
template <>
NGRAPH_API EnumNames<ngraph::op::v0::SpaceToDepth::SpaceToDepthMode>&
EnumNames<ngraph::op::v0::SpaceToDepth::SpaceToDepthMode>::get() {
static auto enum_names = EnumNames<ngraph::op::v0::SpaceToDepth::SpaceToDepthMode>(
OPENVINO_API EnumNames<op::v0::SpaceToDepth::SpaceToDepthMode>&
EnumNames<op::v0::SpaceToDepth::SpaceToDepthMode>::get() {
static auto enum_names = EnumNames<op::v0::SpaceToDepth::SpaceToDepthMode>(
"op::v0::SpaceToDepth::SpaceToDepthMode",
{{"blocks_first", ngraph::op::v0::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST},
{"depth_first", ngraph::op::v0::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST}});
{{"blocks_first", op::v0::SpaceToDepth::SpaceToDepthMode::BLOCKS_FIRST},
{"depth_first", op::v0::SpaceToDepth::SpaceToDepthMode::DEPTH_FIRST}});
return enum_names;
}
} // namespace ov