Browse Source

hide character

pull/232/head
shixingliang 4 years ago
parent
commit
6bc3b0ef31
41 changed files with 198 additions and 66 deletions
  1. +16
    -2
      inc/external/parser/caffe_parser.h
  2. +16
    -2
      inc/external/parser/onnx_parser.h
  3. +16
    -2
      inc/external/parser/tensorflow_parser.h
  4. +6
    -0
      parser/CMakeLists.txt
  5. +1
    -1
      parser/caffe/caffe_custom_parser_adapter.h
  6. +4
    -4
      parser/caffe/caffe_data_parser.cc
  7. +1
    -1
      parser/caffe/caffe_data_parser.h
  8. +15
    -1
      parser/caffe/caffe_op_parser.h
  9. +1
    -1
      parser/caffe/caffe_parser.cc
  10. +18
    -4
      parser/caffe/caffe_parser.h
  11. +1
    -1
      parser/caffe/caffe_reshape_parser.h
  12. +4
    -0
      parser/common/CMakeLists.txt
  13. +7
    -1
      parser/onnx/CMakeLists.txt
  14. +1
    -1
      parser/onnx/onnx_constant_parser.h
  15. +1
    -1
      parser/onnx/onnx_custom_parser_adapter.h
  16. +1
    -1
      parser/onnx/onnx_data_parser.cc
  17. +1
    -1
      parser/onnx/onnx_data_parser.h
  18. +15
    -1
      parser/onnx/onnx_op_parser.h
  19. +18
    -4
      parser/onnx/onnx_parser.h
  20. +4
    -0
      parser/proto/caffe/CMakeLists.txt
  21. +5
    -5
      parser/tensorflow/graph_functiondef.cc
  22. +1
    -1
      parser/tensorflow/graph_functiondef.h
  23. +1
    -1
      parser/tensorflow/tensorflow_auto_mapping_parser_adapter.h
  24. +1
    -1
      parser/tensorflow/tensorflow_constant_parser.h
  25. +1
    -1
      parser/tensorflow/tensorflow_custom_parser_adapter.h
  26. +1
    -1
      parser/tensorflow/tensorflow_data_parser.cc
  27. +1
    -1
      parser/tensorflow/tensorflow_data_parser.h
  28. +1
    -1
      parser/tensorflow/tensorflow_enter_parser.h
  29. +1
    -1
      parser/tensorflow/tensorflow_fusion_custom_parser_adapter.h
  30. +1
    -1
      parser/tensorflow/tensorflow_fusion_op_parser.h
  31. +1
    -1
      parser/tensorflow/tensorflow_identity_parser.h
  32. +1
    -1
      parser/tensorflow/tensorflow_merge_parser.h
  33. +1
    -1
      parser/tensorflow/tensorflow_no_op_parser.h
  34. +15
    -1
      parser/tensorflow/tensorflow_op_parser.h
  35. +2
    -2
      parser/tensorflow/tensorflow_parser.cc
  36. +8
    -8
      parser/tensorflow/tensorflow_parser.h
  37. +5
    -5
      parser/tensorflow/tensorflow_parser_register.h
  38. +1
    -1
      parser/tensorflow/tensorflow_ref_switch_parser.h
  39. +1
    -1
      parser/tensorflow/tensorflow_reshape_parser.h
  40. +1
    -1
      parser/tensorflow/tensorflow_shape_n_parser.h
  41. +1
    -1
      parser/tensorflow/tensorflow_squeeze_parser.h

+ 16
- 2
inc/external/parser/caffe_parser.h View File

@@ -17,6 +17,20 @@
#ifndef INC_EXTERNAL_ACL_GRAPH_CAFFE_H_ #ifndef INC_EXTERNAL_ACL_GRAPH_CAFFE_H_
#define INC_EXTERNAL_ACL_GRAPH_CAFFE_H_ #define INC_EXTERNAL_ACL_GRAPH_CAFFE_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <memory> #include <memory>
#include <string> #include <string>
#include <vector> #include <vector>
@@ -27,9 +41,9 @@
#include "graph/types.h" #include "graph/types.h"


namespace ge { namespace ge {
graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file, ge::Graph &graph);
PARSER_FUNC_VISIBILITY graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file, ge::Graph &graph);


graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file,
PARSER_FUNC_VISIBILITY graphStatus aclgrphParseCaffe(const char *model_file, const char *weights_file,
const std::map<ge::AscendString, ge::AscendString> &parser_params, ge::Graph &graph); const std::map<ge::AscendString, ge::AscendString> &parser_params, ge::Graph &graph);
} // namespace ge } // namespace ge




+ 16
- 2
inc/external/parser/onnx_parser.h View File

@@ -17,16 +17,30 @@
#ifndef INC_EXTERNAL_PARSER_ONNX_PARSER_H_ #ifndef INC_EXTERNAL_PARSER_ONNX_PARSER_H_
#define INC_EXTERNAL_PARSER_ONNX_PARSER_H_ #define INC_EXTERNAL_PARSER_ONNX_PARSER_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include "graph/ascend_string.h" #include "graph/ascend_string.h"
#include "graph/ge_error_codes.h" #include "graph/ge_error_codes.h"
#include "graph/graph.h" #include "graph/graph.h"
#include "graph/types.h" #include "graph/types.h"


