| @@ -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. | |||
| * | |||
| @@ -51,15 +42,6 @@ HcclResult hcom_get_rank_size(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. | |||
| * | |||
| @@ -69,15 +51,6 @@ HcclResult hcom_get_local_rank_size(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. | |||
| * | |||
| @@ -87,15 +60,6 @@ HcclResult hcom_get_rank_id(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. | |||
| * | |||
| @@ -105,16 +69,6 @@ HcclResult hcom_get_local_rank_id(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. | |||
| * | |||
| @@ -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); | |||
| /** | |||
| * @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. | |||
| * | |||
| @@ -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); | |||
| /** | |||
| * @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. | |||
| * | |||
| @@ -165,14 +99,6 @@ HcclResult hcom_create_group(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 | |||
| * | |||
| @@ -189,46 +115,54 @@ HcclResult HcomDestroyGroup(const char *group); | |||
| * @param IdxList A list identifying the index of end gradient in each segment. | |||
| * @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 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 | |||
| */ | |||
| 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 | |||
| */ | |||
| 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 | |||
| */ | |||
| 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 | |||
| */ | |||
| 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. | |||
| @@ -239,16 +173,6 @@ extern HcclResult hcom_remote_access_mem_register(const MemRegisterAddr* addrLis | |||
| */ | |||
| 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 | |||
| } | |||
| #endif // __cplusplus | |||
| @@ -279,8 +279,9 @@ typedef struct { | |||
| #define M_NAME_MAX MAX_FNAME | |||
| #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_R_OK R_OK | |||
| #define MM_DT_DIR DT_DIR | |||
| #define MM_DT_REG DT_REG | |||
| @@ -322,6 +322,7 @@ typedef VOID (*mmPf)(VOID); | |||
| #define M_NAME_MAX _MAX_FNAME | |||
| #define M_F_OK 0 | |||
| #define M_X_OK 1 | |||
| #define M_W_OK 2 | |||
| #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; | |||
| 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; | |||
| 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 (*rtTaskFailCallback)(rtExceptionInfo *exceptionInfo); | |||
| typedef void (*rtTaskFailCallbackByModule)(rtTaskFailInfo *exceptionInfo); | |||
| typedef void (*rtDeviceStateCallback)(uint32_t devId, bool isOpen); | |||
| /** | |||
| @@ -143,13 +134,13 @@ RTS_API rtError_t rtProfilerConfig(uint16_t type); | |||
| * @ingroup profiling_base | |||
| * @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 | |||
| * @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 | |||
| @@ -209,7 +200,7 @@ RTS_API rtError_t rtRegDeviceStateCallback(const char *regName, rtDeviceStateCal | |||
| * @param [out] NA | |||
| * @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 | |||
| @@ -42,6 +42,7 @@ typedef enum tagRtChipType { | |||
| CHIP_MDC, | |||
| CHIP_LHISI, | |||
| CHIP_DC, | |||
| CHIP_CLOUD_V2, | |||
| CHIP_END, | |||
| } rtChipType_t; | |||
| @@ -62,6 +63,7 @@ typedef enum tagRtPlatformType { | |||
| PLATFORM_LHISI_ES, | |||
| PLATFORM_LHISI_CS, | |||
| PLATFORM_DC, | |||
| PLATFORM_CLOUD_V2, | |||
| PLATFORM_END, | |||
| } rtPlatformType_t; | |||
| @@ -119,7 +121,9 @@ typedef struct tagRtMemoryConfig { | |||
| uint32_t compilerSize; | |||
| } rtMemoryConfig_t; | |||
| typedef struct tagRtPlatformConfig { uint32_t platformConfig; } rtPlatformConfig_t; | |||
| typedef struct tagRtPlatformConfig { | |||
| uint32_t platformConfig; | |||
| } rtPlatformConfig_t; | |||
| /** | |||
| * @ingroup | |||
| @@ -47,7 +47,7 @@ typedef struct tagRtGroupInfo { | |||
| uint32_t aivectorNum; | |||
| uint32_t sdmaNum; | |||
| uint32_t activeStreamNum; | |||
| void* extrPtr; | |||
| void *extrPtr; | |||
| } 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_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 | |||
| @@ -387,7 +387,7 @@ typedef void *rtModel_t; | |||
| * @return RT_ERROR_NONE for ok | |||
| * @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 | |||
| @@ -159,11 +159,11 @@ typedef struct rtAiCoreMemorySize { | |||
| * @ingroup dvrt_mem | |||
| * @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; | |||
| /** | |||
| @@ -179,23 +179,23 @@ typedef struct tagRtPointerAttributes { | |||
| typedef struct rtMallocHostSharedMemoryIn { | |||
| const char* name; | |||
| const uint64_t size; | |||
| uint32_t flag; | |||
| const char *name; | |||
| const uint64_t size; | |||
| uint32_t flag; | |||
| } rtMallocHostSharedMemoryIn; | |||
| typedef struct rtMallocHostSharedMemoryOut { | |||
| int fd; | |||
| void* ptr; | |||
| void* devPtr; | |||
| int fd; | |||
| void *ptr; | |||
| void *devPtr; | |||
| } rtMallocHostSharedMemoryOut; | |||
| 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; | |||
| @@ -267,7 +267,7 @@ RTS_API rtError_t rtFreeHost(void *hostPtr); | |||
| */ | |||
| RTS_API rtError_t rtMallocHostSharedMemory(rtMallocHostSharedMemoryIn *in, | |||
| rtMallocHostSharedMemoryOut *out); | |||
| rtMallocHostSharedMemoryOut *out); | |||
| /** | |||
| * @ingroup dvrt_mem | |||
| @@ -36,6 +36,7 @@ extern "C" { | |||
| #define RT_STREAM_FORBIDDEN_DEFAULT (0x10) | |||
| #define RT_STREAM_HEAD (0x20) | |||
| #define RT_STREAM_PRIMARY_DEFAULT (0x40) | |||
| #define RT_STREAM_PRIMARY_FIRST_DEFAULT (0x80) | |||
| /** | |||
| * @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_ | |||
| #ifdef __cplusplus | |||
| #ifndef LOG_CPP | |||
| extern "C" { | |||
| #endif | |||
| #endif // __cplusplus | |||
| #ifndef LINUX | |||
| @@ -105,6 +107,7 @@ extern "C" { | |||
| #define SECURITY_LOG_MASK (0x00100000) | |||
| #define RUN_LOG_MASK (0x01000000) | |||
| #define OPERATION_LOG_MASK (0x10000000) | |||
| #define RESERVERD_LENGTH 52 | |||
| typedef struct tagDCODE { | |||
| const char *cName; | |||
| @@ -116,6 +119,18 @@ typedef struct tagKV { | |||
| char *value; | |||
| } KeyValue; | |||
| typedef enum { | |||
| APPLICATION = 0, | |||
| SYSTEM | |||
| } ProcessType; | |||
| typedef struct { | |||
| ProcessType type; | |||
| unsigned int pid; | |||
| unsigned int deviceId; | |||
| char reserved[RESERVERD_LENGTH]; | |||
| } LogAttr; | |||
| /** | |||
| * @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); | |||
| /** | |||
| * @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 | |||
| * @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, ...); | |||
| #ifdef __cplusplus | |||
| #ifndef LOG_CPP | |||
| } | |||
| #endif // LOG_CPP | |||
| #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_ | |||