[FrontEnds]: Fix build issue on Win platforms (#9274)

* include place.hpp into input_model.hpp

* resolve issues in api validator

* set full namespaces for Place::Ptr in input_model
This commit is contained in:
Ivan Tikhonov
2021-12-17 13:37:16 +03:00
committed by GitHub
parent c047da07c0
commit 59fca61dd5
3 changed files with 51 additions and 33 deletions

View File

@@ -79,8 +79,20 @@ function(_ie_add_api_validator_post_build_step)
_ie_add_api_validator_post_build_step_recursive(TARGET ${API_VALIDATOR_TARGET})
# remove targets which were tested before
foreach(item IN LISTS VALIDATED_LIBRARIES)
foreach(target IN LISTS API_VALIDATOR_TARGETS)
list(FIND VALIDATED_LIBRARIES ${target} index)
if (NOT index EQUAL -1)
list(APPEND VALIDATED_TARGETS ${target})
endif()
if(TARGET "${target}")
get_target_property(orig_target ${target} ALIASED_TARGET)
list(FIND VALIDATED_LIBRARIES ${orig_target} index)
if (NOT index EQUAL -1)
list(APPEND VALIDATED_TARGETS ${target})
endif()
endif()
endforeach()
foreach(item IN LISTS VALIDATED_TARGETS)
list(REMOVE_ITEM API_VALIDATOR_TARGETS ${item})
endforeach()

View File

@@ -39,7 +39,7 @@ InputModel::InputModel(std::istream& model_stream,
std::vector<ov::frontend::Place::Ptr> InputModel::get_inputs() const {
const auto& inputs = m_editor->model_inputs();
std::vector<Place::Ptr> in_places;
std::vector<ov::frontend::Place::Ptr> in_places;
in_places.reserve(inputs.size());
for (const auto& input : inputs) {
in_places.push_back(std::make_shared<PlaceTensor>(input, m_editor));
@@ -49,7 +49,7 @@ std::vector<ov::frontend::Place::Ptr> InputModel::get_inputs() const {
std::vector<ov::frontend::Place::Ptr> InputModel::get_outputs() const {
const auto& outputs = m_editor->model_outputs();
std::vector<Place::Ptr> out_places;
std::vector<ov::frontend::Place::Ptr> out_places;
out_places.reserve(outputs.size());
for (const auto& output : outputs) {
out_places.push_back(std::make_shared<PlaceTensor>(output, m_editor));
@@ -90,13 +90,13 @@ ov::frontend::Place::Ptr InputModel::get_place_by_operation_name_and_output_port
return nullptr;
}
void InputModel::set_name_for_tensor(Place::Ptr tensor, const std::string& new_name) {
void InputModel::set_name_for_tensor(ov::frontend::Place::Ptr tensor, const std::string& new_name) {
const auto onnx_tensor = std::dynamic_pointer_cast<PlaceTensor>(tensor);
FRONT_END_GENERAL_CHECK(onnx_tensor, __FUNCTION__, " expects a pointer to place of ONNX tensor type.");
onnx_tensor->set_name(new_name);
}
void InputModel::set_name_for_operation(Place::Ptr operation, const std::string& new_name) {
void InputModel::set_name_for_operation(ov::frontend::Place::Ptr operation, const std::string& new_name) {
const auto onnx_operation = std::dynamic_pointer_cast<PlaceOp>(operation);
FRONT_END_GENERAL_CHECK(onnx_operation, __FUNCTION__, " expects a pointer to place of ONNX operation type.");
onnx_operation->set_name(new_name);
@@ -106,13 +106,15 @@ void InputModel::free_name_for_operation(const std::string& name) {
m_editor->clear_nodes_name(name);
}
void InputModel::set_name_for_dimension(Place::Ptr tensor, size_t shape_dim_index, const std::string& dim_name) {
void InputModel::set_name_for_dimension(ov::frontend::Place::Ptr tensor,
size_t shape_dim_index,
const std::string& dim_name) {
const auto onnx_tensor = std::dynamic_pointer_cast<PlaceTensor>(tensor);
FRONT_END_GENERAL_CHECK(onnx_tensor, __FUNCTION__, " expects a pointer to place of ONNX tensor type.");
onnx_tensor->set_name_for_dimension(shape_dim_index, dim_name);
}
void InputModel::add_name_for_tensor(Place::Ptr, const std::string&) {
void InputModel::add_name_for_tensor(ov::frontend::Place::Ptr, const std::string&) {
FRONT_END_THROW("Method add_name_for_tensor is not applicable for ONNX model. ONNX tensor has just one name.");
}
@@ -120,17 +122,17 @@ void InputModel::free_name_for_tensor(const std::string&) {
FRONT_END_THROW("Method free_name_for_tensor is not applicable for ONNX model. ONNX tensor name is an identifier.");
}
void InputModel::set_partial_shape(Place::Ptr place, const ngraph::PartialShape& shape) {
void InputModel::set_partial_shape(ov::frontend::Place::Ptr place, const ngraph::PartialShape& shape) {
std::map<std::string, ngraph::PartialShape> m;
m[place->get_names()[0]] = shape;
m_editor->set_input_shapes(m);
}
ngraph::PartialShape InputModel::get_partial_shape(Place::Ptr place) const {
ngraph::PartialShape InputModel::get_partial_shape(ov::frontend::Place::Ptr place) const {
return m_editor->get_tensor_shape(place->get_names().at(0));
}
void InputModel::set_element_type(Place::Ptr place, const ngraph::element::Type& type) {
void InputModel::set_element_type(ov::frontend::Place::Ptr place, const ngraph::element::Type& type) {
std::map<std::string, ngraph::element::Type_t> m;
m[place->get_names()[0]] = type;
m_editor->set_input_types(m);
@@ -145,19 +147,19 @@ std::shared_ptr<Model> InputModel::convert() {
}
// Editor features
void InputModel::override_all_outputs(const std::vector<Place::Ptr>& outputs) {
void InputModel::override_all_outputs(const std::vector<ov::frontend::Place::Ptr>& outputs) {
extract_subgraph({}, outputs);
NGRAPH_CHECK(m_editor->model_outputs().size() == outputs.size(),
"Unexpected number of outputs after override_all_outputs");
NGRAPH_CHECK(std::all_of(std::begin(outputs),
std::end(outputs),
[](const Place::Ptr& place) {
[](const ov::frontend::Place::Ptr& place) {
return place->is_output();
}),
"Not all provided arguments of override_all_outputs are new outputs of the model");
}
void InputModel::override_all_inputs(const std::vector<Place::Ptr>& inputs) {
void InputModel::override_all_inputs(const std::vector<ov::frontend::Place::Ptr>& inputs) {
const auto outputs_before_extraction = m_editor->model_outputs();
extract_subgraph({inputs}, {});
NGRAPH_CHECK(std::equal(std::begin(outputs_before_extraction),
@@ -169,7 +171,8 @@ void InputModel::override_all_inputs(const std::vector<Place::Ptr>& inputs) {
"Unexpected number of inputs after override_all_inputs");
}
void InputModel::extract_subgraph(const std::vector<Place::Ptr>& inputs, const std::vector<Place::Ptr>& outputs) {
void InputModel::extract_subgraph(const std::vector<ov::frontend::Place::Ptr>& inputs,
const std::vector<ov::frontend::Place::Ptr>& outputs) {
std::vector<onnx_editor::InputEdge> onnx_inputs;
onnx_inputs.reserve(inputs.size());
for (const auto& input : inputs) {

View File

@@ -30,36 +30,39 @@ public:
const std::shared_ptr<ov::frontend::TelemetryExtension>& telemetry = {});
#endif
std::vector<Place::Ptr> get_inputs() const override;
std::vector<Place::Ptr> get_outputs() const override;
Place::Ptr get_place_by_tensor_name(const std::string& tensor_name) const override;
Place::Ptr get_place_by_operation_name(const std::string& operation_name) const override;
Place::Ptr get_place_by_operation_name_and_input_port(const std::string& operation_name,
int input_port_index) override;
Place::Ptr get_place_by_operation_name_and_output_port(const std::string& operation_name,
int output_port_index) override;
std::vector<ov::frontend::Place::Ptr> get_inputs() const override;
std::vector<ov::frontend::Place::Ptr> get_outputs() const override;
ov::frontend::Place::Ptr get_place_by_tensor_name(const std::string& tensor_name) const override;
ov::frontend::Place::Ptr get_place_by_operation_name(const std::string& operation_name) const override;
ov::frontend::Place::Ptr get_place_by_operation_name_and_input_port(const std::string& operation_name,
int input_port_index) override;
ov::frontend::Place::Ptr get_place_by_operation_name_and_output_port(const std::string& operation_name,
int output_port_index) override;
void set_name_for_tensor(Place::Ptr tensor, const std::string& new_name) override;
void set_name_for_operation(Place::Ptr operation, const std::string& new_name) override;
void set_name_for_tensor(ov::frontend::Place::Ptr tensor, const std::string& new_name) override;
void set_name_for_operation(ov::frontend::Place::Ptr operation, const std::string& new_name) override;
void free_name_for_operation(const std::string& name) override;
void set_name_for_dimension(Place::Ptr place, size_t shape_dim_index, const std::string& dim_name) override;
void set_name_for_dimension(ov::frontend::Place::Ptr place,
size_t shape_dim_index,
const std::string& dim_name) override;
/// \brief Not applicable for ONNX model. Throws immediately
void add_name_for_tensor(Place::Ptr tensor, const std::string& new_name) override;
void add_name_for_tensor(ov::frontend::Place::Ptr tensor, const std::string& new_name) override;
/// \brief Not applicable for ONNX model. Throws immediately
void free_name_for_tensor(const std::string& name) override;
void set_partial_shape(Place::Ptr place, const ngraph::PartialShape& shape) override;
ngraph::PartialShape get_partial_shape(Place::Ptr place) const override;
void set_element_type(Place::Ptr place, const ngraph::element::Type& type) override;
void set_partial_shape(ov::frontend::Place::Ptr place, const ngraph::PartialShape& shape) override;
ngraph::PartialShape get_partial_shape(ov::frontend::Place::Ptr place) const override;
void set_element_type(ov::frontend::Place::Ptr place, const ngraph::element::Type& type) override;
std::shared_ptr<Model> decode();
std::shared_ptr<Model> convert();
// Editor features
void override_all_outputs(const std::vector<Place::Ptr>& outputs) override;
void override_all_inputs(const std::vector<Place::Ptr>& inputs) override;
void extract_subgraph(const std::vector<Place::Ptr>& inputs, const std::vector<Place::Ptr>& outputs) override;
void override_all_outputs(const std::vector<ov::frontend::Place::Ptr>& outputs) override;
void override_all_inputs(const std::vector<ov::frontend::Place::Ptr>& inputs) override;
void extract_subgraph(const std::vector<ov::frontend::Place::Ptr>& inputs,
const std::vector<ov::frontend::Place::Ptr>& outputs) override;
private:
std::shared_ptr<ov::onnx_editor::ONNXModelEditor> m_editor;