namespace ge { namespace ge {
graphStatus aclgrphParseONNX(const char *model_file,
PARSER_FUNC_VISIBILITY graphStatus aclgrphParseONNX(const char *model_file,
const std::map<ge::AscendString, ge::AscendString> &parser_params, ge::Graph &graph); const std::map<ge::AscendString, ge::AscendString> &parser_params, ge::Graph &graph);


graphStatus aclgrphParseONNXFromMem(const char *buffer, size_t size,
PARSER_FUNC_VISIBILITY graphStatus aclgrphParseONNXFromMem(const char *buffer, size_t size,
const std::map<ge::AscendString, ge::AscendString> &parser_params, const std::map<ge::AscendString, ge::AscendString> &parser_params,
ge::Graph &graph); ge::Graph &graph);
} // namespace ge } // namespace ge


+ 16
- 2
inc/external/parser/tensorflow_parser.h View File

@@ -17,6 +17,20 @@
#ifndef INC_EXTERNAL_ACL_PARSER_TENSORFLOW_H_ #ifndef INC_EXTERNAL_ACL_PARSER_TENSORFLOW_H_
#define INC_EXTERNAL_ACL_PARSER_TENSORFLOW_H_ #define INC_EXTERNAL_ACL_PARSER_TENSORFLOW_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <atomic> #include <atomic>
#include <memory> #include <memory>
#include <string> #include <string>
@@ -28,8 +42,8 @@
#include "graph/types.h" #include "graph/types.h"


namespace ge { namespace ge {
graphStatus aclgrphParseTensorFlow(const char *model_file, ge::Graph &graph);
graphStatus aclgrphParseTensorFlow(const char *model_file,
PARSER_FUNC_VISIBILITY graphStatus aclgrphParseTensorFlow(const char *model_file, ge::Graph &graph);
PARSER_FUNC_VISIBILITY graphStatus aclgrphParseTensorFlow(const char *model_file,
const std::map<ge::AscendString, ge::AscendString> &parser_params, ge::Graph &graph); const std::map<ge::AscendString, ge::AscendString> &parser_params, ge::Graph &graph);
} // namespace ge } // namespace ge



+ 6
- 0
parser/CMakeLists.txt View File

@@ -50,12 +50,14 @@ target_compile_options(fmk_parser PRIVATE
-Werror -Werror
-Wno-deprecated-declarations -Wno-deprecated-declarations
-fno-common -fno-common
-fvisibility=hidden
) )


target_compile_definitions(fmk_parser PRIVATE target_compile_definitions(fmk_parser PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0 PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private google=ascend_private
$<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC> $<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC>
FUNC_VISIBILITY
) )


target_include_directories(fmk_parser PRIVATE target_include_directories(fmk_parser PRIVATE
@@ -92,6 +94,10 @@ target_include_directories(fmk_parser PRIVATE
${METADEF_DIR}/third_party/fwkacllib/inc ${METADEF_DIR}/third_party/fwkacllib/inc
) )


target_link_options(fmk_parser PRIVATE
-Wl,-Bsymbolic
)

target_link_libraries(fmk_parser target_link_libraries(fmk_parser
$<BUILD_INTERFACE:intf_pub> $<BUILD_INTERFACE:intf_pub>
static_mmpa static_mmpa


+ 1
- 1
parser/caffe/caffe_custom_parser_adapter.h View File

@@ -20,7 +20,7 @@
#include "parser/caffe/caffe_op_parser.h" #include "parser/caffe/caffe_op_parser.h"


namespace ge { namespace ge {
class CaffeCustomParserAdapter : public CaffeOpParser {
class PARSER_FUNC_VISIBILITY CaffeCustomParserAdapter : public CaffeOpParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 4
- 4
parser/caffe/caffe_data_parser.cc View File

@@ -78,7 +78,7 @@ Status CaffeDataParser::ParseParamsForInput(const domi::caffe::LayerParameter *l
for (int i = 0; i < input_param.shape_size(); i++) { for (int i = 0; i < input_param.shape_size(); i++) {
const domi::caffe::BlobShape &blob_shape = input_param.shape(i); const domi::caffe::BlobShape &blob_shape = input_param.shape(i);
vector<int64_t> shape; vector<int64_t> shape;
unordered_map<string, vector<int64_t>> &shape_map = GetParserContext().input_dims;
std::map<string, vector<int64_t>> &shape_map = GetParserContext().input_dims;
std::vector<int64_t> model_dims; std::vector<int64_t> model_dims;
for (auto &blob_shape_dim_temp : blob_shape.dim()) { for (auto &blob_shape_dim_temp : blob_shape.dim()) {
model_dims.push_back(blob_shape_dim_temp); model_dims.push_back(blob_shape_dim_temp);
@@ -91,7 +91,7 @@ Status CaffeDataParser::ParseParamsForInput(const domi::caffe::LayerParameter *l
} else { } else {
// Get from external input // Get from external input
const ge::ParserContext &ctx = GetParserContext(); const ge::ParserContext &ctx = GetParserContext();
std::unordered_map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
string name = layer->name(); string name = layer->name();
auto search = input_dims.find(name); auto search = input_dims.find(name);
if (search == input_dims.end()) { if (search == input_dims.end()) {
@@ -124,7 +124,7 @@ Status CaffeDataParser::ParseParamsForDummyData(const domi::caffe::LayerParamete
const domi::caffe::BlobShape &blob_shape = dummy_data_param.shape(i); const domi::caffe::BlobShape &blob_shape = dummy_data_param.shape(i);


vector<int64_t> shape; vector<int64_t> shape;
unordered_map<string, vector<int64_t>> &shape_map = GetParserContext().input_dims;
std::map<string, vector<int64_t>> &shape_map = GetParserContext().input_dims;
std::vector<int64_t> model_dims; std::vector<int64_t> model_dims;
for (auto &blob_shape_dim_temp : blob_shape.dim()) { for (auto &blob_shape_dim_temp : blob_shape.dim()) {
model_dims.push_back(blob_shape_dim_temp); model_dims.push_back(blob_shape_dim_temp);
@@ -138,7 +138,7 @@ Status CaffeDataParser::ParseParamsForDummyData(const domi::caffe::LayerParamete
} else { } else {
// Get from external input // Get from external input
const ge::ParserContext &ctx = GetParserContext(); const ge::ParserContext &ctx = GetParserContext();
std::unordered_map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
string name = layer->name(); string name = layer->name();
auto search = input_dims.find(name); auto search = input_dims.find(name);
if (search == input_dims.end()) { if (search == input_dims.end()) {


+ 1
- 1
parser/caffe/caffe_data_parser.h View File

@@ -23,7 +23,7 @@
#include "parser/common/data_op_parser.h" #include "parser/common/data_op_parser.h"


namespace ge { namespace ge {
class CaffeDataParser : public CaffeOpParser, public DataOpParser {
class PARSER_FUNC_VISIBILITY CaffeDataParser : public CaffeOpParser, public DataOpParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 15
- 1
parser/caffe/caffe_op_parser.h View File

@@ -17,6 +17,20 @@
#ifndef PARSER_CAFFE_CAFFE_OP_PARSER_H_ #ifndef PARSER_CAFFE_CAFFE_OP_PARSER_H_
#define PARSER_CAFFE_CAFFE_OP_PARSER_H_ #define PARSER_CAFFE_CAFFE_OP_PARSER_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <vector> #include <vector>
#include "graph/debug/ge_attr_define.h" #include "graph/debug/ge_attr_define.h"
#include "common/util.h" #include "common/util.h"
@@ -54,7 +68,7 @@ namespace ge {
* @ingroup ge_omg * @ingroup ge_omg
* @brief Used to parse Caffe operator information * @brief Used to parse Caffe operator information
*/ */
class CaffeOpParser : public OpParser {
class PARSER_FUNC_VISIBILITY CaffeOpParser : public OpParser {
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override;




+ 1
- 1
parser/caffe/caffe_parser.cc View File

@@ -330,7 +330,7 @@ Status CaffeModelParser::ParseInput(domi::caffe::NetParameter &proto_message, bo
} }
} else { } else {
const ge::ParserContext &ctx = ge::GetParserContext(); const ge::ParserContext &ctx = ge::GetParserContext();
std::unordered_map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
for (int i = 0; i < proto_message.input_size(); i++) { for (int i = 0; i < proto_message.input_size(); i++) {
string name = proto_message.input(i); string name = proto_message.input(i);
if (input_dims.count(name) == 0) { // Input defined by model does not exist in input of external input if (input_dims.count(name) == 0) { // Input defined by model does not exist in input of external input


+ 18
- 4
parser/caffe/caffe_parser.h View File

@@ -17,6 +17,20 @@
#ifndef PARSER_CAFFE_CAFFE_PARSER_H_ #ifndef PARSER_CAFFE_CAFFE_PARSER_H_
#define PARSER_CAFFE_CAFFE_PARSER_H_ #define PARSER_CAFFE_CAFFE_PARSER_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <map> #include <map>
#include <set> #include <set>
#include <string> #include <string>
@@ -39,7 +53,7 @@ using std::unordered_map;
using std::vector; using std::vector;
static std::map<std::vector<std::string>, std::vector<std::string>> params_share_map; static std::map<std::vector<std::string>, std::vector<std::string>> params_share_map;


class CaffeModelParser : public domi::ModelParser {
class PARSER_FUNC_VISIBILITY CaffeModelParser : public domi::ModelParser {
public: public:
CaffeModelParser() {} CaffeModelParser() {}
virtual ~CaffeModelParser() {} virtual ~CaffeModelParser() {}
@@ -362,10 +376,10 @@ class CaffeModelParser : public domi::ModelParser {
std::map<std::string, ge::NodePtr> node_map; std::map<std::string, ge::NodePtr> node_map;


// key: blob name, value: layer name and index // key: blob name, value: layer name and index
std::unordered_map<std::string, std::vector<std::pair<std::string, int32_t>>> bottom_blobs_map_;
std::map<std::string, std::vector<std::pair<std::string, int32_t>>> bottom_blobs_map_;


// key: blob name, value: layer name and index // key: blob name, value: layer name and index
std::unordered_map<std::string, std::vector<std::pair<std::string, int32_t>>> top_blobs_map_;
std::map<std::string, std::vector<std::pair<std::string, int32_t>>> top_blobs_map_;


std::vector<ge::Operator> custom_operator_; std::vector<ge::Operator> custom_operator_;
std::map<std::string, std::vector<std::string>> layer_tops_map_; std::map<std::string, std::vector<std::string>> layer_tops_map_;
@@ -375,7 +389,7 @@ class CaffeModelParser : public domi::ModelParser {
* @ingroup domi_omg * @ingroup domi_omg
* @brief Caffe weight parser * @brief Caffe weight parser
*/ */
class CaffeWeightsParser : public domi::WeightsParser {
class PARSER_FUNC_VISIBILITY CaffeWeightsParser : public domi::WeightsParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 1
- 1
parser/caffe/caffe_reshape_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/caffe/caffe_op_parser.h" #include "parser/caffe/caffe_op_parser.h"


namespace ge { namespace ge {
class CaffeReshapeParser : public CaffeOpParser {
class PARSER_FUNC_VISIBILITY CaffeReshapeParser : public CaffeOpParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 4
- 0
parser/common/CMakeLists.txt View File

@@ -74,6 +74,10 @@ target_include_directories(parser_common PRIVATE
${METADEF_DIR}/third_party/fwkacllib/inc ${METADEF_DIR}/third_party/fwkacllib/inc
) )


target_link_options(parser_common PRIVATE
-Wl,-Bsymbolic
)

target_link_libraries(parser_common PRIVATE target_link_libraries(parser_common PRIVATE
$<BUILD_INTERFACE:intf_pub> $<BUILD_INTERFACE:intf_pub>
static_mmpa static_mmpa


+ 7
- 1
parser/onnx/CMakeLists.txt View File

@@ -20,11 +20,13 @@ target_compile_options(fmk_onnx_parser PRIVATE
-Werror -Werror
-Wno-deprecated-declarations -Wno-deprecated-declarations
-fno-common -fno-common
-fvisibility=hidden
) )


target_compile_definitions(fmk_onnx_parser PRIVATE target_compile_definitions(fmk_onnx_parser PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0 PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private google=ascend_private
FUNC_VISIBILITY
) )


target_include_directories(fmk_onnx_parser PRIVATE target_include_directories(fmk_onnx_parser PRIVATE
@@ -62,6 +64,10 @@ target_include_directories(fmk_onnx_parser PRIVATE
${METADEF_DIR}/third_party/fwkacllib/inc ${METADEF_DIR}/third_party/fwkacllib/inc
) )


target_link_options(fmk_onnx_parser PRIVATE
-Wl,-Bsymbolic
)

target_link_libraries(fmk_onnx_parser PRIVATE target_link_libraries(fmk_onnx_parser PRIVATE
$<BUILD_INTERFACE:intf_pub> $<BUILD_INTERFACE:intf_pub>
static_mmpa static_mmpa
@@ -69,7 +75,7 @@ target_link_libraries(fmk_onnx_parser PRIVATE
ascend_protobuf ascend_protobuf
register register
c_sec c_sec
parser_common
parser_common
graph graph
slog slog
-Wl,--as-needed -Wl,--as-needed


+ 1
- 1
parser/onnx/onnx_constant_parser.h View File

@@ -24,7 +24,7 @@
using ge::onnx::NodeProto; using ge::onnx::NodeProto;


namespace ge { namespace ge {
class OnnxConstantParser : public OnnxOpParser {
class PARSER_FUNC_VISIBILITY OnnxConstantParser : public OnnxOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::Operator &op_def) override; Status ParseParams(const Message *op_src, ge::Operator &op_def) override;




+ 1
- 1
parser/onnx/onnx_custom_parser_adapter.h View File

@@ -20,7 +20,7 @@
#include "parser/onnx/onnx_op_parser.h" #include "parser/onnx/onnx_op_parser.h"


namespace ge { namespace ge {
class OnnxCustomParserAdapter : public OnnxOpParser {
class PARSER_FUNC_VISIBILITY OnnxCustomParserAdapter : public OnnxOpParser {
public: public:
/// @brief Parsing model file information /// @brief Parsing model file information
/// @param [in] op_src model data to be parsed /// @param [in] op_src model data to be parsed


+ 1
- 1
parser/onnx/onnx_data_parser.cc View File

@@ -94,7 +94,7 @@ Status OnnxDataParser::ParseInputFromModel(const Message *op_src, ge::Operator &
} }


Status OnnxDataParser::ParseInputFromUser(const ge::Operator &op_def) { Status OnnxDataParser::ParseInputFromUser(const ge::Operator &op_def) {
std::unordered_map<std::string, std::vector<int64_t>> input_dims = GetParserContext().input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = GetParserContext().input_dims;
// User not designate the input_shape // User not designate the input_shape
std::string name = op_def.GetName(); std::string name = op_def.GetName();
if (input_dims.count(name) == 0) { if (input_dims.count(name) == 0) {


+ 1
- 1
parser/onnx/onnx_data_parser.h View File

@@ -23,7 +23,7 @@
#include "parser/onnx/onnx_op_parser.h" #include "parser/onnx/onnx_op_parser.h"


namespace ge { namespace ge {
class OnnxDataParser : public OnnxOpParser {
class PARSER_FUNC_VISIBILITY OnnxDataParser : public OnnxOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::Operator &op_def) override; Status ParseParams(const Message *op_src, ge::Operator &op_def) override;




+ 15
- 1
parser/onnx/onnx_op_parser.h View File

@@ -17,6 +17,20 @@
#ifndef GE_PARSER_ONNX_ONNX_OP_PARSER_H_ #ifndef GE_PARSER_ONNX_ONNX_OP_PARSER_H_
#define GE_PARSER_ONNX_ONNX_OP_PARSER_H_ #define GE_PARSER_ONNX_ONNX_OP_PARSER_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <string> #include <string>
#include <vector> #include <vector>
#include "framework/common/op/attr_value_util.h" #include "framework/common/op/attr_value_util.h"
@@ -28,7 +42,7 @@
using Status = domi::Status; using Status = domi::Status;


namespace ge { namespace ge {
class OnnxOpParser : public OpParser {
class PARSER_FUNC_VISIBILITY OnnxOpParser : public OpParser {
public: public:
/// @brief parse params /// @brief parse params
/// @param [in] op_src op to be parsed /// @param [in] op_src op to be parsed


+ 18
- 4
parser/onnx/onnx_parser.h View File

@@ -17,6 +17,20 @@
#ifndef PARSER_ONNX_ONNX_PARSER_H_ #ifndef PARSER_ONNX_ONNX_PARSER_H_
#define PARSER_ONNX_ONNX_PARSER_H_ #define PARSER_ONNX_ONNX_PARSER_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <map> #include <map>
#include <string> #include <string>
#include <vector> #include <vector>
@@ -27,7 +41,7 @@
#include "proto/onnx/ge_onnx.pb.h" #include "proto/onnx/ge_onnx.pb.h"


namespace ge { namespace ge {
class OnnxModelParser : public domi::ModelParser {
class PARSER_FUNC_VISIBILITY OnnxModelParser : public domi::ModelParser {
public: public:
OnnxModelParser() {} OnnxModelParser() {}
virtual ~OnnxModelParser() {} virtual ~OnnxModelParser() {}
@@ -96,12 +110,12 @@ class OnnxModelParser : public domi::ModelParser {


std::vector<std::string> input_node_names_; std::vector<std::string> input_node_names_;


std::unordered_map<std::string, std::vector<std::pair<std::string, int>>> inputs_map_;
std::map<std::string, std::vector<std::pair<std::string, int>>> inputs_map_;


std::unordered_map<std::string, std::vector<std::pair<std::string, int>>> outputs_map_;
std::map<std::string, std::vector<std::pair<std::string, int>>> outputs_map_;
}; };


class OnnxWeightsParser : public domi::WeightsParser {
class PARSER_FUNC_VISIBILITY OnnxWeightsParser : public domi::WeightsParser {
public: public:
Status Parse(const char *file, ge::Graph &graph) override { return domi::SUCCESS; } Status Parse(const char *file, ge::Graph &graph) override { return domi::SUCCESS; }




+ 4
- 0
parser/proto/caffe/CMakeLists.txt View File

@@ -15,6 +15,10 @@ target_include_directories(_caffe_parser PRIVATE
${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}
) )


target_link_options(_caffe_parser PRIVATE
-Wl,-Bsymbolic
)

target_link_libraries(_caffe_parser PRIVATE target_link_libraries(_caffe_parser PRIVATE
$<BUILD_INTERFACE:intf_pub> $<BUILD_INTERFACE:intf_pub>
-Wl,--no-as-needed -Wl,--no-as-needed


+ 5
- 5
parser/tensorflow/graph_functiondef.cc View File

@@ -112,7 +112,7 @@ domi::Status ComputeArgRange(const domi::tensorflow::NodeDef &node_def, const do
return SUCCESS; return SUCCESS;
} }


using NameRangeMap = std::unordered_map<string, std::pair<int, int>>;
using NameRangeMap = std::map<string, std::pair<int, int>>;


domi::Status NameRangesHelper(const domi::tensorflow::NodeDef &node_def, domi::Status NameRangesHelper(const domi::tensorflow::NodeDef &node_def,
const google::protobuf::RepeatedPtrField<domi::tensorflow::OpDef_ArgDef> &args, const google::protobuf::RepeatedPtrField<domi::tensorflow::OpDef_ArgDef> &args,
@@ -136,8 +136,8 @@ domi::Status NameRangesForNode(const domi::tensorflow::NodeDef &node_def, const
} }


domi::Status RemapFunctionDef(FunctionDef *fdef, const string &name, NameMapHelper &node_names, domi::Status RemapFunctionDef(FunctionDef *fdef, const string &name, NameMapHelper &node_names,
std::unordered_map<string, string> &tensor_renaming,
std::unordered_map<string, string> &return_values) {
std::map<string, string> &tensor_renaming,
std::map<string, string> &return_values) {
GE_CHECK_NOTNULL(fdef); GE_CHECK_NOTNULL(fdef);
// Detect missing function inputs.. // Detect missing function inputs..
for (int i = 0; i < fdef->signature().input_arg_size(); ++i) { for (int i = 0; i < fdef->signature().input_arg_size(); ++i) {
@@ -324,8 +324,8 @@ domi::Status GraphToFunctionDef::DavGraphToFunctionDef(ge::ComputeGraphPtr graph
GE_CHECK_NOTNULL(fdef); GE_CHECK_NOTNULL(fdef);
fdef->mutable_signature()->set_name(name); fdef->mutable_signature()->set_name(name);


std::unordered_map<string, string> tensor_renaming;
std::unordered_map<string, string> return_values;
std::map<string, string> tensor_renaming;
std::map<string, string> return_values;
NameMapHelper node_names; NameMapHelper node_names;


for (const ge::NodePtr &node : graph->GetDirectNode()) { for (const ge::NodePtr &node : graph->GetDirectNode()) {


+ 1
- 1
parser/tensorflow/graph_functiondef.h View File

@@ -83,7 +83,7 @@ class NameMapHelper {
string GetUniqueName(const string &name); string GetUniqueName(const string &name);


std::set<string> used_names_; std::set<string> used_names_;
std::unordered_map<string, string> name_mapping_;
std::map<string, string> name_mapping_;
}; };
} // namespace ge } // namespace ge




+ 1
- 1
parser/tensorflow/tensorflow_auto_mapping_parser_adapter.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowAutoMappingParserAdapter : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowAutoMappingParserAdapter : public TensorFlowOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override;
}; };


+ 1
- 1
parser/tensorflow/tensorflow_constant_parser.h View File

@@ -25,7 +25,7 @@
using domi::tensorflow::NodeDef; using domi::tensorflow::NodeDef;


namespace ge { namespace ge {
class TensorFlowConstantParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowConstantParser : public TensorFlowOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override;




+ 1
- 1
parser/tensorflow/tensorflow_custom_parser_adapter.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowCustomParserAdapter : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowCustomParserAdapter : public TensorFlowOpParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 1
- 1
parser/tensorflow/tensorflow_data_parser.cc View File

@@ -102,7 +102,7 @@ Status TensorFlowDataParser::ParseInputFromUser(const Message *op_src, const ge:
GE_CHECK_NOTNULL(op_def); GE_CHECK_NOTNULL(op_def);
(void)op_src; (void)op_src;
const ge::ParserContext &ctx = GetParserContext(); const ge::ParserContext &ctx = GetParserContext();
std::unordered_map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
// User not designate the input_shape // User not designate the input_shape
std::string name = op_def->GetName(); std::string name = op_def->GetName();
if (input_dims.count(name) == 0) { if (input_dims.count(name) == 0) {


+ 1
- 1
parser/tensorflow/tensorflow_data_parser.h View File

@@ -23,7 +23,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowDataParser : public TensorFlowOpParser, public DataOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowDataParser : public TensorFlowOpParser, public DataOpParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 1
- 1
parser/tensorflow/tensorflow_enter_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowEnterParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowEnterParser : public TensorFlowOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_desc) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_desc) override;
}; };


+ 1
- 1
parser/tensorflow/tensorflow_fusion_custom_parser_adapter.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_fusion_op_parser.h" #include "parser/tensorflow/tensorflow_fusion_op_parser.h"


namespace ge { namespace ge {
class TensorFlowFusionCustomParserAdapter : public TensorFlowFusionOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowFusionCustomParserAdapter : public TensorFlowFusionOpParser {
public: public:
/** /**
* @ingroup domi_parser * @ingroup domi_parser


+ 1
- 1
parser/tensorflow/tensorflow_fusion_op_parser.h View File

@@ -37,7 +37,7 @@ namespace ge {
* @ingroup domi_omg * @ingroup domi_omg
* @brief Used to parse TensorFlow operator information * @brief Used to parse TensorFlow operator information
*/ */
class TensorFlowFusionOpParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowFusionOpParser : public TensorFlowOpParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 1
- 1
parser/tensorflow/tensorflow_identity_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowIdentityParser : public TensorFlowOpParser {};
class PARSER_FUNC_VISIBILITY TensorFlowIdentityParser : public TensorFlowOpParser {};
} // namespace ge } // namespace ge


#endif // GE_PARSER_TENSORFLOW_TENSORFLOW_IDENTITY_H_ #endif // GE_PARSER_TENSORFLOW_TENSORFLOW_IDENTITY_H_

+ 1
- 1
parser/tensorflow/tensorflow_merge_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowMergeParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowMergeParser : public TensorFlowOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_desc) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_desc) override;
}; };


+ 1
- 1
parser/tensorflow/tensorflow_no_op_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowNoOpParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowNoOpParser : public TensorFlowOpParser {
// AUTO GEN PLEASE DO NOT MODIFY IT // AUTO GEN PLEASE DO NOT MODIFY IT
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override;


+ 15
- 1
parser/tensorflow/tensorflow_op_parser.h View File

@@ -17,6 +17,20 @@
#ifndef OMG_PARSER_TENSORFLOW_TENSORFLOW_OP_PARSER_H_ #ifndef OMG_PARSER_TENSORFLOW_TENSORFLOW_OP_PARSER_H_
#define OMG_PARSER_TENSORFLOW_TENSORFLOW_OP_PARSER_H_ #define OMG_PARSER_TENSORFLOW_TENSORFLOW_OP_PARSER_H_


#if defined(_MSC_VER)
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY _declspec(dllexport)
#else
#define PARSER_FUNC_VISIBILITY
#endif
#else
#ifdef FUNC_VISIBILITY
#define PARSER_FUNC_VISIBILITY __attribute__((visibility("default")))
#else
#define PARSER_FUNC_VISIBILITY
#endif
#endif

#include <string> #include <string>
#include <vector> #include <vector>
#include "framework/common/op/attr_value_util.h" #include "framework/common/op/attr_value_util.h"
@@ -52,7 +66,7 @@ namespace ge {
* @ingroup domi_omg * @ingroup domi_omg
* @brief used to parse TensorFlow operator information * @brief used to parse TensorFlow operator information
*/ */
class TensorFlowOpParser : public OpParser {
class PARSER_FUNC_VISIBILITY TensorFlowOpParser : public OpParser {
public: public:


/** /**


+ 2
- 2
parser/tensorflow/tensorflow_parser.cc View File

@@ -2962,7 +2962,7 @@ Status TensorFlowModelParser::TrimGraphByInput(const domi::tensorflow::GraphDef
TensorShapeProto *data_shape = attr_value.mutable_shape(); TensorShapeProto *data_shape = attr_value.mutable_shape();
GE_CHECK_NOTNULL(data_shape); GE_CHECK_NOTNULL(data_shape);
const ge::ParserContext &ctx = ge::GetParserContext(); const ge::ParserContext &ctx = ge::GetParserContext();
std::unordered_map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::vector<int64_t> designated_dims = input_dims.at(node.name()); std::vector<int64_t> designated_dims = input_dims.at(node.name());
for (int32_t i = 0; i < (int32_t)designated_dims.size(); i++) { for (int32_t i = 0; i < (int32_t)designated_dims.size(); i++) {
data_shape->add_dim()->set_size(designated_dims[i]); data_shape->add_dim()->set_size(designated_dims[i]);
@@ -3035,7 +3035,7 @@ Status TensorFlowModelParser::TrimGraphByOutput(const domi::tensorflow::GraphDef
TensorShapeProto *data_shape = attr_value.mutable_shape(); TensorShapeProto *data_shape = attr_value.mutable_shape();
GE_CHECK_NOTNULL(data_shape); GE_CHECK_NOTNULL(data_shape);
const ge::ParserContext &ctx = ge::GetParserContext(); const ge::ParserContext &ctx = ge::GetParserContext();
std::unordered_map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::map<std::string, std::vector<int64_t>> input_dims = ctx.input_dims;
std::vector<int64_t> designated_dims = input_dims.at(node.name()); std::vector<int64_t> designated_dims = input_dims.at(node.name());
for (int32_t i = 0; i < (int32_t)designated_dims.size(); i++) { for (int32_t i = 0; i < (int32_t)designated_dims.size(); i++) {
data_shape->add_dim()->set_size(designated_dims[i]); data_shape->add_dim()->set_size(designated_dims[i]);


+ 8
- 8
parser/tensorflow/tensorflow_parser.h View File

@@ -74,7 +74,7 @@ struct OpNodeContext {
}; };


struct DelTransposeInfo; struct DelTransposeInfo;
class TensorFlowModelParser : public domi::ModelParser {
class PARSER_FUNC_VISIBILITY TensorFlowModelParser : public domi::ModelParser {
public: public:
TensorFlowModelParser() {} TensorFlowModelParser() {}
virtual ~TensorFlowModelParser() {} virtual ~TensorFlowModelParser() {}
@@ -649,15 +649,15 @@ class TensorFlowModelParser : public domi::ModelParser {
/** /**
* save <node_name, nodeDefList> * save <node_name, nodeDefList>
*/ */
unordered_map<string, vector<const NodeDef *>> fusion_op_nodedef_map_;
map<string, vector<const NodeDef *>> fusion_op_nodedef_map_;
// Policy types of fusion operators,true:scope_pass match,false:prefix match // Policy types of fusion operators,true:scope_pass match,false:prefix match
unordered_map<string, bool> fusion_op_policy_;
map<string, bool> fusion_op_policy_;
// The names of all children operators and the description of fusion operators // The names of all children operators and the description of fusion operators
unordered_map<string, ge::ScopeFusionOpInfo> fusion_op_children_; unordered_map<string, ge::ScopeFusionOpInfo> fusion_op_children_;
/** /**
* save <node_name, {fusionOpName,description}> * save <node_name, {fusionOpName,description}>
*/ */
unordered_map<string, vector<string>> fusion_op_type_map_;
map<string, vector<string>> fusion_op_type_map_;
/** /**
* save nodedef of the fusion operator * save nodedef of the fusion operator
*/ */
@@ -665,17 +665,17 @@ class TensorFlowModelParser : public domi::ModelParser {
/** /**
* control edge,{Key=NodeName,Value=index} * control edge,{Key=NodeName,Value=index}
*/ */
unordered_map<string, vector<int32_t>> edges_control_map;
map<string, vector<int32_t>> edges_control_map;


unordered_map<string, const domi::tensorflow::NodeDef *> framework_ops_; unordered_map<string, const domi::tensorflow::NodeDef *> framework_ops_;


/** /**
* save <node_name, op_type> * save <node_name, op_type>
*/ */
unordered_map<string, string> adaptedOpTypeMap_;
map<string, string> adaptedOpTypeMap_;


// { node_name <{input_node_name}, {output_node_name}> } // { node_name <{input_node_name}, {output_node_name}> }
unordered_map<string, std::pair<set<string>, set<string>>> node_inputs_outputs_map_;
map<string, std::pair<set<string>, set<string>>> node_inputs_outputs_map_;


unordered_map<string, const ge::Operator *> scope_inner_node_map_; unordered_map<string, const ge::Operator *> scope_inner_node_map_;
}; };
@@ -684,7 +684,7 @@ class TensorFlowModelParser : public domi::ModelParser {
* @ingroup domi_omg * @ingroup domi_omg
* @brief Tensorflow weight parse * @brief Tensorflow weight parse
*/ */
class TensorFlowWeightsParser : public domi::WeightsParser {
class PARSER_FUNC_VISIBILITY TensorFlowWeightsParser : public domi::WeightsParser {
public: public:
/** /**
* @ingroup domi_omg * @ingroup domi_omg


+ 5
- 5
parser/tensorflow/tensorflow_parser_register.h View File

@@ -33,13 +33,13 @@
using domi::tensorflow::NodeDef; using domi::tensorflow::NodeDef;


namespace ge { namespace ge {
class TensorflowFinalizeable {
class PARSER_FUNC_VISIBILITY TensorflowFinalizeable {
public: public:
virtual bool Finalize() = 0; virtual bool Finalize() = 0;
virtual ~TensorflowFinalizeable() {} virtual ~TensorflowFinalizeable() {}
}; };


class TensorflowReceiver {
class PARSER_FUNC_VISIBILITY TensorflowReceiver {
public: public:
TensorflowReceiver(TensorflowFinalizeable &f) { f.Finalize(); } TensorflowReceiver(TensorflowFinalizeable &f) { f.Finalize(); }
~TensorflowReceiver() {} ~TensorflowReceiver() {}
@@ -49,7 +49,7 @@ namespace tensorflow_parser {
template <typename Param> template <typename Param>
class TensorflowParserBuilder; class TensorflowParserBuilder;


class TensorflowWeightParserBuilder : public TensorflowFinalizeable {
class PARSER_FUNC_VISIBILITY TensorflowWeightParserBuilder : public TensorflowFinalizeable {
public: public:
virtual ~TensorflowWeightParserBuilder() {} virtual ~TensorflowWeightParserBuilder() {}
}; };
@@ -58,7 +58,7 @@ template <typename Param>
class TensorflowOpParserAdapter; class TensorflowOpParserAdapter;


template <typename Param> template <typename Param>
class TensorflowParserBuilder : public TensorflowWeightParserBuilder {
class PARSER_FUNC_VISIBILITY TensorflowParserBuilder : public TensorflowWeightParserBuilder {
public: public:
using ParseParamsFn = std::function<domi::Status(const domi::tensorflow::NodeDef *, Param *)>; using ParseParamsFn = std::function<domi::Status(const domi::tensorflow::NodeDef *, Param *)>;


@@ -91,7 +91,7 @@ class TensorflowParserBuilder : public TensorflowWeightParserBuilder {
}; };


template <typename Param> template <typename Param>
class TensorflowOpParserAdapter : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorflowOpParserAdapter : public TensorFlowOpParser {
using ParseParamsFn = std::function<domi::Status(const domi::tensorflow::NodeDef *, Param *)>; using ParseParamsFn = std::function<domi::Status(const domi::tensorflow::NodeDef *, Param *)>;


public: public:


+ 1
- 1
parser/tensorflow/tensorflow_ref_switch_parser.h View File

@@ -23,7 +23,7 @@
using domi::tensorflow::NodeDef; using domi::tensorflow::NodeDef;


namespace ge { namespace ge {
class TensorFlowRefSwitchParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowRefSwitchParser : public TensorFlowOpParser {
// AUTO GEN PLEASE DO NOT MODIFY IT // AUTO GEN PLEASE DO NOT MODIFY IT
public: public:
/** /**


+ 1
- 1
parser/tensorflow/tensorflow_reshape_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowReshapeParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowReshapeParser : public TensorFlowOpParser {
private: private:
Status ParseDesc(const domi::tensorflow::AttrValue &attr_value, ge::GeTensorDesc &ge_desc); Status ParseDesc(const domi::tensorflow::AttrValue &attr_value, ge::GeTensorDesc &ge_desc);




+ 1
- 1
parser/tensorflow/tensorflow_shape_n_parser.h View File

@@ -23,7 +23,7 @@
using domi::tensorflow::NodeDef; using domi::tensorflow::NodeDef;


namespace ge { namespace ge {
class TensorFlowShapeNParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowShapeNParser : public TensorFlowOpParser {
// AUTO GEN PLEASE DO NOT MODIFY IT // AUTO GEN PLEASE DO NOT MODIFY IT
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override;


+ 1
- 1
parser/tensorflow/tensorflow_squeeze_parser.h View File

@@ -20,7 +20,7 @@
#include "parser/tensorflow/tensorflow_op_parser.h" #include "parser/tensorflow/tensorflow_op_parser.h"


namespace ge { namespace ge {
class TensorFlowSqueezeParser : public TensorFlowOpParser {
class PARSER_FUNC_VISIBILITY TensorFlowSqueezeParser : public TensorFlowOpParser {
public: public:
Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override; Status ParseParams(const Message *op_src, ge::OpDescPtr &op_dest) override;




Loading…
Cancel
Save