@@ -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_ |