| @@ -18,20 +18,20 @@ | |||||
| # compiling proto files generates some warnings, use no-unused-variable to suppress them | # compiling proto files generates some warnings, use no-unused-variable to suppress them | ||||
| set(CMAKE_CXX_FLAGS "-Wno-unused-variable ${CMAKE_CXX_FLAGS}") | set(CMAKE_CXX_FLAGS "-Wno-unused-variable ${CMAKE_CXX_FLAGS}") | ||||
| file(GLOB PROTO_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB PROTO_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| "../proto/fusion_model.proto" | |||||
| "../proto/optimizer_priority.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/fusion_model.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/optimizer_priority.proto" | |||||
| ) | ) | ||||
| file(GLOB PROTO_CLIENT_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB PROTO_CLIENT_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| "../proto/ge_api.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/ge_api.proto" | |||||
| ) | ) | ||||
| file(GLOB PROTO_HEADER_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB PROTO_HEADER_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| "../proto/om.proto" | |||||
| "../proto/task.proto" | |||||
| "../proto/insert_op.proto" | |||||
| "../proto/ge_ir.proto" | |||||
| "../proto/fwk_adapter.proto" | |||||
| "../proto/op_mapping_info.proto" | |||||
| "../proto/dump_task.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/om.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/task.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/insert_op.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/ge_ir.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/fwk_adapter.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/op_mapping_info.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/dump_task.proto" | |||||
| ) | ) | ||||
| ge_protobuf_generate(ge PROTO_SRCS PROTO_HDRS ${PROTO_LIST}) | ge_protobuf_generate(ge PROTO_SRCS PROTO_HDRS ${PROTO_LIST}) | ||||
| ge_protobuf_generate(ge PROTO_CLIENT_SRCS PROTO_CLIENT_HDRS ${PROTO_CLIENT_LIST}) | ge_protobuf_generate(ge PROTO_CLIENT_SRCS PROTO_CLIENT_HDRS ${PROTO_CLIENT_LIST}) | ||||
| @@ -15,10 +15,10 @@ | |||||
| # libge_common.so | # libge_common.so | ||||
| file(GLOB PROTO_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB PROTO_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| "../../proto/om.proto" | |||||
| "../../proto/ge_ir.proto" | |||||
| "../../proto/task.proto" | |||||
| "../../proto/insert_op.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/om.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/ge_ir.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/task.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/insert_op.proto" | |||||
| ) | ) | ||||
| file(GLOB SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| @@ -16,7 +16,7 @@ | |||||
| # libge_local_engine.so | # libge_local_engine.so | ||||
| # add all proto files, generate corresponding .h and .cc files | # add all proto files, generate corresponding .h and .cc files | ||||
| file(GLOB PROTO_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB PROTO_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| "../../proto/task.proto" | |||||
| "${GE_SOURCE_DIR}/metadef/proto/task.proto" | |||||
| ) | ) | ||||
| file(GLOB SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | file(GLOB SRC_LIST RELATIVE ${CMAKE_CURRENT_LIST_DIR} | ||||
| @@ -1,163 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| #ifndef INC_EXTERNAL_REGISTER_REGISTER_H_ | |||||
| #define INC_EXTERNAL_REGISTER_REGISTER_H_ | |||||
| #include <functional> | |||||
| #include <initializer_list> | |||||
| #include <map> | |||||
| #include <memory> | |||||
| #include <set> | |||||
| #include <string> | |||||
| #include <utility> | |||||
| #include <unordered_map> | |||||
| #include <vector> | |||||
| #include "graph/operator.h" | |||||
| #include "register/register_error_codes.h" | |||||
| #include "register/register_fmk_types.h" | |||||
| #include "register/register_types.h" | |||||
| using std::make_shared; | |||||
| using std::map; | |||||
| using std::pair; | |||||
| using std::string; | |||||
| using std::to_string; | |||||
| using std::unique_ptr; | |||||
| using std::vector; | |||||
| /*lint -e148*/ | |||||
| namespace ge { | |||||
| class Operator; | |||||
| class TensorDesc; | |||||
| class Tensor; | |||||
| class TBEPluginManager; | |||||
| } // namespace ge | |||||
| namespace google { | |||||
| namespace protobuf { | |||||
| class Message; | |||||
| } | |||||
| } // namespace google | |||||
| namespace domi { | |||||
| const int64_t kMaxNameLength = 1048576; // 1M | |||||
| enum DynamicType { kInvalid = 0, kInput = 1, kOutput = 2 }; | |||||
| struct DynamicInputOutputInfo { | |||||
| DynamicType type; // input/output | |||||
| const char *port_name; | |||||
| int64_t port_name_len; | |||||
| const char *attr_name; | |||||
| int64_t attr_name_len; | |||||
| DynamicInputOutputInfo() | |||||
| : type(kInvalid), port_name(nullptr), port_name_len(0), attr_name(nullptr), attr_name_len(0) {} | |||||
| DynamicInputOutputInfo(DynamicType type, const char *port_name, int64_t port_name_len, const char *attr_name, | |||||
| int64_t attr_name_len) | |||||
| : type(type), | |||||
| port_name(port_name), | |||||
| port_name_len(port_name_len), | |||||
| attr_name(attr_name), | |||||
| attr_name_len(attr_name_len) {} | |||||
| }; | |||||
| Status AutoMappingByOpFn(const ge::Operator &op_src, ge::Operator &op); | |||||
| Status AutoMappingByOpFnDynamic(const ge::Operator &op_src, ge::Operator &op, | |||||
| const vector<DynamicInputOutputInfo> &dynamic_name_attr_value); | |||||
| Status AutoMappingFn(const google::protobuf::Message *op_src, ge::Operator &op); | |||||
| Status AutoMappingFnDynamic(const google::protobuf::Message *op_src, ge::Operator &op, | |||||
| std::map<std::string, std::pair<std::string, std::string>> dynamic_name_attr_value, | |||||
| int in_pos = -1, int out_pos = -1); | |||||
| Status AutoMappingSubgraphIndex(const ge::Graph &graph, const std::function<int(int data_index)> &input, | |||||
| const std::function<int(int netoutput_index)> &output); | |||||
| Status AutoMappingSubgraphIndex(const ge::Graph &graph, | |||||
| const std::function<Status(int data_index, int &parent_input_index)> &input, | |||||
| const std::function<Status(int netoutput_index, int &parent_output_index)> &output); | |||||
| using google::protobuf::Message; | |||||
| class OpRegistrationDataImpl; | |||||
| using ParseParamFunc = std::function<domi::Status(const google::protobuf::Message *, ge::Operator &)>; | |||||
| using ParseParamByOpFunc = std::function<domi::Status(const ge::Operator &, ge::Operator &)>; | |||||
| using FusionParseParamFunc = | |||||
| std::function<domi::Status(const std::vector<const google::protobuf::Message *>, ge::Operator &)>; | |||||
| using FusionParseParamByOpFunc = std::function<domi::Status(const std::vector<ge::Operator> &, ge::Operator &)>; | |||||
| using ParseSubgraphFunc = std::function<Status(const std::string &subgraph_name, const ge::Graph &graph)>; | |||||
| class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY OpRegistrationData { | |||||
| public: | |||||
| OpRegistrationData(const std::string &om_optype); | |||||
| ~OpRegistrationData(); | |||||
| OpRegistrationData &FrameworkType(const domi::FrameworkType &fmk_type); | |||||
| OpRegistrationData &OriginOpType(const std::initializer_list<std::string> &ori_optype_list); | |||||
| OpRegistrationData &OriginOpType(const std::string &ori_optype); | |||||
| OpRegistrationData &ParseParamsFn(const ParseParamFunc &parseParamFn); | |||||
| OpRegistrationData &ParseParamsByOperatorFn(const ParseParamByOpFunc &parse_param_by_op_fn); | |||||
| OpRegistrationData &FusionParseParamsFn(const FusionParseParamFunc &fusionParseParamFn); | |||||
| OpRegistrationData &FusionParseParamsFn(const FusionParseParamByOpFunc &fusion_parse_param_fn); | |||||
| OpRegistrationData &ParseSubgraphPostFn(const ParseSubgraphFunc &subgraph_post_fn); | |||||
| OpRegistrationData &ImplyType(const domi::ImplyType &imply_type); | |||||
| OpRegistrationData &DelInputWithCond(int inputIdx, const std::string &attrName, bool attrValue); | |||||
| OpRegistrationData &DelInputWithOriginalType(int input_idx, const std::string &ori_type); | |||||
| OpRegistrationData &InputReorderVector(const vector<int> &input_order); | |||||
| domi::ImplyType GetImplyType() const; | |||||
| std::string GetOmOptype() const; | |||||
| std::set<std::string> GetOriginOpTypeSet() const; | |||||
| domi::FrameworkType GetFrameworkType() const; | |||||
| ParseParamFunc GetParseParamFn() const; | |||||
| ParseParamByOpFunc GetParseParamByOperatorFn() const; | |||||
| FusionParseParamFunc GetFusionParseParamFn() const; | |||||
| FusionParseParamByOpFunc GetFusionParseParamByOpFn() const; | |||||
| ParseSubgraphFunc GetParseSubgraphPostFn() const; | |||||
| private: | |||||
| std::shared_ptr<OpRegistrationDataImpl> impl_; | |||||
| friend class OpRegistry; | |||||
| friend class OpRegistrationTbe; | |||||
| friend class ge::TBEPluginManager; | |||||
| }; | |||||
| class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY OpReceiver { | |||||
| public: | |||||
| OpReceiver(OpRegistrationData ®_data); | |||||
| ~OpReceiver() {} | |||||
| }; | |||||
| #define REGISTER_CUSTOM_OP(name) REGISTER_CUSTOM_OP_UNIQ_HELPER(__COUNTER__, name) | |||||
| #define REGISTER_CUSTOM_OP_UNIQ_HELPER(ctr, name) REGISTER_CUSTOM_OP_UNIQ(ctr, name) | |||||
| #define REGISTER_CUSTOM_OP_UNIQ(ctr, name) \ | |||||
| static OpReceiver register_op##ctr __attribute__((unused)) = OpRegistrationData(name) | |||||
| } // namespace domi | |||||
| namespace ge { | |||||
| using OpRegistrationData = domi::OpRegistrationData; | |||||
| using OpReceiver = domi::OpReceiver; | |||||
| } // namespace ge | |||||
| /*lint +e148*/ | |||||
| #endif // INC_EXTERNAL_REGISTER_REGISTER_H_ | |||||
| @@ -1,39 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| #ifndef INC_EXTERNAL_REGISTER_REGISTER_ERROR_CODES_H_ | |||||
| #define INC_EXTERNAL_REGISTER_REGISTER_ERROR_CODES_H_ | |||||
| #define SYSID_FWK 3 // Subsystem ID | |||||
| #define MODID_COMMON 0 // Common module ID | |||||
| #define DECLARE_ERRORNO(sysid, modid, name, value) \ | |||||
| const domi::Status name = \ | |||||
| ((0xFF & ((uint8_t)sysid)) << 24) | ((0xFF & ((uint8_t)modid)) << 16) | (0xFFFF & ((uint16_t)value)); | |||||
| #define DECLARE_ERRORNO_COMMON(name, value) DECLARE_ERRORNO(SYSID_FWK, MODID_COMMON, name, value) | |||||
| namespace domi { | |||||
| using Status = uint32_t; | |||||
| // General error code | |||||
| DECLARE_ERRORNO(0, 0, SUCCESS, 0); | |||||
| DECLARE_ERRORNO(0xFF, 0xFF, FAILED, 0xFFFFFFFF); | |||||
| DECLARE_ERRORNO_COMMON(PARAM_INVALID, 1); // 50331649 | |||||
| DECLARE_ERRORNO(SYSID_FWK, 1, SCOPE_NOT_CHANGED, 201); | |||||
| } // namespace domi | |||||
| #endif // INC_EXTERNAL_REGISTER_REGISTER_ERROR_CODES_H_ | |||||
| @@ -1,37 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| #ifndef INC_EXTERNAL_REGISTER_REGISTER_FMK_TYPES_H_ | |||||
| #define INC_EXTERNAL_REGISTER_REGISTER_FMK_TYPES_H_ | |||||
| #include <string> | |||||
| namespace domi { | |||||
| /// | |||||
| /// @ingroup domi_omg | |||||
| /// @brief AI framework types | |||||
| /// | |||||
| enum FrameworkType { | |||||
| CAFFE = 0, | |||||
| MINDSPORE = 1, | |||||
| TENSORFLOW = 3, | |||||
| ANDROID_NN, | |||||
| ONNX, | |||||
| FRAMEWORK_RESERVED, | |||||
| }; | |||||
| } // namespace domi | |||||
| #endif // INC_EXTERNAL_REGISTER_REGISTER_FMK_TYPES_H_ | |||||
| @@ -1,59 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| #ifndef INC_EXTERNAL_REGISTER_REGISTER_TYPES_H_ | |||||
| #define INC_EXTERNAL_REGISTER_REGISTER_TYPES_H_ | |||||
| namespace domi { | |||||
| #ifdef HOST_VISIBILITY | |||||
| #define FMK_FUNC_HOST_VISIBILITY __attribute__((visibility("default"))) | |||||
| #else | |||||
| #define FMK_FUNC_HOST_VISIBILITY | |||||
| #endif | |||||
| #ifdef DEV_VISIBILITY | |||||
| #define FMK_FUNC_DEV_VISIBILITY __attribute__((visibility("default"))) | |||||
| #else | |||||
| #define FMK_FUNC_DEV_VISIBILITY | |||||
| #endif | |||||
| /// CCE defined constant | |||||
| /// | |||||
| /// @ingroup domi | |||||
| /// @brief original tensor type | |||||
| /// | |||||
| typedef enum tagDomiTensorFormat { | |||||
| DOMI_TENSOR_NCHW = 0, // < NCHW | |||||
| DOMI_TENSOR_NHWC, // < NHWC | |||||
| DOMI_TENSOR_ND, // < Nd Tensor | |||||
| DOMI_TENSOR_NC1HWC0, // < NC1HWC0 | |||||
| DOMI_TENSOR_FRACTAL_Z, // < FRACTAL_Z | |||||
| DOMI_TENSOR_NC1C0HWPAD, | |||||
| DOMI_TENSOR_NHWC1C0, | |||||
| DOMI_TENSOR_FSR_NCHW, | |||||
| DOMI_TENSOR_FRACTAL_DECONV, | |||||
| DOMI_TENSOR_BN_WEIGHT, | |||||
| DOMI_TENSOR_CHWN, // Android NN Depth CONV | |||||
| DOMI_TENSOR_FILTER_HWCK, // filter input tensor format | |||||
| DOMI_TENSOR_NDHWC, | |||||
| DOMI_TENSOR_NCDHW, | |||||
| DOMI_TENSOR_DHWCN, // 3D filter input tensor format | |||||
| DOMI_TENSOR_DHWNC, | |||||
| DOMI_TENSOR_RESERVED | |||||
| } domiTensorFormat_t; | |||||
| } // namespace domi | |||||
| #endif // INC_EXTERNAL_REGISTER_REGISTER_TYPES_H_ | |||||
| @@ -1,334 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| #ifndef EXTERNAL_REGISTER_SCOPE_SCOPE_FUSION_PASS_REGISTER_H_ | |||||
| #define EXTERNAL_REGISTER_SCOPE_SCOPE_FUSION_PASS_REGISTER_H_ | |||||
| #include <memory> | |||||
| #include <string> | |||||
| #include <vector> | |||||
| #include <map> | |||||
| #include <unordered_map> | |||||
| #include "ge/ge_api_error_codes.h" | |||||
| #include "register/register_error_codes.h" | |||||
| #include "register/register_types.h" | |||||
| #include "graph/operator.h" | |||||
| #define CHECK_INNER_NODE_CONDITION(cond, fusion_rlt) \ | |||||
| do { \ | |||||
| if (!(cond)) { \ | |||||
| if ((fusion_rlt) != nullptr) { \ | |||||
| (fusion_rlt)->SetType(ge::kScopeInvalidType); \ | |||||
| } \ | |||||
| return; \ | |||||
| } \ | |||||
| } while (0) | |||||
| namespace domi { | |||||
| class TensorFlowModelParser; | |||||
| } // namespace domi | |||||
| namespace ge { | |||||
| const int32_t kFusionDisableIndex = 99999; | |||||
| const char *const kScopeToMultiNodes = "ScopeToMultiNodes"; | |||||
| const char *const kScopeInvalidType = "ScopeInvalidType"; | |||||
| const char *const kInputFromFusionScope = "InputFromFusionScope"; | |||||
| const char *const kOutputToFusionScope = "OutputToFusionScope"; | |||||
| class ScopePattern; | |||||
| using ScopeFusionPatterns = std::vector<std::vector<ScopePattern *>>; | |||||
| class ScopePassManager; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY Scope { | |||||
| public: | |||||
| Scope(); | |||||
| Status Init(const std::string &name, const std::string &sub_type = "", Scope *father_scope = nullptr); | |||||
| ~Scope(); | |||||
| const std::string &Name() const; | |||||
| const std::string &SubType() const; | |||||
| const std::unordered_map<std::string, ge::OperatorPtr> &AllNodesMap() const; | |||||
| Scope *GetSubScope(const std::string &scope_name) const; | |||||
| const std::string LastName() const; | |||||
| const std::vector<Scope *> &GetAllSubScopes() const; | |||||
| const Scope *GetFatherScope() const; | |||||
| private: | |||||
| class ScopeImpl; | |||||
| std::unique_ptr<ScopeImpl> impl_; | |||||
| friend class ScopeBasePass; | |||||
| friend class ScopeTree; | |||||
| friend class NodeOpTypeFeature; | |||||
| friend class NodeAttrFeature; | |||||
| friend class ScopeFeature; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY FusionScopesResult { | |||||
| public: | |||||
| FusionScopesResult(); | |||||
| Status Init(); | |||||
| ~FusionScopesResult(); | |||||
| void SetName(const std::string &name); | |||||
| void SetType(const std::string &type); | |||||
| void SetDescription(const std::string &description); | |||||
| const std::string &Name() const; | |||||
| const std::vector<ge::OperatorPtr> &Nodes() const; | |||||
| void InsertInputs(const std::string &inner_op_name, const std::vector<int32_t> &index_map); | |||||
| void InsertOutputs(const std::string &inner_op_name, const std::vector<int32_t> &index_map); | |||||
| class InnerNodeInfo { | |||||
| public: | |||||
| explicit InnerNodeInfo(const std::string &fusion_node_name); | |||||
| InnerNodeInfo(const std::string &fusion_node_name, const std::string &name, const std::string &type); | |||||
| InnerNodeInfo(InnerNodeInfo &&other) noexcept; | |||||
| InnerNodeInfo &operator=(InnerNodeInfo &&other) noexcept; | |||||
| InnerNodeInfo(const InnerNodeInfo &) = delete; | |||||
| InnerNodeInfo &operator=(const InnerNodeInfo &) = delete; | |||||
| ~InnerNodeInfo(); | |||||
| InnerNodeInfo &SetName(const std::string &name); | |||||
| InnerNodeInfo &SetType(const std::string &type); | |||||
| InnerNodeInfo &InsertInput(const std::string &input_node, int32_t peer_out_idx); | |||||
| InnerNodeInfo &InsertOutput(const std::string &output_node, int32_t peer_in_idx); | |||||
| ge::graphStatus BuildInnerNode(); | |||||
| ge::graphStatus SetInputFormat(const std::string &input_name, const std::string &format); | |||||
| ge::graphStatus SetOutputFormat(const std::string &output_name, const std::string &format); | |||||
| ge::graphStatus SetDynamicInputFormat(const std::string &input_name, uint32_t index, const std::string &format); | |||||
| ge::graphStatus SetDynamicOutputFormat(const std::string &output_name, uint32_t index, const std::string &format); | |||||
| ge::Operator *MutableOperator(); | |||||
| std::string GetName() const; | |||||
| std::string GetType() const; | |||||
| std::vector<std::pair<std::string, int32_t>> GetInputs() const; | |||||
| std::vector<std::pair<std::string, int32_t>> GetOutputs() const; | |||||
| private: | |||||
| class InnerNodeInfoImpl; | |||||
| std::unique_ptr<InnerNodeInfoImpl> impl_; | |||||
| }; | |||||
| InnerNodeInfo *AddInnerNode(const std::string &name, const std::string &type); | |||||
| InnerNodeInfo *MutableRecentInnerNode(); | |||||
| InnerNodeInfo *MutableInnerNode(uint32_t index); | |||||
| ge::graphStatus CheckInnerNodesInfo(); | |||||
| private: | |||||
| class FusionScopesResultImpl; | |||||
| std::unique_ptr<FusionScopesResultImpl> impl_; | |||||
| friend class ScopeGraph; | |||||
| friend class ScopeBasePass; | |||||
| friend class TensorFlowModelParser; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeTree { | |||||
| public: | |||||
| ScopeTree(); | |||||
| Status Init(); | |||||
| ScopeTree(const ScopeTree &scopetree) = delete; | |||||
| ScopeTree &operator=(const ScopeTree &scopetree) = delete; | |||||
| ~ScopeTree(); | |||||
| const std::vector<Scope *> &GetAllScopes() const; | |||||
| private: | |||||
| class ScopeTreeImpl; | |||||
| std::unique_ptr<ScopeTreeImpl> impl_; | |||||
| friend class ScopeGraph; | |||||
| friend class ScopeBasePass; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeGraph { | |||||
| public: | |||||
| ScopeGraph(); | |||||
| Status Init(); | |||||
| ScopeGraph(const ScopeGraph &scope_graph) = delete; | |||||
| ScopeGraph &operator=(const ScopeGraph &scope_graph) = delete; | |||||
| ~ScopeGraph(); | |||||
| const ScopeTree *GetScopeTree() const; | |||||
| const std::unordered_map<std::string, ge::OperatorPtr> &GetNodesMap() const; | |||||
| private: | |||||
| class ScopeGraphImpl; | |||||
| std::unique_ptr<ScopeGraphImpl> impl_; | |||||
| friend class ScopePassManager; | |||||
| friend class ScopeBasePass; | |||||
| friend class TensorFlowModelParser; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeAttrValue { | |||||
| public: | |||||
| ScopeAttrValue(); | |||||
| ScopeAttrValue(ScopeAttrValue const &attr_value); | |||||
| ScopeAttrValue &operator=(ScopeAttrValue const &attr_value); | |||||
| ~ScopeAttrValue(); | |||||
| void SetIntValue(int64_t value); | |||||
| void SetFloatValue(float value); | |||||
| void SetStringValue(std::string value); | |||||
| void SetBoolValue(bool value); | |||||
| private: | |||||
| class ScopeAttrValueImpl; | |||||
| std::unique_ptr<ScopeAttrValueImpl> impl_; | |||||
| friend class NodeAttrFeature; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeBaseFeature { | |||||
| public: | |||||
| virtual bool Match(const Scope *scope) = 0; | |||||
| virtual ~ScopeBaseFeature(){}; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY NodeOpTypeFeature : ScopeBaseFeature { | |||||
| public: | |||||
| NodeOpTypeFeature(std::string nodeType, int num, int step = 0); | |||||
| NodeOpTypeFeature(NodeOpTypeFeature const &feature); | |||||
| NodeOpTypeFeature &operator=(NodeOpTypeFeature const &feature); | |||||
| ~NodeOpTypeFeature(); | |||||
| bool Match(const Scope *scope) override; | |||||
| private: | |||||
| class NodeOpTypeFeatureImpl; | |||||
| std::unique_ptr<NodeOpTypeFeatureImpl> impl_; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY NodeAttrFeature : ScopeBaseFeature { | |||||
| public: | |||||
| NodeAttrFeature(std::string nodeType, std::string attr_name, ge::DataType datatype, ScopeAttrValue &attr_value); | |||||
| NodeAttrFeature(NodeAttrFeature const &feature); | |||||
| NodeAttrFeature &operator=(NodeAttrFeature const &feature); | |||||
| ~NodeAttrFeature(); | |||||
| bool Match(const Scope *scope) override; | |||||
| private: | |||||
| class NodeAttrFeatureImpl; | |||||
| std::unique_ptr<NodeAttrFeatureImpl> impl_; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeFeature : ScopeBaseFeature { | |||||
| public: | |||||
| ScopeFeature(std::string sub_type, int32_t num, std::string suffix = "", std::string sub_scope_mask = "", | |||||
| int step = 0); | |||||
| ScopeFeature(ScopeFeature const &feature); | |||||
| ScopeFeature &operator=(ScopeFeature const &feature); | |||||
| ~ScopeFeature(); | |||||
| bool Match(const Scope *scope) override; | |||||
| private: | |||||
| class ScopeFeatureImpl; | |||||
| std::unique_ptr<ScopeFeatureImpl> impl_; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopePattern { | |||||
| public: | |||||
| ScopePattern(); | |||||
| ~ScopePattern(); | |||||
| ScopePattern &SetSubType(const std::string &sub_type); | |||||
| ScopePattern &AddNodeOpTypeFeature(NodeOpTypeFeature feature); | |||||
| ScopePattern &AddNodeAttrFeature(NodeAttrFeature feature); | |||||
| ScopePattern &AddScopeFeature(ScopeFeature feature); | |||||
| private: | |||||
| class ScopePatternImpl; | |||||
| std::unique_ptr<ScopePatternImpl> impl_; | |||||
| friend class ScopeBasePass; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopesResult { | |||||
| public: | |||||
| ScopesResult(); | |||||
| ScopesResult(ScopesResult const &result); | |||||
| ScopesResult &operator=(ScopesResult const &result); | |||||
| ~ScopesResult(); | |||||
| void SetScopes(std::vector<Scope *> &scopes); | |||||
| void SetNodes(std::vector<ge::OperatorPtr> &nodes); | |||||
| private: | |||||
| class ScopesResultImpl; | |||||
| std::unique_ptr<ScopesResultImpl> impl_; | |||||
| friend class ScopeBasePass; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeBasePass { | |||||
| public: | |||||
| ScopeBasePass(); | |||||
| virtual ~ScopeBasePass(); | |||||
| protected: | |||||
| // Subclasses implement respective fusion strategies and build the Patterns | |||||
| virtual std::vector<ScopeFusionPatterns> DefinePatterns() = 0; | |||||
| // Define the name of the scope pass | |||||
| virtual std::string PassName() = 0; | |||||
| // Subclasses implement respective multi-scope or operator fusion methods across scopes | |||||
| virtual Status LastMatchScopesAndOPs(std::shared_ptr<ScopeGraph> &scope_graph, | |||||
| std::vector<ScopesResult> &results) = 0; | |||||
| // Subclasses implement their own results and set the input and output of the final fusion operator | |||||
| virtual void GenerateFusionResult(const std::vector<Scope *> &scopes, FusionScopesResult *fusion_rlt) = 0; | |||||
| private: | |||||
| class ScopeBasePassImpl; | |||||
| std::unique_ptr<ScopeBasePassImpl> impl_; | |||||
| friend class ge::ScopePassManager; | |||||
| friend class ScopeBasePassImpl; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeFusionPassRegistry { | |||||
| public: | |||||
| using CreateFn = ScopeBasePass *(*)(); | |||||
| ~ScopeFusionPassRegistry(); | |||||
| static ScopeFusionPassRegistry &GetInstance() { | |||||
| static ScopeFusionPassRegistry instance; | |||||
| return instance; | |||||
| } | |||||
| void RegisterScopeFusionPass(const std::string &pass_name, CreateFn create_fn, bool is_general); | |||||
| private: | |||||
| ScopeFusionPassRegistry(); | |||||
| class ScopeFusionPassRegistryImpl; | |||||
| /*lint -e148*/ | |||||
| std::unique_ptr<ScopeFusionPassRegistryImpl> impl_; | |||||
| friend class TensorFlowModelParser; | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeUtil { | |||||
| public: | |||||
| static std::string StringReplaceAll(std::string str, const std::string &old_value, const std::string &new_value); | |||||
| static void FreeScopePatterns(ScopeFusionPatterns &patterns); | |||||
| static void FreeOneBatchPattern(std::vector<ScopePattern *> &one_batch_pattern); | |||||
| }; | |||||
| class GE_FUNC_HOST_VISIBILITY GE_FUNC_DEV_VISIBILITY ScopeFusionPassRegistrar { | |||||
| public: | |||||
| ScopeFusionPassRegistrar(const char *pass_name, ScopeBasePass *(*create_fn)(), bool is_general); | |||||
| ~ScopeFusionPassRegistrar() {} | |||||
| }; | |||||
| #define REGISTER_SCOPE_FUSION_PASS(pass_name, scope_pass, is_general) \ | |||||
| REGISTER_SCOPE_FUSION_PASS_UNIQ_HELPER(__COUNTER__, pass_name, scope_pass, is_general) | |||||
| #define REGISTER_SCOPE_FUSION_PASS_UNIQ_HELPER(ctr, pass_name, scope_pass, is_general) \ | |||||
| REGISTER_SCOPE_FUSION_PASS_UNIQ(ctr, pass_name, scope_pass, is_general) | |||||
| #define REGISTER_SCOPE_FUSION_PASS_UNIQ(ctr, pass_name, scope_pass, is_general) \ | |||||
| static ::ge::ScopeFusionPassRegistrar register_scope_fusion_pass##ctr __attribute__((unused)) = \ | |||||
| ::ge::ScopeFusionPassRegistrar( \ | |||||
| pass_name, []() -> ::ge::ScopeBasePass * { return new (std::nothrow) scope_pass(); }, is_general) | |||||
| } // namespace ge | |||||
| #endif // EXTERNAL_REGISTER_SCOPE_SCOPE_FUSION_PASS_REGISTER_H_ | |||||
| @@ -1,127 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package toolkit.dumpdata; | |||||
| enum OutputDataType { | |||||
| DT_UNDEFINED = 0; | |||||
| DT_FLOAT = 1; | |||||
| DT_FLOAT16 = 2; | |||||
| DT_INT8 = 3; | |||||
| DT_UINT8 = 4; | |||||
| DT_INT16 = 5; | |||||
| DT_UINT16 = 6; | |||||
| DT_INT32 = 7; | |||||
| DT_INT64 = 8; | |||||
| DT_UINT32 = 9; | |||||
| DT_UINT64 = 10; | |||||
| DT_BOOL = 11; | |||||
| DT_DOUBLE = 12; | |||||
| DT_STRING = 13; | |||||
| DT_DUAL_SUB_INT8 = 14; | |||||
| DT_DUAL_SUB_UINT8 = 15; | |||||
| DT_COMPLEX64 = 16; | |||||
| DT_COMPLEX128 = 17; | |||||
| DT_QINT8 = 18; | |||||
| DT_QINT16 = 19; | |||||
| DT_QINT32 = 20; | |||||
| DT_QUINT8 = 21; | |||||
| DT_QUINT16 = 22; | |||||
| DT_RESOURCE = 23; | |||||
| DT_STRING_REF = 24; | |||||
| DT_DUAL = 25; | |||||
| } | |||||
| enum OutputFormat { | |||||
| FORMAT_NCHW = 0; | |||||
| FORMAT_NHWC = 1; | |||||
| FORMAT_ND = 2; | |||||
| FORMAT_NC1HWC0 = 3; | |||||
| FORMAT_FRACTAL_Z = 4; | |||||
| FORMAT_NC1C0HWPAD = 5; | |||||
| FORMAT_NHWC1C0 = 6; | |||||
| FORMAT_FSR_NCHW = 7; | |||||
| FORMAT_FRACTAL_DECONV = 8; | |||||
| FORMAT_C1HWNC0 = 9; | |||||
| FORMAT_FRACTAL_DECONV_TRANSPOSE = 10; | |||||
| FORMAT_FRACTAL_DECONV_SP_STRIDE_TRANS = 11; | |||||
| FORMAT_NC1HWC0_C04 = 12; | |||||
| FORMAT_FRACTAL_Z_C04 = 13; | |||||
| FORMAT_CHWN = 14; | |||||
| FORMAT_FRACTAL_DECONV_SP_STRIDE8_TRANS = 15; | |||||
| FORMAT_HWCN = 16; | |||||
| FORMAT_NC1KHKWHWC0 = 17; | |||||
| FORMAT_BN_WEIGHT = 18; | |||||
| FORMAT_FILTER_HWCK = 19; | |||||
| FORMAT_HASHTABLE_LOOKUP_LOOKUPS=20; | |||||
| FORMAT_HASHTABLE_LOOKUP_KEYS = 21; | |||||
| FORMAT_HASHTABLE_LOOKUP_VALUE = 22; | |||||
| FORMAT_HASHTABLE_LOOKUP_OUTPUT = 23; | |||||
| FORMAT_HASHTABLE_LOOKUP_HITS=24; | |||||
| FORMAT_C1HWNCoC0 = 25; | |||||
| FORMAT_MD = 26; | |||||
| FORMAT_NDHWC = 27; | |||||
| FORMAT_FRACTAL_ZZ = 28; | |||||
| FORMAT_FRACTAL_NZ = 29; | |||||
| FORMAT_RESERVED = 30; | |||||
| } | |||||
| message OriginalOp { | |||||
| string name = 1; | |||||
| uint32 output_index = 2; | |||||
| OutputDataType data_type = 3; | |||||
| OutputFormat format = 4; | |||||
| } | |||||
| message Shape { | |||||
| repeated uint64 dim = 1; | |||||
| } | |||||
| message OpOutput { | |||||
| OutputDataType data_type = 1; | |||||
| OutputFormat format = 2; | |||||
| Shape shape = 3; | |||||
| OriginalOp original_op = 4; // the original op corresponding to the output | |||||
| bytes data = 5; | |||||
| uint64 size = 6; | |||||
| } | |||||
| message OpInput { | |||||
| OutputDataType data_type = 1; | |||||
| OutputFormat format = 2; | |||||
| Shape shape = 3; | |||||
| bytes data = 4; | |||||
| uint64 size = 5; | |||||
| } | |||||
| enum BufferType { | |||||
| L1 = 0; | |||||
| } | |||||
| message OpBuffer { | |||||
| BufferType buffer_type = 1; | |||||
| bytes data = 2; | |||||
| uint64 size = 3; | |||||
| } | |||||
| message DumpData{ | |||||
| string version = 1; | |||||
| uint64 dump_time = 2; | |||||
| repeated OpOutput output = 3; | |||||
| repeated OpInput input = 4; | |||||
| repeated OpBuffer buffer = 5; | |||||
| } | |||||
| @@ -1,26 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| import "om.proto"; | |||||
| package domi; | |||||
| message FusionModelDef { | |||||
| string version = 1; | |||||
| repeated OpDef fusion_op = 2; | |||||
| } | |||||
| @@ -1,42 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package aicpu.FWKAdapter; | |||||
| option cc_enable_arenas = true; | |||||
| // Defines an struct for input and output. | |||||
| message TensorDataInfo { | |||||
| // value DataType | |||||
| uint32 dtype = 1; | |||||
| // shape dim | |||||
| repeated int64 dim = 2; | |||||
| // data point addr | |||||
| int64 data_addr = 3; | |||||
| } | |||||
| message KernelRunParam { | |||||
| // input | |||||
| repeated TensorDataInfo input = 1; | |||||
| // output | |||||
| repeated TensorDataInfo output = 2; | |||||
| } | |||||
| @@ -1,104 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package ge.api_pb; | |||||
| import "ge_ir.proto"; | |||||
| // GE initialize | |||||
| message GEInitialize { | |||||
| map<string, string> options = 1; | |||||
| }; | |||||
| // initialize response | |||||
| message GEInitializeResponse { | |||||
| uint32 status = 1; | |||||
| uint32 clientId = 2; | |||||
| }; | |||||
| // GE finalize | |||||
| message GEFinalize { | |||||
| bool final = 1; | |||||
| uint32 clientId = 2; | |||||
| }; | |||||
| message GEFinalizeResponse { | |||||
| uint32 status = 1; | |||||
| }; | |||||
| // GE Session | |||||
| message CreateSession{ | |||||
| map<string, string> options = 1; | |||||
| }; | |||||
| message CreateSessionResponse { | |||||
| uint32 status = 1; | |||||
| uint64 sessionId = 2; | |||||
| }; | |||||
| //GE AddGraph | |||||
| //model serialize :: serializegraph | |||||
| message SessionAddGraph{ | |||||
| uint32 graphId = 1; | |||||
| uint64 sessionId = 2; | |||||
| ge.proto.GraphDef graph = 3; | |||||
| }; | |||||
| message SessionAddGraphResponse { | |||||
| uint32 status = 1; | |||||
| }; | |||||
| //GE SessionRemoveGraph | |||||
| message SessionRemoveGraph{ | |||||
| uint32 graphId = 1; | |||||
| uint64 sessionId = 2; | |||||
| }; | |||||
| message SessionRemoveGraphResponse { | |||||
| uint32 status = 1; | |||||
| }; | |||||
| message SessionRunGraph{ | |||||
| uint32 graphId = 1; | |||||
| uint64 sessionId = 2; | |||||
| repeated ge.proto.TensorDef tensor = 3; | |||||
| }; | |||||
| message SessionBuildGraph{ | |||||
| uint32 graphId = 1; | |||||
| uint64 sessionId = 2; | |||||
| repeated ge.proto.TensorDef tensor = 3; | |||||
| string savePath = 4; | |||||
| }; | |||||
| message SessionRunGraphResponse { | |||||
| uint32 status = 1; | |||||
| repeated ge.proto.TensorDef tensor = 2; | |||||
| }; | |||||
| message SessionBuildGraphResponse { | |||||
| uint32 status = 1; | |||||
| }; | |||||
| message DestroySession{ | |||||
| bool final = 1; | |||||
| uint64 sessionId = 2; | |||||
| }; | |||||
| message DestroySessionResponse { | |||||
| uint32 status = 1; | |||||
| }; | |||||
| @@ -1,206 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package ge.proto; | |||||
| enum DataType | |||||
| { | |||||
| DT_UNDEFINED = 0; // Used to indicate a DataType field has not been set. | |||||
| DT_FLOAT = 1; // float type | |||||
| DT_FLOAT16 = 2; // fp16 type | |||||
| DT_INT8 = 3; // int8 type | |||||
| DT_UINT8 = 4; // uint8 type | |||||
| DT_INT16 = 5; // int16 type | |||||
| DT_UINT16 = 6; // uint16 type | |||||
| DT_INT32 = 7; // | |||||
| DT_INT64 = 8; // int64 type | |||||
| DT_UINT32 = 9; // unsigned int32 | |||||
| DT_UINT64 = 10; // unsigned int64 | |||||
| DT_BOOL = 11; // bool type | |||||
| DT_DOUBLE = 12; // double type | |||||
| DT_STRING = 13; // string type | |||||
| DT_DUAL_SUB_INT8 = 14; /**< dual output int8 type */ | |||||
| DT_DUAL_SUB_UINT8 = 15; /**< dual output uint8 type */ | |||||
| DT_COMPLEX64 = 16; // complex64 type | |||||
| DT_COMPLEX128 = 17; // complex128 type | |||||
| DT_QINT8 = 18; // qint8 type | |||||
| DT_QINT16 = 19; // qint16 type | |||||
| DT_QINT32 = 20; // qint32 type | |||||
| DT_QUINT8 = 21; // quint8 type | |||||
| DT_QUINT16 = 22; // quint16 type | |||||
| DT_RESOURCE = 23; // resource type | |||||
| DT_STRING_REF = 24; // string_ref type | |||||
| DT_DUAL = 25; /**< dual output type */ | |||||
| } | |||||
| message AttrDef | |||||
| { | |||||
| message ListValue | |||||
| { | |||||
| enum ListValueType{ | |||||
| VT_LIST_NONE = 0; | |||||
| VT_LIST_STRING = 1; | |||||
| VT_LIST_INT = 2; | |||||
| VT_LIST_FLOAT = 3; | |||||
| VT_LIST_BOOL = 4; | |||||
| VT_LIST_BYTES = 5; | |||||
| VT_LIST_TENSOR_DESC = 6; | |||||
| VT_LIST_TENSOR = 7; | |||||
| VT_LIST_GRAPH = 8; | |||||
| VT_LIST_NAMED_ATTRS = 9; | |||||
| VT_LIST_DATA_TYPE = 10; | |||||
| } | |||||
| repeated bytes s = 2; // "list(string)" | |||||
| repeated int64 i = 3; // "list(int)" | |||||
| repeated float f = 4; // "list(float)" | |||||
| repeated bool b = 5; // "list(bool)" | |||||
| repeated bytes bt = 7; | |||||
| repeated TensorDescriptor td = 8; | |||||
| repeated TensorDef t = 9; | |||||
| repeated GraphDef g = 10; | |||||
| repeated NamedAttrs na = 11; | |||||
| repeated int64 dt = 12; // list ge::DataType | |||||
| ListValueType val_type = 20; | |||||
| } | |||||
| message ListListInt{ | |||||
| message ListInt{ | |||||
| repeated int64 list_i = 1; // list int | |||||
| } | |||||
| repeated ListInt list_list_i = 1; // list list int | |||||
| } | |||||
| oneof value | |||||
| { | |||||
| bytes s = 2; // "string" | |||||
| int64 i = 3; // "int" | |||||
| float f = 4; // "float" | |||||
| bool b = 5; // "bool" | |||||
| bytes bt = 7; | |||||
| ListValue list = 1; // any "list(...)" | |||||
| NamedAttrs func = 10; // Used to support attr nesting | |||||
| TensorDescriptor td = 11; // GeTensorDesc type | |||||
| TensorDef t = 12; // GeTensor type | |||||
| GraphDef g = 13; // Graph type | |||||
| ListListInt list_list_int = 14; // List List Int type | |||||
| int64 dt = 15; // ge::DataType | |||||
| } | |||||
| } | |||||
| // A list of attr names and their values. The whole list is attached | |||||
| // with a string name. E.g., MatMul[T=float]. | |||||
| message NamedAttrs | |||||
| { | |||||
| string name = 1; | |||||
| map<string, AttrDef> attr = 2; | |||||
| } | |||||
| // Shape / dimension description, using row-major order | |||||
| message ShapeDef | |||||
| { | |||||
| repeated int64 dim = 1; // Size of each dimension | |||||
| } | |||||
| // Multidimensional data description | |||||
| message TensorDescriptor | |||||
| { | |||||
| string name = 1; // Optional parameter, tensor name | |||||
| DataType dtype = 2; // tensor datatype | |||||
| ShapeDef shape = 3; // Shape / dimension | |||||
| string layout = 4; // Tensor format, eg: "NCHW", "NHWC", "CHW", "ND" | |||||
| bool has_out_attr = 9; | |||||
| int64 size = 10; | |||||
| int64 weight_size = 11; | |||||
| bool reuse_input = 12; | |||||
| bool output_tensor = 13; | |||||
| string device_type = 14; | |||||
| bool input_tensor =15; | |||||
| int64 real_dim_cnt = 16; | |||||
| int64 reuse_input_index = 17; | |||||
| int64 data_offset = 18; | |||||
| int64 cmps_size = 19; | |||||
| string cmps_tab = 20; | |||||
| int64 cmps_tab_offset = 21; | |||||
| map<string, AttrDef> attr = 5; // Set of extra parameter fields | |||||
| } | |||||
| // GeTensor definition | |||||
| message TensorDef | |||||
| { | |||||
| TensorDescriptor desc = 1; // Tensor description | |||||
| bytes data = 2; // Tensor data | |||||
| } | |||||
| // Operator description | |||||
| message OpDef | |||||
| { | |||||
| string name = 1; // name | |||||
| string type = 2; // type | |||||
| repeated string input = 5; // input original op name + outgoing index. op_name:index | |||||
| map<string, AttrDef> attr = 10; // Set of operator parameter fields | |||||
| bool has_out_attr = 20; | |||||
| int64 id = 21; | |||||
| int64 stream_id =22; | |||||
| repeated string input_name = 23; | |||||
| repeated string src_name = 24; | |||||
| repeated int64 src_index = 25; | |||||
| repeated string dst_name = 26; | |||||
| repeated int64 dst_index = 27; | |||||
| repeated int64 input_i = 28; | |||||
| repeated int64 output_i = 29; | |||||
| repeated int64 workspace = 30; | |||||
| repeated int64 workspace_bytes = 31; | |||||
| repeated bool is_input_const = 32; | |||||
| repeated TensorDescriptor input_desc = 33; | |||||
| repeated TensorDescriptor output_desc = 34; | |||||
| repeated string subgraph_name = 35; | |||||
| } | |||||
| // Graph definition | |||||
| message GraphDef | |||||
| { | |||||
| string name = 1; // name | |||||
| repeated string input = 4; // Graph input | |||||
| repeated string output = 5; // Graph output | |||||
| repeated OpDef op = 6; // List of operators | |||||
| map<string, AttrDef> attr = 11; // Extended field | |||||
| } | |||||
| // model definition | |||||
| message ModelDef | |||||
| { | |||||
| string name = 1; // name | |||||
| uint32 version = 2; // IR Proto verion | |||||
| string custom_version = 3; // User model version number, passed in by user | |||||
| repeated GraphDef graph = 7; // Graph definition,graph[0] represents the main diagram in modeldef | |||||
| map<string, AttrDef> attr = 11; // Extended field | |||||
| } | |||||
| @@ -1,152 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package domi; | |||||
| message InsertNewOps { | |||||
| repeated AippOpParams aipp_op = 1; | |||||
| repeated MultiShapeOpParams multi_shape_op = 2; | |||||
| } | |||||
| message AippOpParams { | |||||
| enum InputFormat { | |||||
| UNDEFINED = 0; | |||||
| YUV420SP_U8 = 1; | |||||
| XRGB8888_U8 = 2; | |||||
| RGB888_U8 = 3; | |||||
| YUV400_U8 = 4; | |||||
| NC1HWC0DI_FP16 = 5; | |||||
| NC1HWC0DI_S8 = 6; | |||||
| ARGB8888_U8 = 7; | |||||
| YUYV_U8 = 8; | |||||
| YUV422SP_U8 = 9; | |||||
| AYUV444_U8 = 10; | |||||
| RAW10 = 11; | |||||
| RAW12 = 12; | |||||
| RAW16 = 13; | |||||
| RAW24 = 14; | |||||
| RGB16 = 15; | |||||
| RGB20 = 16; | |||||
| RGB24 = 17; | |||||
| RGB8_IR = 18; | |||||
| RGB16_IR = 19; | |||||
| RGB24_IR = 20; | |||||
| } | |||||
| enum AippMode { | |||||
| undefined = 0; | |||||
| static = 1; | |||||
| dynamic = 2; | |||||
| } | |||||
| // AIPP模式,区分静态AIPP和动态AIPP | |||||
| AippMode aipp_mode = 1; | |||||
| // related_input_rank参数为必填,类型为整型,配置范围>=0, <=输入Data算子的个数,默认值为0。 | |||||
| // 标识对模型的第几个输入做AIPP处理,例如模型有两个输入,需要对第2个输入做AIPP,则配置related_input_rank为1。 | |||||
| uint32 related_input_rank = 2; | |||||
| // input_edge_idx参数为可选,类型为整型,配置范围为>=0。 | |||||
| // 配置该参数的作用,在于对Data算子不同的输出做不同的AIPP处理,如果该参数没有配置,默认对related_input_rank指定的模型输入的所有输出边做AIPP。 | |||||
| // 配置值 <= Data算子输出边的个数。 | |||||
| repeated uint32 input_edge_idx = 3; | |||||
| // [Begin] 动态AIPP参数,配置静态AIPP时无效 | |||||
| uint32 max_src_image_size = 4; | |||||
| // 是否支持旋转。默认不支持,开启支持旋转时,会有额外的空间和性能损失 | |||||
| bool support_rotation = 5; | |||||
| // [End] 动态AIPP参数 | |||||
| // [Begin] 静态AIPP参数,配置动态AIPP时无效 | |||||
| InputFormat input_format = 51; | |||||
| bool csc_switch = 52; | |||||
| float cpadding_value = 53; | |||||
| bool rbuv_swap_switch = 54; | |||||
| bool ax_swap_switch = 55; | |||||
| bool single_line_mode = 56; | |||||
| int32 src_image_size_w = 57; | |||||
| int32 src_image_size_h = 58; | |||||
| bool crop = 59; | |||||
| int32 load_start_pos_w = 60; | |||||
| int32 load_start_pos_h = 61; | |||||
| int32 crop_size_w = 62; | |||||
| int32 crop_size_h = 63; | |||||
| bool resize = 64; | |||||
| int32 resize_output_w = 65; | |||||
| int32 resize_output_h = 66; | |||||
| bool padding = 67; | |||||
| int32 left_padding_size = 68; | |||||
| int32 right_padding_size = 69; | |||||
| int32 top_padding_size = 70; | |||||
| int32 bottom_padding_size = 71; | |||||
| int32 mean_chn_0 = 10; | |||||
| int32 mean_chn_1 = 11; | |||||
| int32 mean_chn_2 = 12; | |||||
| int32 mean_chn_3 = 19; | |||||
| float min_chn_0 = 13; | |||||
| float min_chn_1 = 14; | |||||
| float min_chn_2 = 15; | |||||
| float min_chn_3 = 20; | |||||
| repeated float var_reci_chn_0 = 16; | |||||
| repeated float var_reci_chn_1 = 17; | |||||
| repeated float var_reci_chn_2 = 18; | |||||
| repeated float var_reci_chn_3 = 21; | |||||
| repeated int32 matrix_r0c0 = 30; | |||||
| repeated int32 matrix_r0c1 = 31; | |||||
| repeated int32 matrix_r0c2 = 32; | |||||
| repeated int32 matrix_r1c0 = 33; | |||||
| repeated int32 matrix_r1c1 = 34; | |||||
| repeated int32 matrix_r1c2 = 35; | |||||
| repeated int32 matrix_r2c0 = 36; | |||||
| repeated int32 matrix_r2c1 = 37; | |||||
| repeated int32 matrix_r2c2 = 38; | |||||
| repeated int32 output_bias_0 = 39; | |||||
| repeated int32 output_bias_1 = 40; | |||||
| repeated int32 output_bias_2 = 41; | |||||
| repeated int32 input_bias_0 = 42; | |||||
| repeated int32 input_bias_1 = 43; | |||||
| repeated int32 input_bias_2 = 44; | |||||
| // [End] 静态AIPP参数 | |||||
| // The n number that is used for raw/rgbir data into f16 transformation. | |||||
| // The transformation equation is x/(2^n). If set to 0, no transform is performed. | |||||
| uint32 raw_rgbir_to_f16_n = 45; | |||||
| } | |||||
| message MultiShapeOpParams { | |||||
| enum MultiShapeMode { | |||||
| batch = 0; //动态batch | |||||
| resolution = 1; //动态分辨率,扩展用 | |||||
| } | |||||
| MultiShapeMode mode = 1; //算子模式 | |||||
| uint32 related_input_rank = 2; //新增算子插入到哪个输入 | |||||
| repeated uint32 batch_list = 11; //batch_list值,batch_list的个数是2到8之间 | |||||
| } | |||||
| @@ -1,401 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package domi; | |||||
| enum TargetType | |||||
| { | |||||
| MINI = 0; | |||||
| TINY = 1; | |||||
| LITE = 2; | |||||
| } | |||||
| // offline model | |||||
| message ModelDef { | |||||
| string name = 1; | |||||
| uint32 version = 2; | |||||
| uint64 memory_size = 10; | |||||
| uint32 stream_num = 11; | |||||
| uint32 event_num = 12; | |||||
| uint64 weight_size = 13; | |||||
| uint32 label_num = 15; | |||||
| repeated OpDef op = 20; | |||||
| TargetType target_type = 23; | |||||
| map<string, AttrDef> attr = 30; | |||||
| }; | |||||
| // operator define | |||||
| message OpDef { | |||||
| string name = 1; | |||||
| string type = 2; | |||||
| uint32 id = 3; | |||||
| uint32 stream_id = 4; | |||||
| repeated string input_name = 5; | |||||
| repeated string src_name = 8; | |||||
| repeated int32 src_index = 9; | |||||
| repeated int64 input = 10; | |||||
| repeated int64 output = 11; | |||||
| repeated TensorDescriptor input_desc = 12; | |||||
| repeated TensorDescriptor output_desc = 13; | |||||
| repeated WeightDef weights = 14; | |||||
| repeated string dst_name = 15; | |||||
| repeated int32 dst_index = 16; | |||||
| repeated int64 workspace = 20; | |||||
| repeated uint32 workspace_bytes = 21; | |||||
| repeated string weight_name = 22; | |||||
| repeated bool is_input_const = 23; | |||||
| map<string, AttrDef> attr = 30; | |||||
| QuantizeFactorParams quantize_factor = 31; | |||||
| oneof op_params { | |||||
| // start at 100 here | |||||
| SendOpParams sender_param = 100; | |||||
| RecvOpParams receiver_param = 200; | |||||
| ConvolutionOpParams convolution_param = 300; | |||||
| PoolingOpParams pooling_param = 400; | |||||
| EltwiseOpParams eltwise_param = 500; | |||||
| BatchNormOpParams batchnorm_param = 600; | |||||
| ScaleOpParams scale_param = 700; | |||||
| FullConnectionOpParams full_connection_param = 800; | |||||
| SoftmaxOpParams softmax_param = 900; | |||||
| ActivationOpParams activation_param = 1000; | |||||
| ReshapeOpParams reshape_param = 1100; | |||||
| } | |||||
| }; | |||||
| message SendOpParams { | |||||
| uint32 event_id = 1; | |||||
| }; | |||||
| message RecvOpParams { | |||||
| uint32 event_id = 1; | |||||
| }; | |||||
| enum QuantizeScaleType | |||||
| { | |||||
| VECTOR_SCALE = 0; | |||||
| SCALAR_SCALE = 1; | |||||
| } | |||||
| enum QuantizeScaleMode | |||||
| { | |||||
| NORMAL_MODE = 0; | |||||
| SQRT_MODE = 1; | |||||
| } | |||||
| enum QuantizeAlgorithm | |||||
| { | |||||
| NON_OFFSET_ALGO = 0; | |||||
| HALF_OFFSET_ALGO = 1; | |||||
| ALL_OFFSET_ALGO = 2; | |||||
| } | |||||
| message QuantizeFactor | |||||
| { | |||||
| QuantizeScaleMode scale_mode = 1; | |||||
| bytes scale_value = 2; | |||||
| int64 scale_offset = 3; | |||||
| bytes offset_data_value = 4; | |||||
| int64 offset_data_offset = 5; | |||||
| bytes offset_weight_value = 6; | |||||
| int64 offset_weight_offset = 7; | |||||
| bytes offset_pad_value = 8; | |||||
| int64 offset_pad_offset = 9; | |||||
| }; | |||||
| message QuantizeCalcFactor | |||||
| { | |||||
| bytes offsetw = 1; | |||||
| int64 offsetw_offset = 2; | |||||
| bytes offsetd = 3; | |||||
| int64 offsetd_offset = 4; | |||||
| bytes scalereq = 5; | |||||
| int64 scaledreq_offset = 6; | |||||
| bytes offsetdnext = 7; | |||||
| int64 offsetdnext_offset = 8; | |||||
| } | |||||
| message QuantizeFactorParams | |||||
| { | |||||
| QuantizeAlgorithm quantize_algo = 1; | |||||
| QuantizeScaleType scale_type = 2; | |||||
| QuantizeFactor quantize_param = 3; | |||||
| QuantizeFactor dequantize_param = 4; | |||||
| QuantizeFactor requantize_param = 5; | |||||
| QuantizeCalcFactor quantizecalc_param = 6; | |||||
| }; | |||||
| message ConvolutionOpParams { | |||||
| int32 mode = 1; | |||||
| int32 algo = 2; | |||||
| int32 pad_mode = 3; | |||||
| uint32 group = 4; | |||||
| uint32 num_output = 5; | |||||
| repeated uint32 pad = 10; | |||||
| repeated uint32 stride = 11; | |||||
| repeated uint32 dilation = 12; | |||||
| repeated uint32 kernel = 13; | |||||
| float alpha = 20; | |||||
| float beta = 21; | |||||
| WeightDef filter = 40; | |||||
| WeightDef bias = 41; | |||||
| bool relu_flag = 62; | |||||
| repeated uint32 adj = 70; | |||||
| repeated uint32 target_shape = 71; | |||||
| repeated uint32 before_pad = 72; | |||||
| }; | |||||
| message PoolingOpParams { | |||||
| int32 mode = 1; | |||||
| int32 nan_opt = 2; | |||||
| int32 pad_mode = 3; | |||||
| bool global_pooling = 4; | |||||
| repeated uint32 window = 10; | |||||
| repeated uint32 pad = 11; | |||||
| repeated uint32 stride = 12; | |||||
| bool ceil_mode = 13; | |||||
| int32 data_mode = 14; | |||||
| float alpha = 20; | |||||
| float beta = 21; | |||||
| repeated uint32 before_pad = 22; | |||||
| }; | |||||
| message EltwiseOpParams { | |||||
| int32 mode = 1; | |||||
| repeated float coeff = 2; | |||||
| float alpha = 3; | |||||
| float beta = 4; | |||||
| repeated WeightDef weight = 5; | |||||
| bool relu_flag = 6; | |||||
| }; | |||||
| message ActivationOpParams { | |||||
| int32 mode = 1; | |||||
| float coef = 2; | |||||
| float alpha = 3; | |||||
| float beta = 4; | |||||
| }; | |||||
| message BatchNormOpParams { | |||||
| int32 mode = 1; | |||||
| float alpha = 2; | |||||
| float beta = 3; | |||||
| double epsilon = 4;//optinal,[default = 1e-5] | |||||
| bool use_global_stats = 5; //optinal,by default true,testing mode | |||||
| float moving_average_fraction = 6; //optinal,[default = .999]; | |||||
| WeightDef estimated_mean = 7; | |||||
| WeightDef estimated_variance = 8; | |||||
| WeightDef scale = 9; | |||||
| WeightDef bias = 10; | |||||
| }; | |||||
| message ScaleOpParams { | |||||
| WeightDef scale = 1; | |||||
| WeightDef bias = 2; | |||||
| }; | |||||
| message ReshapeOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| ShapeDef shape = 3; | |||||
| int32 axis = 4; | |||||
| int32 num_axes = 5; | |||||
| int32 format = 6; | |||||
| }; | |||||
| message SoftmaxOpParams { | |||||
| int32 algo = 1; | |||||
| int32 mode = 2; | |||||
| float alpha = 3; | |||||
| float beta = 4; | |||||
| }; | |||||
| message FullConnectionOpParams { | |||||
| WeightDef filter = 1; | |||||
| WeightDef bias = 2; | |||||
| uint32 num_output = 3; | |||||
| bool relu_flag = 12; | |||||
| }; | |||||
| message FlattenOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| int32 start_axis = 3; | |||||
| int32 end_axis = 4; | |||||
| } | |||||
| message AddLimitedOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| int32 axis = 3; | |||||
| bool broadcast = 4; | |||||
| repeated WeightDef weight = 10; | |||||
| }; | |||||
| message MulLimitedOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| int32 axis = 3; | |||||
| bool broadcast = 4; | |||||
| repeated WeightDef weight = 10; | |||||
| }; | |||||
| message AddOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| repeated WeightDef weight = 10; | |||||
| }; | |||||
| message MulOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| repeated WeightDef weight = 10; | |||||
| }; | |||||
| message SubOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| repeated WeightDef weight = 10; | |||||
| }; | |||||
| message BiasAddOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| WeightDef bias = 10; | |||||
| }; | |||||
| message MatMulOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| bool transposeX = 3; | |||||
| bool transposeW = 4; | |||||
| WeightDef filter = 10; | |||||
| WeightDef bias = 12; | |||||
| }; | |||||
| message RsqrtOpParams { | |||||
| float alpha = 1; | |||||
| float beta = 2; | |||||
| }; | |||||
| message WeightDef { | |||||
| int32 format = 1; | |||||
| int32 data_type = 2; | |||||
| ShapeDef shape = 3; | |||||
| bytes data = 4; | |||||
| int64 data_offset = 5; | |||||
| uint32 cmps_size = 6; | |||||
| bytes cmps_tab = 7; | |||||
| int64 cmps_tab_offset = 10; | |||||
| CompressInfo cmps_info = 8; | |||||
| AllOffsetQuantizeInfo alloffset_quantize_info = 11; | |||||
| } | |||||
| message ShapeDef { | |||||
| repeated int64 dim = 1; | |||||
| } | |||||
| enum DeviceType { | |||||
| NPU = 0; // In default, we will use NPU. | |||||
| CPU = 1; // CPU | |||||
| } | |||||
| message AllOffsetQuantizeInfo { | |||||
| float scale = 1; | |||||
| int32 offset = 2; | |||||
| } | |||||
| message TensorDescriptor { | |||||
| int32 format = 1; | |||||
| int32 data_type = 2; | |||||
| repeated int64 dim = 3; | |||||
| uint32 size = 4; | |||||
| bool reuse_input = 5; | |||||
| bool output_tensor = 7; | |||||
| DeviceType device_type = 8; | |||||
| bool input_tensor = 9; | |||||
| uint32 real_dim_cnt = 10; | |||||
| uint32 reuse_input_index = 11; | |||||
| AllOffsetQuantizeInfo alloffset_quantize_info = 12; | |||||
| } | |||||
| message CompressInfo { | |||||
| int32 blockRow = 1; // block row | |||||
| int32 blockCol = 2; // block col | |||||
| int32 fractalK = 3; // fractal K | |||||
| int32 fractalN = 4; // fractal N | |||||
| int32 lastFractalK = 5; // K of last fractal | |||||
| int32 lastFractalN = 6; // N of last fractal | |||||
| int32 cubeSize = 7; // cube's length | |||||
| int32 loadDir = 8; // data load directtiono 0:col load 1:row load | |||||
| } | |||||
| message AttrDef { | |||||
| message ListValue { | |||||
| repeated string s = 2; // "list(string)" | |||||
| repeated int64 i = 3 [packed = true]; // "list(int)" | |||||
| repeated float f = 4 [packed = true]; // "list(float)" | |||||
| repeated bool b = 5 [packed = true]; // "list(bool)" | |||||
| repeated uint32 u = 6 [packed = true]; // "list(uint)" | |||||
| repeated bytes bt = 7; | |||||
| } | |||||
| oneof value { | |||||
| string s = 2; // "string" | |||||
| int64 i = 3; // "int" | |||||
| float f = 4; // "float" | |||||
| bool b = 5; // "bool" | |||||
| uint32 u = 6; // "uint32" | |||||
| bytes bt = 7; | |||||
| ListValue list = 1; // any "list(...)" | |||||
| NamedAttrs func = 10; | |||||
| } | |||||
| } | |||||
| // A list of attr names and their values. The whole list is attached | |||||
| // with a string name. E.g., MatMul[T=float]. | |||||
| message NamedAttrs { | |||||
| string name = 1; | |||||
| map<string, AttrDef> attr = 2; | |||||
| } | |||||
| @@ -1,89 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package aicpu.dump; | |||||
| message Shape { | |||||
| repeated uint64 dim = 1; | |||||
| } | |||||
| message Output { | |||||
| int32 data_type = 1; | |||||
| int32 format = 2; | |||||
| Shape shape = 3; | |||||
| uint64 address = 4; | |||||
| string original_name = 5; | |||||
| int32 original_output_index = 6; | |||||
| int32 original_output_data_type = 7; | |||||
| int32 original_output_format = 8; | |||||
| uint64 size = 9; | |||||
| } | |||||
| message Input { | |||||
| int32 data_type =1; | |||||
| int32 format = 2; | |||||
| Shape shape = 3; | |||||
| uint64 address = 4; | |||||
| uint64 size = 5; | |||||
| } | |||||
| enum BufferType { | |||||
| L1 = 0; | |||||
| } | |||||
| message OpBuffer { | |||||
| BufferType buffer_type = 1; | |||||
| uint64 address = 2; | |||||
| uint64 size = 3; | |||||
| } | |||||
| message Op { | |||||
| string op_name = 1; | |||||
| string op_type = 2; | |||||
| } | |||||
| message Task { | |||||
| uint32 task_id = 1; | |||||
| uint32 stream_id = 2; | |||||
| Op op = 3; | |||||
| repeated Output output = 4; | |||||
| bool end_graph = 5; | |||||
| repeated Input input = 6; | |||||
| repeated OpBuffer buffer = 7; | |||||
| } | |||||
| message OpMappingInfo { | |||||
| string dump_path = 1; | |||||
| oneof model_name_param { | |||||
| string model_name = 2; | |||||
| } | |||||
| oneof model_id_param { | |||||
| uint32 model_id = 3; | |||||
| } | |||||
| oneof step_id { | |||||
| uint64 step_id_addr = 4; | |||||
| } | |||||
| oneof iterations_per_loop { | |||||
| uint64 iterations_per_loop_addr = 5; | |||||
| } | |||||
| oneof loop_cond { | |||||
| uint64 loop_cond_addr = 6; | |||||
| } | |||||
| uint32 flag = 7; // 0x01 load, 0x00 unload | |||||
| repeated Task task = 8; | |||||
| string dump_step = 9; | |||||
| } | |||||
| @@ -1,23 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package ge.optimizers; | |||||
| // Default: GE>FE>AICPU | |||||
| message Priority{ | |||||
| repeated string optimizer = 1; | |||||
| } | |||||
| @@ -1,170 +0,0 @@ | |||||
| /** | |||||
| * 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. | |||||
| */ | |||||
| syntax = "proto3"; | |||||
| package domi; | |||||
| message ModelTaskDef { | |||||
| string version = 1; | |||||
| map<string, string> attr = 9; // Extended field | |||||
| repeated TaskDef task = 10; | |||||
| uint64 memory_size = 11; | |||||
| uint32 stream_num = 12; | |||||
| uint32 event_num = 13; | |||||
| uint64 weight_size = 14; | |||||
| repeated bytes op = 15; // input/output opdef in bytes | |||||
| uint64 base_addr = 16; // base addr | |||||
| uint64 weight_addr = 17; // weight addr | |||||
| uint32 batch_num = 18; | |||||
| } | |||||
| message TaskDef { | |||||
| uint32 id = 1; | |||||
| uint32 type = 2; | |||||
| uint32 stream_id = 10; | |||||
| uint32 event_id = 11; | |||||
| KernelDef kernel = 20; | |||||
| KernelExDef kernel_ex = 21; | |||||
| KernelHcclDef kernel_hccl = 25; | |||||
| EventExDef event_ex = 26; | |||||
| LogTimeStampDef log_timestamp = 28; | |||||
| uint32 label_id = 30; | |||||
| MemcpyAsyncDef memcpy_async = 31; | |||||
| StreamSwitchDef stream_switch = 32; | |||||
| StreamActiveDef stream_active = 33; | |||||
| bytes private_def = 34; | |||||
| uint64 ops_kernel_store_ptr = 35; // adjustments to other fields in the future | |||||
| StreamSwitchNDef stream_switch_n = 36; | |||||
| LabelSetDef label_set = 37; | |||||
| LabelGotoExDef label_goto_ex = 38; | |||||
| LabelSwitchByIndexDef label_switch_by_index = 39; | |||||
| } | |||||
| message KernelDef { | |||||
| KernelContext context = 1; | |||||
| string stub_func = 10; | |||||
| uint32 block_dim = 11; | |||||
| uint32 args_size = 12; | |||||
| bytes args = 13; | |||||
| bytes sm_desc = 14; | |||||
| bytes flowtable = 15; | |||||
| string so_name = 16; | |||||
| string kernel_name = 17; | |||||
| bytes kernel_ext_info = 18; | |||||
| uint32 kernel_ext_info_size = 19; | |||||
| } | |||||
| message KernelContext { | |||||
| uint32 kernel_type = 1; | |||||
| uint32 op_id = 2; // OP type in CCE | |||||
| uint32 kernel_func_id = 3; | |||||
| uint32 op_index = 4; // TE/Custom operator | |||||
| bool is_flowtable = 5; // Identify whether args is a flowtable structure | |||||
| bytes args_offset = 6; // args offset information | |||||
| uint32 args_count = 7; // args count | |||||
| repeated uint32 origin_op_index = 8; | |||||
| } | |||||
| message KernelExDef { | |||||
| uint32 flags = 1; | |||||
| uint32 op_index = 4; | |||||
| uint32 args_size = 12; | |||||
| bytes args = 13; | |||||
| bytes task_info = 14; // serialized nodeDef, funcDef, inputoutput | |||||
| uint32 task_info_size = 15; | |||||
| bytes kernel_ext_info = 16; | |||||
| uint32 kernel_ext_info_size = 17; | |||||
| } | |||||
| message KernelHcclDef { | |||||
| uint32 op_index = 8; | |||||
| string hccl_type = 9; | |||||
| } | |||||
| message EventExDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 event_type = 2; | |||||
| } | |||||
| message LogTimeStampDef { | |||||
| uint64 logid = 1; | |||||
| bool notify = 2; | |||||
| uint32 flat = 3; | |||||
| } | |||||
| message MemcpyAsyncDef { | |||||
| uint64 dst = 1; | |||||
| uint64 dst_max = 2; | |||||
| uint64 src = 3; | |||||
| uint64 count = 4; | |||||
| uint32 kind = 5; | |||||
| uint32 op_index = 6; | |||||
| } | |||||
| message StreamSwitchDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 true_stream_id = 2; | |||||
| int64 value = 3; | |||||
| uint64 value_ptr = 4; | |||||
| uint32 data_type = 5; | |||||
| } | |||||
| message StreamActiveDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 active_stream_id = 2; | |||||
| } | |||||
| message StreamSwitchNDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 size = 2; | |||||
| repeated int64 target_value = 3; | |||||
| repeated uint32 true_stream_id = 4; | |||||
| uint32 element_size = 5; | |||||
| uint32 data_type = 6; | |||||
| } | |||||
| message LabelSetDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 label_id = 2; | |||||
| uint32 model_id = 3; | |||||
| } | |||||
| message LabelGotoExDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 label_id = 2; | |||||
| uint32 model_id = 3; | |||||
| } | |||||
| message LabelSwitchByIndexDef { | |||||
| uint32 op_index = 1; | |||||
| uint32 label_max = 2; | |||||
| } | |||||