| @@ -1 +1 @@ | |||||
| Subproject commit fe37bc343ea52c76d35e9e9ec83cea0151bfa900 | |||||
| Subproject commit f08320a6d699f5b537bf66da572bf225b9cd330e | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 336cd3107253d3fe41cfb9fec2db62b5f3d8a33b | |||||
| Subproject commit b2df31dc5810283e2e483df5ba9517e2ece132a0 | |||||
| @@ -1,60 +1,60 @@ | |||||
| /** | |||||
| * 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 AICPU_OP_TYPE_LIST_H_ | |||||
| #define AICPU_OP_TYPE_LIST_H_ | |||||
| enum OpKernelType { | |||||
| TF_KERNEL, | |||||
| CPU_KERNEL | |||||
| }; | |||||
| enum ReturnCode { | |||||
| OP_TYPE_NOT_SUPPORT, | |||||
| FORMAT_NOT_SUPPORT, | |||||
| DTYPE_NOT_SUPPORT | |||||
| }; | |||||
| #pragma pack(push, 1) | |||||
| //One byte alignment | |||||
| struct SysOpInfo { | |||||
| uint64_t opLen; | |||||
| uint64_t opType; | |||||
| OpKernelType kernelsType; | |||||
| }; | |||||
| struct OpParamInfo { | |||||
| uint64_t num; | |||||
| uint64_t dtypeList; | |||||
| uint64_t formatList; | |||||
| }; | |||||
| struct SysOpCheckInfo { | |||||
| uint64_t opListNum; | |||||
| uint64_t offSetLen; | |||||
| uint64_t sysOpInfoList; | |||||
| uint64_t opParamInfoList; | |||||
| }; | |||||
| struct SysOpCheckResp { | |||||
| uint64_t opListNum; | |||||
| bool isWithoutJson; | |||||
| uint64_t returnCodeList; | |||||
| uint64_t sysOpInfoList; | |||||
| uint64_t opParamInfoList; | |||||
| }; | |||||
| #pragma pack(pop) | |||||
| #endif // AICPU_OP_TYPE_LIST_H_ | |||||
| /** | |||||
| * 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 AICPU_OP_TYPE_LIST_H_ | |||||
| #define AICPU_OP_TYPE_LIST_H_ | |||||
| enum OpKernelType { | |||||
| TF_KERNEL, | |||||
| CPU_KERNEL | |||||
| }; | |||||
| enum ReturnCode { | |||||
| OP_TYPE_NOT_SUPPORT, | |||||
| FORMAT_NOT_SUPPORT, | |||||
| DTYPE_NOT_SUPPORT | |||||
| }; | |||||
| #pragma pack(push, 1) | |||||
| //One byte alignment | |||||
| struct SysOpInfo { | |||||
| uint64_t opLen; | |||||
| uint64_t opType; | |||||
| OpKernelType kernelsType; | |||||
| }; | |||||
| struct OpParamInfo { | |||||
| uint64_t num; | |||||
| uint64_t dtypeList; | |||||
| uint64_t formatList; | |||||
| }; | |||||
| struct SysOpCheckInfo { | |||||
| uint64_t opListNum; | |||||
| uint64_t offSetLen; | |||||
| uint64_t sysOpInfoList; | |||||
| uint64_t opParamInfoList; | |||||
| }; | |||||
| struct SysOpCheckResp { | |||||
| uint64_t opListNum; | |||||
| bool isWithoutJson; | |||||
| uint64_t returnCodeList; | |||||
| uint64_t sysOpInfoList; | |||||
| uint64_t opParamInfoList; | |||||
| }; | |||||
| #pragma pack(pop) | |||||
| #endif // AICPU_OP_TYPE_LIST_H_ | |||||
| @@ -33,15 +33,6 @@ extern "C" { | |||||
| /** | |||||
| * @brief Get the rank number in the group. | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @param rankSize A pointer identifying the rank number. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_get_rank_size(const char *group, u32 *rankSize); | |||||
| /** | /** | ||||
| * @brief Get the rank number in the group. | * @brief Get the rank number in the group. | ||||
| * | * | ||||
| @@ -51,15 +42,6 @@ HcclResult hcom_get_rank_size(const char *group, u32 *rankSize); | |||||
| */ | */ | ||||
| HcclResult HcomGetRankSize(const char *group, u32 *rankSize); | HcclResult HcomGetRankSize(const char *group, u32 *rankSize); | ||||
| /** | |||||
| * @brief Get the rank number of this rank's server within the group. | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @param localRankSize A pointer identifying the rank number. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_get_local_rank_size(const char *group, u32 *localRankSize); | |||||
| /** | /** | ||||
| * @brief Get the rank number of this rank's server within the group. | * @brief Get the rank number of this rank's server within the group. | ||||
| * | * | ||||
| @@ -69,15 +51,6 @@ HcclResult hcom_get_local_rank_size(const char *group, u32 *localRankSize); | |||||
| */ | */ | ||||
| HcclResult HcomGetLocalRankSize(const char *group, u32 *localRankSize); | HcclResult HcomGetLocalRankSize(const char *group, u32 *localRankSize); | ||||
| /** | |||||
| * @brief Get the rank id of this rank. | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @param rankId A pointer identifying the rank id. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_get_rank_id(const char *group, u32 *rankId); | |||||
| /** | /** | ||||
| * @brief Get the rank id of this rank. | * @brief Get the rank id of this rank. | ||||
| * | * | ||||
| @@ -87,15 +60,6 @@ HcclResult hcom_get_rank_id(const char *group, u32 *rankId); | |||||
| */ | */ | ||||
| HcclResult HcomGetRankId(const char *group, u32 *rankId); | HcclResult HcomGetRankId(const char *group, u32 *rankId); | ||||
| /** | |||||
| * @brief Get the local rank id of this rank's server within the group. | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @param localRankId A pointer identifying the local rank id. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_get_local_rank_id(const char *group, u32 *localRankId); | |||||
| /** | /** | ||||
| * @brief Get the local rank id of this rank's server within the group. | * @brief Get the local rank id of this rank's server within the group. | ||||
| * | * | ||||
| @@ -105,16 +69,6 @@ HcclResult hcom_get_local_rank_id(const char *group, u32 *localRankId); | |||||
| */ | */ | ||||
| HcclResult HcomGetLocalRankId(const char *group, u32 *localRankId); | HcclResult HcomGetLocalRankId(const char *group, u32 *localRankId); | ||||
| /** | |||||
| * @brief Get the world rank id according to the group rank id. | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @param groupRank An integer(u32) identifying the group rank id. | |||||
| * @param worldRank A pointer identifying the world rank id. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_get_world_rank_from_group_rank(const char *group, u32 groupRank, u32 *worldRank); | |||||
| /** | /** | ||||
| * @brief Get the world rank id according to the group rank id. | * @brief Get the world rank id according to the group rank id. | ||||
| * | * | ||||
| @@ -125,16 +79,6 @@ HcclResult hcom_get_world_rank_from_group_rank(const char *group, u32 groupRank, | |||||
| */ | */ | ||||
| HcclResult HcomGetWorldRankFromGroupRank(const char *group, u32 groupRank, u32 *worldRank); | HcclResult HcomGetWorldRankFromGroupRank(const char *group, u32 groupRank, u32 *worldRank); | ||||
| /** | |||||
| * @brief Get the group rank id according to the world rank id. | |||||
| * | |||||
| * @param worldRank An integer(u32) identifying the world rank id. | |||||
| * @param group A string identifying the group name. | |||||
| * @param groupRank A pointer identifying the group rank id. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_get_group_rank_from_world_rank(u32 worldRank, const char *group, u32 *groupRank); | |||||
| /** | /** | ||||
| * @brief Get the group rank id according to the world rank id. | * @brief Get the group rank id according to the world rank id. | ||||
| * | * | ||||
| @@ -145,16 +89,6 @@ HcclResult hcom_get_group_rank_from_world_rank(u32 worldRank, const char *group, | |||||
| */ | */ | ||||
| HcclResult HcomGetGroupRankFromWorldRank(u32 worldRank, const char *group, u32 *groupRank); | HcclResult HcomGetGroupRankFromWorldRank(u32 worldRank, const char *group, u32 *groupRank); | ||||
| /** | |||||
| * @brief Create group. | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @param rankNum An integer(u32) identifying the number of ranks in the group. | |||||
| * @param rankIds A list identifying the ranks in the group. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_create_group(const char *group, u32 rankNum, u32 *rankIds); | |||||
| /** | /** | ||||
| * @brief Create group. | * @brief Create group. | ||||
| * | * | ||||
| @@ -165,14 +99,6 @@ HcclResult hcom_create_group(const char *group, u32 rankNum, u32 *rankIds); | |||||
| */ | */ | ||||
| HcclResult HcomCreateGroup(const char *group, u32 rankNum, u32 *rankIds); | HcclResult HcomCreateGroup(const char *group, u32 rankNum, u32 *rankIds); | ||||
| /** | |||||
| * @brief Destroy group | |||||
| * | |||||
| * @param group A string identifying the group name. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult hcom_destroy_group(const char *group); | |||||
| /** | /** | ||||
| * @brief Destroy group | * @brief Destroy group | ||||
| * | * | ||||
| @@ -189,46 +115,54 @@ HcclResult HcomDestroyGroup(const char *group); | |||||
| * @param IdxList A list identifying the index of end gradient in each segment. | * @param IdxList A list identifying the index of end gradient in each segment. | ||||
| * @return HcclResult | * @return HcclResult | ||||
| */ | */ | ||||
| extern HcclResult hcom_set_split_strategy_by_index(const char *group, u32 segmentNum, const u32 *IdxList); | |||||
| extern HcclResult HcomSetGradFusionByIndex(const char *group, u32 segmentNum, const u32 *IdxList); | |||||
| /** | /** | ||||
| * @brief Set the gradient split strategy with in the group, according to gradient index. | |||||
| * @brief Set the gradient split strategy with in the group, according to gradient data size. | |||||
| * | * | ||||
| * @param group A string identifying the group name. | * @param group A string identifying the group name. | ||||
| * @param segmentNum An integer(u32) identifying the segments number of gradients. | * @param segmentNum An integer(u32) identifying the segments number of gradients. | ||||
| * @param IdxList A list identifying the index of end gradient in each segment. | |||||
| * @param sizeList A list identifying the percent of each segment. | |||||
| * @return HcclResult | * @return HcclResult | ||||
| */ | */ | ||||
| extern HcclResult HcomSetGradFusionByIndex(const char *group, u32 segmentNum, const u32 *IdxList); | |||||
| extern HcclResult HcomSetGradFusionBySize(const char *group, u32 segmentNum, const float *sizeList); | |||||
| /** | /** | ||||
| * @brief Set the gradient split strategy with in the group, according to gradient data size. | |||||
| * @brief Initialize hcom executor. | |||||
| * | * | ||||
| * @param group A string identifying the group name. | |||||
| * @param segmentNum An integer(u32) identifying the segments number of gradients. | |||||
| * @param sizeList A list identifying the percent of each segment. | |||||
| * @param void | |||||
| * @return HcclResult | * @return HcclResult | ||||
| */ | */ | ||||
| extern HcclResult hcom_set_split_strategy_by_size(const char *group, u32 segmentNum, const float *sizeList); | |||||
| HcclResult HcomExecInitialize(); | |||||
| /** | /** | ||||
| * @brief Set the gradient split strategy with in the group, according to gradient data size. | |||||
| * @brief Finalize hcom executor. | |||||
| * | * | ||||
| * @param group A string identifying the group name. | |||||
| * @param segmentNum An integer(u32) identifying the segments number of gradients. | |||||
| * @param sizeList A list identifying the percent of each segment. | |||||
| * @param void | |||||
| * @return HcclResult | * @return HcclResult | ||||
| */ | */ | ||||
| extern HcclResult HcomSetGradFusionBySize(const char *group, u32 segmentNum, const float *sizeList); | |||||
| HcclResult HcomExecFinalize(); | |||||
| /** | /** | ||||
| * @brief Register memories and init resources for remote access. | |||||
| * @brief Put collective communication operation into hcom executor. | |||||
| * | * | ||||
| * @param addrList memory addresses for remote access. | |||||
| * @param count number of remote memory addresses. | |||||
| * @param opInfo information about collective communication operation. | |||||
| * @param callback callback after collective communication operation. | |||||
| * @return HcclResult | * @return HcclResult | ||||
| */ | */ | ||||
| extern HcclResult hcom_remote_access_mem_register(const MemRegisterAddr* addrList, u32 count); | |||||
| HcclResult HcomExecEnqueueOperation(HcomOperation opInfo, std::function<void(HcclResult status)> callback); | |||||
| /** | |||||
| * @brief Put remote access operation into hcom executor. | |||||
| * | |||||
| * @param remoteAccessType operation type (read or write). | |||||
| * @param addrInfos address information about collective communication operation. | |||||
| * @param callback callback after collective communication operation. | |||||
| * @return HcclResult | |||||
| */ | |||||
| HcclResult HcomExecEnqueueRemoteAccess(const std::string& remoteAccessType, | |||||
| const std::vector<HcomRemoteAccessAddrInfo>& addrInfos, | |||||
| std::function<void(HcclResult status)> callback); | |||||
| /** | /** | ||||
| * @brief Register memories and init resources for remote access. | * @brief Register memories and init resources for remote access. | ||||
| @@ -239,16 +173,6 @@ extern HcclResult hcom_remote_access_mem_register(const MemRegisterAddr* addrLis | |||||
| */ | */ | ||||
| extern HcclResult HcomRegRemoteAccessMem(const MemRegisterAddr* addrList, u32 count); | extern HcclResult HcomRegRemoteAccessMem(const MemRegisterAddr* addrList, u32 count); | ||||
| HcclResult HcomExecInitialize(); | |||||
| HcclResult HcomExecFinalize(); | |||||
| HcclResult HcomExecEnqueueOperation(HcomOperation opInfo, std::function<void(HcclResult status)> callback); | |||||
| HcclResult HcomExecEnqueueRemoteAccess(const std::string& remoteAccessType, | |||||
| const std::vector<HcomRemoteAccessAddrInfo>& addrInfos, | |||||
| std::function<void(HcclResult status)> callback); | |||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| } | } | ||||
| #endif // __cplusplus | #endif // __cplusplus | ||||
| @@ -279,8 +279,9 @@ typedef struct { | |||||
| #define M_NAME_MAX MAX_FNAME | #define M_NAME_MAX MAX_FNAME | ||||
| #define M_F_OK F_OK | #define M_F_OK F_OK | ||||
| #define M_R_OK R_OK | |||||
| #define M_X_OK X_OK | |||||
| #define M_W_OK W_OK | #define M_W_OK W_OK | ||||
| #define M_R_OK R_OK | |||||
| #define MM_DT_DIR DT_DIR | #define MM_DT_DIR DT_DIR | ||||
| #define MM_DT_REG DT_REG | #define MM_DT_REG DT_REG | ||||
| @@ -322,6 +322,7 @@ typedef VOID (*mmPf)(VOID); | |||||
| #define M_NAME_MAX _MAX_FNAME | #define M_NAME_MAX _MAX_FNAME | ||||
| #define M_F_OK 0 | #define M_F_OK 0 | ||||
| #define M_X_OK 1 | |||||
| #define M_W_OK 2 | #define M_W_OK 2 | ||||
| #define M_R_OK 4 | #define M_R_OK 4 | ||||
| @@ -0,0 +1,49 @@ | |||||
| /** | |||||
| * 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_REGISTER_OP_KERNEL_REGISTRY_H_ | |||||
| #define INC_REGISTER_OP_KERNEL_REGISTRY_H_ | |||||
| #include <memory> | |||||
| #include <string> | |||||
| #include "register/register_types.h" | |||||
| #include "register.h" | |||||
| namespace ge { | |||||
| class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY OpKernelRegistry { | |||||
| public: | |||||
| using CreateFn = HostCpuOp* (*)(); | |||||
| ~OpKernelRegistry(); | |||||
| static OpKernelRegistry& GetInstance() { | |||||
| static OpKernelRegistry instance; | |||||
| return instance; | |||||
| } | |||||
| bool IsRegistered(const std::string &op_type); | |||||
| void RegisterHostCpuOp(const std::string &op_type, CreateFn create_fn); | |||||
| std::unique_ptr<HostCpuOp> CreateHostCpuOp(const std::string &op_type); | |||||
| private: | |||||
| OpKernelRegistry(); | |||||
| class OpKernelRegistryImpl; | |||||
| /*lint -e148*/ | |||||
| std::unique_ptr<OpKernelRegistryImpl> impl_; | |||||
| }; | |||||
| } // namespace ge | |||||
| #endif // INC_REGISTER_OP_KERNEL_REGISTRY_H_ | |||||
| @@ -0,0 +1,96 @@ | |||||
| /** | |||||
| * 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_REGISTER_OP_REGISTRY_H_ | |||||
| #define INC_REGISTER_OP_REGISTRY_H_ | |||||
| #include <limits.h> | |||||
| #include <set> | |||||
| #include <string> | |||||
| #include <unordered_map> | |||||
| #include <vector> | |||||
| #include "register/register.h" | |||||
| namespace domi { | |||||
| enum RemoveInputType { | |||||
| OMG_MOVE_TYPE_DTYPE = 0, | |||||
| OMG_MOVE_TYPE_VALUE, | |||||
| OMG_MOVE_TYPE_SHAPE, | |||||
| OMG_MOVE_TYPE_FORMAT, | |||||
| OMG_MOVE_TYPE_AXIS, | |||||
| OMG_MOVE_TYPE_SCALAR_VALUE, | |||||
| OMG_REMOVE_TYPE_WITH_COND = 1000, | |||||
| OMG_REMOVE_INPUT_WITH_ORIGINAL_TYPE, | |||||
| OMG_INPUT_REORDER, | |||||
| }; | |||||
| struct RemoveInputConfigure { | |||||
| int inputIdx = INT_MAX; | |||||
| std::string attrName; | |||||
| RemoveInputType moveType; | |||||
| bool attrValue = false; | |||||
| std::string originalType; | |||||
| std::vector<int> input_order; | |||||
| }; | |||||
| class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY OpRegistry { | |||||
| public: | |||||
| static OpRegistry *Instance(); | |||||
| std::vector<OpRegistrationData> registrationDatas; | |||||
| bool Register(const OpRegistrationData ®_data); | |||||
| domi::ImplyType GetImplyType(const std::string &op_type); | |||||
| void GetOpTypeByImplyType(std::vector<std::string> &vec_op_type, const domi::ImplyType &imply_type); | |||||
| domi::ParseParamFunc GetParseParamFunc(const std::string &op_type, const std::string &ori_type); | |||||
| domi::ParseParamByOpFunc GetParseParamByOperatorFunc(const std::string &ori_type); | |||||
| domi::FusionParseParamFunc GetFusionParseParamFunc(const std::string &op_type, const std::string &ori_type); | |||||
| domi::FusionParseParamByOpFunc GetFusionParseParamByOpFunc(const std::string &op_type, | |||||
| const std::string &ori_type); | |||||
| domi::ParseSubgraphFunc GetParseSubgraphPostFunc(const std::string &op_type); | |||||
| Status GetParseSubgraphPostFunc(const std::string &op_type, domi::ParseSubgraphFuncV2 &parse_subgraph_func); | |||||
| domi::ImplyType GetImplyTypeByOriOpType(const std::string &ori_optype); | |||||
| const std::vector<RemoveInputConfigure> &GetRemoveInputConfigure(const std::string &ori_optype) const; | |||||
| bool GetOmTypeByOriOpType(const std::string &ori_optype, std::string &om_type); | |||||
| ParseOpToGraphFunc GetParseOpToGraphFunc(const std::string &op_type, const std::string &ori_type); | |||||
| private: | |||||
| std::unordered_map<std::string, domi::ImplyType> op_run_mode_map_; | |||||
| std::unordered_map<std::string, ParseParamFunc> op_parse_params_fn_map_; | |||||
| std::unordered_map<std::string, ParseParamByOpFunc> parse_params_by_op_func_map_; | |||||
| std::unordered_map<std::string, FusionParseParamFunc> fusion_op_parse_params_fn_map_; | |||||
| std::unordered_map<std::string, FusionParseParamByOpFunc> fusion_parse_params_by_op_fn_map_; | |||||
| std::unordered_map<std::string, ParseSubgraphFunc> op_types_to_parse_subgraph_post_func_; | |||||
| std::unordered_map<std::string, std::vector<RemoveInputConfigure>> remove_input_configure_map_; | |||||
| std::unordered_map<std::string, std::string> origin_type_to_om_type_; | |||||
| std::unordered_map<std::string, ParseOpToGraphFunc> parse_op_to_graph_fn_map_; | |||||
| std::unordered_map<std::string, ParseSubgraphFuncV2> op_types_to_parse_subgraph_post_func_v2_; | |||||
| }; | |||||
| } // namespace domi | |||||
| #endif // INC_REGISTER_OP_REGISTRY_H_ | |||||
| @@ -81,26 +81,17 @@ typedef enum tagRtLimitType { | |||||
| } rtLimitType_t; | } rtLimitType_t; | ||||
| typedef struct rtExceptionInfo { | typedef struct rtExceptionInfo { | ||||
| uint32_t taskid; | |||||
| uint32_t streamid; | |||||
| uint32_t tid; | |||||
| uint32_t deviceid; | |||||
| uint32_t taskid; | |||||
| uint32_t streamid; | |||||
| uint32_t tid; | |||||
| uint32_t deviceid; | |||||
| uint32_t retcode; | |||||
| } rtExceptionInfo; | } rtExceptionInfo; | ||||
| typedef struct rtTaskFailInfo { | |||||
| uint32_t taskid; | |||||
| uint32_t streamid; | |||||
| uint32_t tid; | |||||
| uint32_t deviceid; | |||||
| uint32_t retcode; | |||||
| } rtTaskFailInfo; | |||||
| typedef void (*rtErrorCallback)(rtExceptionType); | typedef void (*rtErrorCallback)(rtExceptionType); | ||||
| typedef void (*rtTaskFailCallback)(rtExceptionInfo *exceptionInfo); | typedef void (*rtTaskFailCallback)(rtExceptionInfo *exceptionInfo); | ||||
| typedef void (*rtTaskFailCallbackByModule)(rtTaskFailInfo *exceptionInfo); | |||||
| typedef void (*rtDeviceStateCallback)(uint32_t devId, bool isOpen); | typedef void (*rtDeviceStateCallback)(uint32_t devId, bool isOpen); | ||||
| /** | /** | ||||
| @@ -143,13 +134,13 @@ RTS_API rtError_t rtProfilerConfig(uint16_t type); | |||||
| * @ingroup profiling_base | * @ingroup profiling_base | ||||
| * @brief start rts profiler. | * @brief start rts profiler. | ||||
| */ | */ | ||||
| RTS_API rtError_t rtProfilerStart(uint64_t profConfig, int32_t numsDev, uint32_t* deviceList); | |||||
| RTS_API rtError_t rtProfilerStart(uint64_t profConfig, int32_t numsDev, uint32_t *deviceList); | |||||
| /** | /** | ||||
| * @ingroup profiling_base | * @ingroup profiling_base | ||||
| * @brief stop rts profiler. | * @brief stop rts profiler. | ||||
| */ | */ | ||||
| RTS_API rtError_t rtProfilerStop(uint64_t profConfig, int32_t numsDev, uint32_t* deviceList); | |||||
| RTS_API rtError_t rtProfilerStop(uint64_t profConfig, int32_t numsDev, uint32_t *deviceList); | |||||
| /** | /** | ||||
| * @ingroup profiling_base | * @ingroup profiling_base | ||||
| @@ -209,7 +200,7 @@ RTS_API rtError_t rtRegDeviceStateCallback(const char *regName, rtDeviceStateCal | |||||
| * @param [out] NA | * @param [out] NA | ||||
| * @return RT_ERROR_NONE for ok | * @return RT_ERROR_NONE for ok | ||||
| */ | */ | ||||
| RTS_API rtError_t rtRegTaskFailCallbackByModule(const char *moduleName, rtTaskFailCallbackByModule callback); | |||||
| RTS_API rtError_t rtRegTaskFailCallbackByModule(const char *moduleName, rtTaskFailCallback callback); | |||||
| /** | /** | ||||
| * @ingroup dvrt_base | * @ingroup dvrt_base | ||||
| @@ -42,6 +42,7 @@ typedef enum tagRtChipType { | |||||
| CHIP_MDC, | CHIP_MDC, | ||||
| CHIP_LHISI, | CHIP_LHISI, | ||||
| CHIP_DC, | CHIP_DC, | ||||
| CHIP_CLOUD_V2, | |||||
| CHIP_END, | CHIP_END, | ||||
| } rtChipType_t; | } rtChipType_t; | ||||
| @@ -62,6 +63,7 @@ typedef enum tagRtPlatformType { | |||||
| PLATFORM_LHISI_ES, | PLATFORM_LHISI_ES, | ||||
| PLATFORM_LHISI_CS, | PLATFORM_LHISI_CS, | ||||
| PLATFORM_DC, | PLATFORM_DC, | ||||
| PLATFORM_CLOUD_V2, | |||||
| PLATFORM_END, | PLATFORM_END, | ||||
| } rtPlatformType_t; | } rtPlatformType_t; | ||||
| @@ -119,7 +121,9 @@ typedef struct tagRtMemoryConfig { | |||||
| uint32_t compilerSize; | uint32_t compilerSize; | ||||
| } rtMemoryConfig_t; | } rtMemoryConfig_t; | ||||
| typedef struct tagRtPlatformConfig { uint32_t platformConfig; } rtPlatformConfig_t; | |||||
| typedef struct tagRtPlatformConfig { | |||||
| uint32_t platformConfig; | |||||
| } rtPlatformConfig_t; | |||||
| /** | /** | ||||
| * @ingroup | * @ingroup | ||||
| @@ -47,7 +47,7 @@ typedef struct tagRtGroupInfo { | |||||
| uint32_t aivectorNum; | uint32_t aivectorNum; | ||||
| uint32_t sdmaNum; | uint32_t sdmaNum; | ||||
| uint32_t activeStreamNum; | uint32_t activeStreamNum; | ||||
| void* extrPtr; | |||||
| void *extrPtr; | |||||
| } rtGroupInfo_t; | } rtGroupInfo_t; | ||||
| /** | /** | ||||
| @@ -185,7 +185,7 @@ RTS_API rtError_t rtDisableP2P(uint32_t devIdDes, uint32_t phyIdSrc); | |||||
| * @return RT_ERROR_NONE for ok | * @return RT_ERROR_NONE for ok | ||||
| * @return RT_ERROR_INVALID_VALUE for error input | * @return RT_ERROR_INVALID_VALUE for error input | ||||
| */ | */ | ||||
| RTS_API rtError_t rtDeviceCanAccessPeer(int32_t* canAccessPeer, uint32_t device, uint32_t peerDevice); | |||||
| RTS_API rtError_t rtDeviceCanAccessPeer(int32_t *canAccessPeer, uint32_t device, uint32_t peerDevice); | |||||
| /** | /** | ||||
| * @ingroup dvrt_dev | * @ingroup dvrt_dev | ||||
| @@ -387,7 +387,7 @@ typedef void *rtModel_t; | |||||
| * @return RT_ERROR_NONE for ok | * @return RT_ERROR_NONE for ok | ||||
| * @return RT_ERROR_INVALID_VALUE for error input | * @return RT_ERROR_INVALID_VALUE for error input | ||||
| */ | */ | ||||
| RTS_API rtError_t rtDumpAddrSet(rtModel_t model, void *addr, uint32_t dumpSize, uint32_t flag); | |||||
| RTS_API rtError_t rtDumpAddrSet(rtModel_t model, void *addr, uint32_t dumpSize, uint32_t flag); | |||||
| /** | /** | ||||
| * @ingroup rt_kernel | * @ingroup rt_kernel | ||||
| @@ -159,11 +159,11 @@ typedef struct rtAiCoreMemorySize { | |||||
| * @ingroup dvrt_mem | * @ingroup dvrt_mem | ||||
| * @brief memory type | * @brief memory type | ||||
| */ | */ | ||||
| typedef enum tagRtMemoryType { | |||||
| RT_MEMORY_TYPE_HOST = 1, | |||||
| RT_MEMORY_TYPE_DEVICE = 2 , | |||||
| RT_MEMORY_TYPE_SVM = 3, | |||||
| RT_MEMORY_TYPE_DVPP = 4 | |||||
| typedef enum tagRtMemoryType { | |||||
| RT_MEMORY_TYPE_HOST = 1, | |||||
| RT_MEMORY_TYPE_DEVICE = 2, | |||||
| RT_MEMORY_TYPE_SVM = 3, | |||||
| RT_MEMORY_TYPE_DVPP = 4 | |||||
| } rtMemoryType_t; | } rtMemoryType_t; | ||||
| /** | /** | ||||
| @@ -179,23 +179,23 @@ typedef struct tagRtPointerAttributes { | |||||
| typedef struct rtMallocHostSharedMemoryIn { | typedef struct rtMallocHostSharedMemoryIn { | ||||
| const char* name; | |||||
| const uint64_t size; | |||||
| uint32_t flag; | |||||
| const char *name; | |||||
| const uint64_t size; | |||||
| uint32_t flag; | |||||
| } rtMallocHostSharedMemoryIn; | } rtMallocHostSharedMemoryIn; | ||||
| typedef struct rtMallocHostSharedMemoryOut { | typedef struct rtMallocHostSharedMemoryOut { | ||||
| int fd; | |||||
| void* ptr; | |||||
| void* devPtr; | |||||
| int fd; | |||||
| void *ptr; | |||||
| void *devPtr; | |||||
| } rtMallocHostSharedMemoryOut; | } rtMallocHostSharedMemoryOut; | ||||
| typedef struct rtFreeHostSharedMemoryIn { | typedef struct rtFreeHostSharedMemoryIn { | ||||
| const char* name; | |||||
| const uint64_t size; | |||||
| int fd; | |||||
| void* ptr; | |||||
| void* devPtr; | |||||
| const char *name; | |||||
| const uint64_t size; | |||||
| int fd; | |||||
| void *ptr; | |||||
| void *devPtr; | |||||
| } rtFreeHostSharedMemoryIn; | } rtFreeHostSharedMemoryIn; | ||||
| @@ -267,7 +267,7 @@ RTS_API rtError_t rtFreeHost(void *hostPtr); | |||||
| */ | */ | ||||
| RTS_API rtError_t rtMallocHostSharedMemory(rtMallocHostSharedMemoryIn *in, | RTS_API rtError_t rtMallocHostSharedMemory(rtMallocHostSharedMemoryIn *in, | ||||
| rtMallocHostSharedMemoryOut *out); | |||||
| rtMallocHostSharedMemoryOut *out); | |||||
| /** | /** | ||||
| * @ingroup dvrt_mem | * @ingroup dvrt_mem | ||||
| @@ -36,6 +36,7 @@ extern "C" { | |||||
| #define RT_STREAM_FORBIDDEN_DEFAULT (0x10) | #define RT_STREAM_FORBIDDEN_DEFAULT (0x10) | ||||
| #define RT_STREAM_HEAD (0x20) | #define RT_STREAM_HEAD (0x20) | ||||
| #define RT_STREAM_PRIMARY_DEFAULT (0x40) | #define RT_STREAM_PRIMARY_DEFAULT (0x40) | ||||
| #define RT_STREAM_PRIMARY_FIRST_DEFAULT (0x80) | |||||
| /** | /** | ||||
| * @ingroup stream_type | * @ingroup stream_type | ||||
| @@ -0,0 +1,52 @@ | |||||
| /** | |||||
| * @file ExternalSoftDp.h | |||||
| * | |||||
| * Copyright (c) Huawei Technologies Co., Ltd. 2012-2018. All rights reserved. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |||||
| */ | |||||
| #ifndef EXTERNALSOFTDP_H | |||||
| #define EXTERNALSOFTDP_H | |||||
| #include <stdint.h> | |||||
| extern "C" { | |||||
| struct SoftDpProcsessInfo { | |||||
| uint8_t* inputBuffer; | |||||
| uint32_t inputBufferSize; | |||||
| uint8_t* outputBuffer; | |||||
| uint32_t outputBufferSize; | |||||
| uint32_t outputWidth; | |||||
| uint32_t outputHeight; | |||||
| uint32_t reserved; | |||||
| }; | |||||
| struct DpCropInfo { | |||||
| uint32_t left; | |||||
| uint32_t right; | |||||
| uint32_t up; | |||||
| uint32_t down; | |||||
| }; | |||||
| /* | |||||
| * @brief decode and resize interface | |||||
| * @param [in] SoftDpProcsessInfo& softDpProcsessInfo : soft dp struct | |||||
| * @return success: return 0, fail: return error number | |||||
| */ | |||||
| uint32_t DecodeAndResizeJpeg(SoftDpProcsessInfo& softDpProcsessInfo); | |||||
| /* | |||||
| * @brief decode crop and resize interface | |||||
| * @param [in] SoftDpProcsessInfo& softDpProcsessInfo : soft dp struct | |||||
| * @param [in] const DpCropInfo& cropInfo: crop struct | |||||
| * @return success: return 0, fail: return error number | |||||
| */ | |||||
| uint32_t DecodeAndCropAndResizeJpeg(SoftDpProcsessInfo& softDpProcsessInfo, const DpCropInfo& cropInfo); | |||||
| } | |||||
| #endif // EXTERNALSOFTDP_H | |||||
| @@ -18,7 +18,9 @@ | |||||
| #define D_SYSLOG_H_ | #define D_SYSLOG_H_ | ||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| #ifndef LOG_CPP | |||||
| extern "C" { | extern "C" { | ||||
| #endif | |||||
| #endif // __cplusplus | #endif // __cplusplus | ||||
| #ifndef LINUX | #ifndef LINUX | ||||
| @@ -105,6 +107,7 @@ extern "C" { | |||||
| #define SECURITY_LOG_MASK (0x00100000) | #define SECURITY_LOG_MASK (0x00100000) | ||||
| #define RUN_LOG_MASK (0x01000000) | #define RUN_LOG_MASK (0x01000000) | ||||
| #define OPERATION_LOG_MASK (0x10000000) | #define OPERATION_LOG_MASK (0x10000000) | ||||
| #define RESERVERD_LENGTH 52 | |||||
| typedef struct tagDCODE { | typedef struct tagDCODE { | ||||
| const char *cName; | const char *cName; | ||||
| @@ -116,6 +119,18 @@ typedef struct tagKV { | |||||
| char *value; | char *value; | ||||
| } KeyValue; | } KeyValue; | ||||
| typedef enum { | |||||
| APPLICATION = 0, | |||||
| SYSTEM | |||||
| } ProcessType; | |||||
| typedef struct { | |||||
| ProcessType type; | |||||
| unsigned int pid; | |||||
| unsigned int deviceId; | |||||
| char reserved[RESERVERD_LENGTH]; | |||||
| } LogAttr; | |||||
| /** | /** | ||||
| * @ingroup slog | * @ingroup slog | ||||
| * | * | ||||
| @@ -228,6 +243,14 @@ DLL_EXPORT int dlog_setlevel(int moduleId, int level, int enableEvent); | |||||
| */ | */ | ||||
| DLL_EXPORT int CheckLogLevel(int moduleId, int logLevel); | DLL_EXPORT int CheckLogLevel(int moduleId, int logLevel); | ||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogSetAttr: set log attr, default pid is 0, default device id is 0, default process type is APPLICATION | |||||
| * @param [in]logAttr: attr info, include pid(must be larger than 0), process type and device id(chip ID) | |||||
| * @return: 0: SUCCEED, others: FAILED | |||||
| */ | |||||
| DLL_EXPORT int DlogSetAttr(LogAttr logAttr); | |||||
| /** | /** | ||||
| * @ingroup slog | * @ingroup slog | ||||
| * @brief dlog_error: print error log | * @brief dlog_error: print error log | ||||
| @@ -367,6 +390,121 @@ void DlogInner(int moduleId, int level, const char *fmt, ...); | |||||
| void DlogWithKVInner(int moduleId, int level, KeyValue *pstKVArray, int kvNum, const char *fmt, ...); | void DlogWithKVInner(int moduleId, int level, KeyValue *pstKVArray, int kvNum, const char *fmt, ...); | ||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| #ifndef LOG_CPP | |||||
| } | } | ||||
| #endif // LOG_CPP | |||||
| #endif // __cplusplus | #endif // __cplusplus | ||||
| #ifdef LOG_CPP | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogGetlevelForC: get module loglevel and enableEvent | |||||
| * | |||||
| * @param [in]moduleId: moudule id(see slog.h, eg: CCE), others: invalid | |||||
| * @param [out]enableEvent: 1: enable; 0: disable | |||||
| * @return: module level(0: debug, 1: info, 2: warning, 3: error, 4: null output) | |||||
| */ | |||||
| DLL_EXPORT int DlogGetlevelForC(int moduleId, int *enableEvent); | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogSetlevelForC: set module loglevel and enableEvent | |||||
| * | |||||
| * @param [in]moduleId: moudule id(see slog.h, eg: CCE), -1: all modules, others: invalid | |||||
| * @param [in]level: log level(0: debug, 1: info, 2: warning, 3: error, 4: null output) | |||||
| * @param [in]enableEvent: 1: enable; 0: disable, others:invalid | |||||
| * @return: 0: SUCCEED, others: FAILED | |||||
| */ | |||||
| DLL_EXPORT int DlogSetlevelForC(int moduleId, int level, int enableEvent); | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief CheckLogLevelForC: check module level enable or not | |||||
| * users no need to call it because all dlog interface(include inner interface) has already called | |||||
| * | |||||
| * @param [in]moduleId: module id, eg: CCE | |||||
| * @param [in]logLevel: eg: DLOG_EVENT/DLOG_ERROR/DLOG_WARN/DLOG_INFO/DLOG_DEBUG | |||||
| * @return: 1:enable, 0:disable | |||||
| */ | |||||
| DLL_EXPORT int CheckLogLevelForC(int moduleId, int logLevel); | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogSetAttrForC: set log attr, default pid is 0, default device id is 0, default process type is APPLICATION | |||||
| * @param [in]logAttr: attr info, include pid(must be larger than 0), process type and device id(chip ID) | |||||
| * @return: 0: SUCCEED, others: FAILED | |||||
| */ | |||||
| DLL_EXPORT int DlogSetAttrForC(LogAttr logAttr); | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogForC: print log, need caller to specify level | |||||
| * call CheckLogLevelForC in advance to optimize performance, call interface with fmt input take time | |||||
| * | |||||
| * @param [in]moduleId: module id, eg: CCE | |||||
| * @param [in]level(0: debug, 1: info, 2: warning, 3: error, 5: trace, 6: oplog, 16: event) | |||||
| * @param [in]fmt: log content | |||||
| */ | |||||
| #define DlogForC(moduleId, level, fmt, ...) \ | |||||
| do { \ | |||||
| if(CheckLogLevelForC(moduleId, level) == 1) { \ | |||||
| DlogInnerForC(moduleId, level, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ | |||||
| } \ | |||||
| } while (0) | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogSubForC: print log, need caller to specify level and submodule | |||||
| * call CheckLogLevelForC in advance to optimize performance, call interface with fmt input take time | |||||
| * | |||||
| * @param [in]moduleId: module id, eg: CCE | |||||
| * @param [in]submodule: eg: engine | |||||
| * @param [in]level(0: debug, 1: info, 2: warning, 3: error, 5: trace, 6: oplog, 16: event) | |||||
| * @param [in]fmt: log content | |||||
| */ | |||||
| #define DlogSubForC(moduleId, submodule, level, fmt, ...) \ | |||||
| do { \ | |||||
| if(CheckLogLevelForC(moduleId, level) == 1) { \ | |||||
| DlogInnerForC(moduleId, level, "[%s:%d][%s]" fmt, __FILE__, __LINE__, submodule, ##__VA_ARGS__); \ | |||||
| } \ | |||||
| } while (0) | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogWithKVForC: print log, need caller to specify level and other paramters | |||||
| * call CheckLogLevelForC in advance to optimize performance, call interface with fmt input take time | |||||
| * | |||||
| * @param [in]moduleId: module id, eg: CCE | |||||
| * @param [in]level(0: debug, 1: info, 2: warning, 3: error, 5: trace, 6: oplog, 16: event) | |||||
| * @param [in]pstKVArray: key-value array | |||||
| * @param [in]kvNum: key-value element num in array | |||||
| * @param [in]fmt: log content | |||||
| */ | |||||
| #define DlogWithKVForC(moduleId, level, pstKVArray, kvNum, fmt, ...) \ | |||||
| do { \ | |||||
| if(CheckLogLevelForC(moduleId, level) == 1) { \ | |||||
| DlogWithKVInnerForC(moduleId, level, pstKVArray, kvNum, "[%s:%d]" fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ | |||||
| } \ | |||||
| } while (0) | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief DlogFlushForC: flush log buffer to file | |||||
| */ | |||||
| DLL_EXPORT void DlogFlushForC(void); | |||||
| /** | |||||
| * @ingroup slog | |||||
| * @brief Internal log interface, other modules are not allowed to call this interface | |||||
| */ | |||||
| void DlogInnerForC(int moduleId, int level, const char *fmt, ...); | |||||
| void DlogWithKVInnerForC(int moduleId, int level, KeyValue *pstKVArray, int kvNum, const char *fmt, ...); | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif // LOG_CPP | |||||
| #endif // D_SYSLOG_H_ | #endif // D_SYSLOG_H_ | ||||