| @@ -0,0 +1,7 @@ | |||||
| approvers: | |||||
| - gegenhua | |||||
| reviewers: | |||||
| - xchu42 | |||||
| - sheng-nan | |||||
| - ji_chen | |||||
| - wqtshg | |||||
| @@ -84,6 +84,18 @@ Status TensorFlowAutoMappingParserAdapter::ParseParams(const Message *op_src, ge | |||||
| op_dest->GetType().c_str(), dynamic_tensor_num); | op_dest->GetType().c_str(), dynamic_tensor_num); | ||||
| } | } | ||||
| if (op_dest->GetType() == SIZE) { | |||||
| ge::DataType out_type = DT_INT32; | |||||
| if (AttrUtils::GetDataType(op_dest, kShapeAttrOutType, out_type)) { | |||||
| if (!AttrUtils::SetInt(op_dest, kShapeAttrDtype, static_cast<int64_t>(out_type))) { | |||||
| REPORT_CALL_ERROR("E19999", "Set Attr:%s to op:%s(%s) failed", kShapeAttrDtype, | |||||
| op_dest->GetName().c_str(), op_dest->GetType().c_str()); | |||||
| GELOGE(FAILED, "Set attr dtype for op:%s failed.", op_dest->GetName().c_str()); | |||||
| return FAILED; | |||||
| } | |||||
| } | |||||
| } | |||||
| // add nodedef for shape insert by adapter when online_infer_dynamic | // add nodedef for shape insert by adapter when online_infer_dynamic | ||||
| if (op_dest->GetType() == SHAPE) { | if (op_dest->GetType() == SHAPE) { | ||||
| ge::DataType out_type = DT_INT32; | ge::DataType out_type = DT_INT32; | ||||
| @@ -18,6 +18,7 @@ add_subdirectory(depends/slog) | |||||
| add_subdirectory(depends/mmpa) | add_subdirectory(depends/mmpa) | ||||
| add_subdirectory(depends/profiler) | add_subdirectory(depends/profiler) | ||||
| add_subdirectory(depends/error_manager) | add_subdirectory(depends/error_manager) | ||||
| add_subdirectory(depends/graph) | |||||
| if (ENABLE_PARSER_COV OR ENABLE_PARSER_UT) | if (ENABLE_PARSER_COV OR ENABLE_PARSER_UT) | ||||
| add_subdirectory(ut) | add_subdirectory(ut) | ||||
| @@ -0,0 +1,81 @@ | |||||
| # Copyright 2019-2020 Huawei Technologies Co., Ltd | |||||
| # | |||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | |||||
| # you may not use this file except in compliance with the License. | |||||
| # You may obtain a copy of the License at | |||||
| # | |||||
| # http://www.apache.org/licenses/LICENSE-2.0 | |||||
| # | |||||
| # Unless required by applicable law or agreed to in writing, software | |||||
| # distributed under the License is distributed on an "AS IS" BASIS, | |||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| # See the License for the specific language governing permissions and | |||||
| # limitations under the License. | |||||
| # ============================================================================ | |||||
| #cmake_minimum_required(VERSION 2.8) | |||||
| project(STUB_ATTR_UTIL) | |||||
| ################################################################################ | |||||
| set(PARSER_PROTO_LIST | |||||
| "${PARSER_DIR}/metadef/proto/om.proto" | |||||
| "${PARSER_DIR}/metadef/proto/ge_ir.proto" | |||||
| "${PARSER_DIR}/metadef/proto/task.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/attr_value.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/function.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/graph.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/graph_library.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/node_def.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/op_def.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/resource_handle.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/tensor.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/tensor_shape.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/types.proto" | |||||
| "${PARSER_DIR}/metadef/proto/tensorflow/versions.proto" | |||||
| "${PARSER_DIR}/metadef/proto/caffe/caffe.proto" | |||||
| "${PARSER_DIR}/metadef/proto/onnx/ge_onnx.proto" | |||||
| #"${PARSER_DIR}/metadef/proto/proto_inner/ge_onnx.proto" | |||||
| ) | |||||
| protobuf_generate(ge PARSER_PROTO_SRCS PARSER_PROTO_HDRS ${PARSER_PROTO_LIST}) | |||||
| file(GLOB_RECURSE SRCS RELATIVE ${CMAKE_CURRENT_LIST_DIR} | |||||
| "src/attr_util_stub.cc" | |||||
| ) | |||||
| include_directories(${CMAKE_CURRENT_LIST_DIR}) | |||||
| include_directories(${PARSER_DIR}/metadef/inc) | |||||
| include_directories(${PARSER_DIR}/metadef/inc/graph) | |||||
| include_directories(${PARSER_DIR}/metadef/inc/external) | |||||
| include_directories(${PARSER_DIR}/metadef/inc/external/graph) | |||||
| include_directories(${PARSER_DIR}/metadef/graph) | |||||
| include_directories(${PARSER_DIR}/metadef/third_party) | |||||
| include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc) | |||||
| include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/external) | |||||
| include_directories(${PARSER_DIR}/metadef/third_party/graphengine/inc/external/ge) | |||||
| include_directories(${PARSER_DIR}/metadef/third_party/fwkacllib/inc) | |||||
| include_directories(${PARSER_DIR}/metadef/third_party/transformer/inc) | |||||
| include_directories(${PARSER_DIR}/metadef) | |||||
| include_directories(${CMAKE_BINARY_DIR}/proto/ge) | |||||
| include_directories(${CMAKE_BINARY_DIR}/proto/ge/proto) | |||||
| add_library(attr_util_stub STATIC | |||||
| ${SRCS} ${PARSER_PROTO_HDRS} | |||||
| ) | |||||
| target_compile_definitions(attr_util_stub PRIVATE | |||||
| google=ascend_private | |||||
| ) | |||||
| target_compile_options(attr_util_stub PRIVATE | |||||
| -O2 -g -fno-common | |||||
| ) | |||||
| target_link_libraries(attr_util_stub PRIVATE | |||||
| $<BUILD_INTERFACE:intf_pub> | |||||
| ascend_protobuf | |||||
| c_sec | |||||
| ) | |||||
| @@ -79,7 +79,6 @@ set(MATEDEF_SRC_FILES | |||||
| "${PARSER_DIR}/metadef/graph/detail/attributes_holder.cc" | "${PARSER_DIR}/metadef/graph/detail/attributes_holder.cc" | ||||
| "${PARSER_DIR}/metadef/graph/format_refiner.cc" | "${PARSER_DIR}/metadef/graph/format_refiner.cc" | ||||
| "${PARSER_DIR}/metadef/graph/ge_attr_define.cc" | "${PARSER_DIR}/metadef/graph/ge_attr_define.cc" | ||||
| "${PARSER_DIR}/metadef/graph/ge_attr_value.cc" | |||||
| "${PARSER_DIR}/metadef/graph/ge_tensor.cc" | "${PARSER_DIR}/metadef/graph/ge_tensor.cc" | ||||
| "${PARSER_DIR}/metadef/graph/gnode.cc" | "${PARSER_DIR}/metadef/graph/gnode.cc" | ||||
| "${PARSER_DIR}/metadef/graph/graph.cc" | "${PARSER_DIR}/metadef/graph/graph.cc" | ||||
| @@ -308,6 +307,7 @@ set(PARSER_UT_FILES | |||||
| "testcase/onnx_parser_testcase/onnx_parser_unittest.cc" | "testcase/onnx_parser_testcase/onnx_parser_unittest.cc" | ||||
| "testcase/onnx_parser_testcase/message2operator_unittest.cc" | "testcase/onnx_parser_testcase/message2operator_unittest.cc" | ||||
| "testcase/tensorflow_parser_testcase/tensorflow_parser_unittest.cc" | "testcase/tensorflow_parser_testcase/tensorflow_parser_unittest.cc" | ||||
| "testcase/tensorflow_parser_testcase/tensorflow_auto_mapping_parser_adapter_unittest.cc" | |||||
| ) | ) | ||||
| ############ libut_parser_common.a ############ | ############ libut_parser_common.a ############ | ||||
| @@ -349,6 +349,6 @@ target_link_libraries(ut_parser | |||||
| $<BUILD_INTERFACE:intf_pub> | $<BUILD_INTERFACE:intf_pub> | ||||
| ut_parser_proto | ut_parser_proto | ||||
| -Wl,--whole-archive ut_parser_common -Wl,--no-whole-archive | -Wl,--whole-archive ut_parser_common -Wl,--no-whole-archive | ||||
| ut_parser_graph ut_parser_register error_manager_stub mmpa_stub | |||||
| ut_parser_graph ut_parser_register error_manager_stub mmpa_stub attr_util_stub | |||||
| gtest gtest_main slog_stub ascend_protobuf c_sec -lrt -ldl -lgcov | gtest gtest_main slog_stub ascend_protobuf c_sec -lrt -ldl -lgcov | ||||
| ) | ) | ||||
| @@ -0,0 +1,63 @@ | |||||
| /** | |||||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||||
| * | |||||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||||
| * you may not use this file except in compliance with the License. | |||||
| * You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| */ | |||||
| #include <gtest/gtest.h> | |||||
| #include <iostream> | |||||
| #include "parser/common/op_parser_factory.h" | |||||
| #include "parser/tensorflow/tensorflow_auto_mapping_parser_adapter.h" | |||||
| #include "framework/omg/parser/parser_factory.h" | |||||
| #include "graph/operator_reg.h" | |||||
| #include "external/graph/types.h" | |||||
| #include "register/op_registry.h" | |||||
| #include "parser/common/register_tbe.h" | |||||
| namespace ge { | |||||
| class UtestTensorflowAutoMappingParserAdapter : public testing::Test { | |||||
| protected: | |||||
| void SetUp() {} | |||||
| void TearDown() {} | |||||
| }; | |||||
| TEST_F(UtestTensorflowAutoMappingParserAdapter, success) { | |||||
| auto parser = TensorFlowAutoMappingParserAdapter(); | |||||
| domi::tensorflow::NodeDef arg_node; | |||||
| arg_node.set_name("size"); | |||||
| arg_node.set_op("Size"); | |||||
| auto attr = arg_node.mutable_attr(); | |||||
| domi::tensorflow::AttrValue value; | |||||
| value.set_type(domi::tensorflow::DataType::DT_HALF); | |||||
| (*attr)["out_type"] = value; | |||||
| auto op_desc = ge::parser::MakeShared<ge::OpDesc>("size", "Size"); | |||||
| auto ret = parser.ParseParams(reinterpret_cast<Message *>(&arg_node), op_desc); | |||||
| EXPECT_EQ(ret, ge::SUCCESS); | |||||
| auto ret2 = ge::AttrUtils::SetBool(op_desc, "test_fail", true); | |||||
| EXPECT_EQ(ret2, true); | |||||
| EXPECT_EQ(ge::AttrUtils::HasAttr(op_desc, "test_fail"), true); | |||||
| ret = parser.ParseParams(reinterpret_cast<Message *>(&arg_node), op_desc); | |||||
| EXPECT_EQ(ret, ge::FAILED); | |||||
| } | |||||
| } // namespace ge | |||||