| @@ -83,9 +83,9 @@ if (ENABLE_OPEN_SRC) | |||
| find_module(msprofiler_fwk libmsprofiler_fwk.a ${GE_LIB_PATH}) | |||
| #find_module(ascendcl_static libascendcl.a ${GE_LIB_PATH}) | |||
| else() | |||
| find_module(slog libslog.so ${ASCEND_ATC_DIR}) | |||
| find_module(static_mmpa libmmpa.a ${ASCEND_ATC_DIR}) | |||
| find_module(error_manager liberror_manager.so ${ASCEND_ATC_DIR}) | |||
| find_module(slog libslog.so ${ASCEND_ATC_DIR} ${ASCEND_DRIVER_COMMON_DIR}) | |||
| find_module(static_mmpa libmmpa.a ${ASCEND_ATC_DIR} ${ASCEND_RUNTIME_DIR}) | |||
| find_module(error_manager liberror_manager.so ${ASCEND_ATC_DIR} ${ASCEND_RUNTIME_DIR}) | |||
| if(PLATFORM STREQUAL "train") | |||
| find_module(hccl libhccl.so ${ASCEND_RUNTIME_DIR}) | |||
| find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR}) | |||
| @@ -5,15 +5,15 @@ endif() | |||
| include(ExternalProject) | |||
| set(JSON_SRC_DIR ${CMAKE_BINARY_DIR}/opensrc/json/include) | |||
| #if (ENABLE_GITEE) | |||
| # set(REQ_URL "https://gitee.com/mirrors/JSON-for-Modern-CPP/repository/archive/v3.6.1.zip") | |||
| # set(MD5 "5bda78ce308e6cfcf614dcf1d5ff27a7") | |||
| # set(JSON_INCLUDE_DIR "${JSON_SRC_DIR}/include") | |||
| #else() | |||
| set(REQ_URL "https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip") | |||
| set(MD5 "0dc903888211db3a0f170304cd9f3a89") | |||
| set(JSON_INCLUDE_DIR ${JSON_SRC_DIR}) | |||
| #endif () | |||
| if (ENABLE_GITEE) | |||
| set(REQ_URL "https://gitee.com/mirrors/JSON-for-Modern-CPP/repository/archive/v3.6.1.zip") | |||
| set(MD5 "5bda78ce308e6cfcf614dcf1d5ff27a7") | |||
| set(JSON_INCLUDE_DIR "${JSON_SRC_DIR}/include") | |||
| else() | |||
| set(REQ_URL "https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip") | |||
| set(MD5 "0dc903888211db3a0f170304cd9f3a89") | |||
| set(JSON_INCLUDE_DIR ${JSON_SRC_DIR}) | |||
| endif () | |||
| ExternalProject_Add(json_build | |||
| URL ${REQ_URL} | |||
| #URL /home/txd/workspace/cloud_code/pkg/include.zip | |||
| @@ -0,0 +1,570 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef INC_EXTERNAL_ACL_ACL_BASE_H_ | |||
| #define INC_EXTERNAL_ACL_ACL_BASE_H_ | |||
| #include <stdint.h> | |||
| #include <stddef.h> | |||
| #include "error_codes/rt_error_codes.h" | |||
| #include "error_codes/ge_error_codes.h" | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| #if defined(_MSC_VER) | |||
| #ifdef FUNC_VISIBILITY | |||
| #define ACL_FUNC_VISIBILITY _declspec(dllexport) | |||
| #else | |||
| #define ACL_FUNC_VISIBILITY | |||
| #endif | |||
| #else | |||
| #ifdef FUNC_VISIBILITY | |||
| #define ACL_FUNC_VISIBILITY __attribute__((visibility("default"))) | |||
| #else | |||
| #define ACL_FUNC_VISIBILITY | |||
| #endif | |||
| #endif | |||
| #ifdef __GNUC__ | |||
| #define ACL_DEPRECATED __attribute__((deprecated)) | |||
| #define ACL_DEPRECATED_MESSAGE(message) __attribute__((deprecated(message))) | |||
| #elif defined(_MSC_VER) | |||
| #define ACL_DEPRECATED __declspec(deprecated) | |||
| #define ACL_DEPRECATED_MESSAGE(message) __declspec(deprecated(message)) | |||
| #else | |||
| #define ACL_DEPRECATED | |||
| #define ACL_DEPRECATED_MESSAGE(message) | |||
| #endif | |||
| typedef void *aclrtStream; | |||
| typedef void *aclrtEvent; | |||
| typedef void *aclrtContext; | |||
| typedef int aclError; | |||
| typedef uint16_t aclFloat16; | |||
| typedef struct aclDataBuffer aclDataBuffer; | |||
| typedef struct aclTensorDesc aclTensorDesc; | |||
| static const int ACL_ERROR_NONE = 0; | |||
| static const int ACL_SUCCESS = 0; | |||
| static const int ACL_ERROR_INVALID_PARAM = 100000; | |||
| static const int ACL_ERROR_UNINITIALIZE = 100001; | |||
| static const int ACL_ERROR_REPEAT_INITIALIZE = 100002; | |||
| static const int ACL_ERROR_INVALID_FILE = 100003; | |||
| static const int ACL_ERROR_WRITE_FILE = 100004; | |||
| static const int ACL_ERROR_INVALID_FILE_SIZE = 100005; | |||
| static const int ACL_ERROR_PARSE_FILE = 100006; | |||
| static const int ACL_ERROR_FILE_MISSING_ATTR = 100007; | |||
| static const int ACL_ERROR_FILE_ATTR_INVALID = 100008; | |||
| static const int ACL_ERROR_INVALID_DUMP_CONFIG = 100009; | |||
| static const int ACL_ERROR_INVALID_PROFILING_CONFIG = 100010; | |||
| static const int ACL_ERROR_INVALID_MODEL_ID = 100011; | |||
| static const int ACL_ERROR_DESERIALIZE_MODEL = 100012; | |||
| static const int ACL_ERROR_PARSE_MODEL = 100013; | |||
| static const int ACL_ERROR_READ_MODEL_FAILURE = 100014; | |||
| static const int ACL_ERROR_MODEL_SIZE_INVALID = 100015; | |||
| static const int ACL_ERROR_MODEL_MISSING_ATTR = 100016; | |||
| static const int ACL_ERROR_MODEL_INPUT_NOT_MATCH = 100017; | |||
| static const int ACL_ERROR_MODEL_OUTPUT_NOT_MATCH = 100018; | |||
| static const int ACL_ERROR_MODEL_NOT_DYNAMIC = 100019; | |||
| static const int ACL_ERROR_OP_TYPE_NOT_MATCH = 100020; | |||
| static const int ACL_ERROR_OP_INPUT_NOT_MATCH = 100021; | |||
| static const int ACL_ERROR_OP_OUTPUT_NOT_MATCH = 100022; | |||
| static const int ACL_ERROR_OP_ATTR_NOT_MATCH = 100023; | |||
| static const int ACL_ERROR_OP_NOT_FOUND = 100024; | |||
| static const int ACL_ERROR_OP_LOAD_FAILED = 100025; | |||
| static const int ACL_ERROR_UNSUPPORTED_DATA_TYPE = 100026; | |||
| static const int ACL_ERROR_FORMAT_NOT_MATCH = 100027; | |||
| static const int ACL_ERROR_BIN_SELECTOR_NOT_REGISTERED = 100028; | |||
| static const int ACL_ERROR_KERNEL_NOT_FOUND = 100029; | |||
| static const int ACL_ERROR_BIN_SELECTOR_ALREADY_REGISTERED = 100030; | |||
| static const int ACL_ERROR_KERNEL_ALREADY_REGISTERED = 100031; | |||
| static const int ACL_ERROR_INVALID_QUEUE_ID = 100032; | |||
| static const int ACL_ERROR_REPEAT_SUBSCRIBE = 100033; | |||
| static const int ACL_ERROR_STREAM_NOT_SUBSCRIBE = 100034; | |||
| static const int ACL_ERROR_THREAD_NOT_SUBSCRIBE = 100035; | |||
| static const int ACL_ERROR_WAIT_CALLBACK_TIMEOUT = 100036; | |||
| static const int ACL_ERROR_REPEAT_FINALIZE = 100037; | |||
| static const int ACL_ERROR_NOT_STATIC_AIPP = 100038; | |||
| static const int ACL_ERROR_COMPILING_STUB_MODE = 100039; | |||
| static const int ACL_ERROR_GROUP_NOT_SET = 100040; | |||
| static const int ACL_ERROR_GROUP_NOT_CREATE = 100041; | |||
| static const int ACL_ERROR_PROF_ALREADY_RUN = 100042; | |||
| static const int ACL_ERROR_PROF_NOT_RUN = 100043; | |||
| static const int ACL_ERROR_DUMP_ALREADY_RUN = 100044; | |||
| static const int ACL_ERROR_DUMP_NOT_RUN = 100045; | |||
| static const int ACL_ERROR_PROF_REPEAT_SUBSCRIBE = 148046; | |||
| static const int ACL_ERROR_PROF_API_CONFLICT = 148047; | |||
| static const int ACL_ERROR_INVALID_MAX_OPQUEUE_NUM_CONFIG = 148048; | |||
| static const int ACL_ERROR_BAD_ALLOC = 200000; | |||
| static const int ACL_ERROR_API_NOT_SUPPORT = 200001; | |||
| static const int ACL_ERROR_INVALID_DEVICE = 200002; | |||
| static const int ACL_ERROR_MEMORY_ADDRESS_UNALIGNED = 200003; | |||
| static const int ACL_ERROR_RESOURCE_NOT_MATCH = 200004; | |||
| static const int ACL_ERROR_INVALID_RESOURCE_HANDLE = 200005; | |||
| static const int ACL_ERROR_FEATURE_UNSUPPORTED = 200006; | |||
| static const int ACL_ERROR_PROF_MODULES_UNSUPPORTED = 200007; | |||
| static const int ACL_ERROR_STORAGE_OVER_LIMIT = 300000; | |||
| static const int ACL_ERROR_INTERNAL_ERROR = 500000; | |||
| static const int ACL_ERROR_FAILURE = 500001; | |||
| static const int ACL_ERROR_GE_FAILURE = 500002; | |||
| static const int ACL_ERROR_RT_FAILURE = 500003; | |||
| static const int ACL_ERROR_DRV_FAILURE = 500004; | |||
| static const int ACL_ERROR_PROFILING_FAILURE = 500005; | |||
| #define ACL_TENSOR_SHAPE_RANGE_NUM 2 | |||
| #define ACL_UNKNOWN_RANK 0xFFFFFFFFFFFFFFFE | |||
| typedef enum { | |||
| ACL_DT_UNDEFINED = -1, | |||
| ACL_FLOAT = 0, | |||
| ACL_FLOAT16 = 1, | |||
| ACL_INT8 = 2, | |||
| ACL_INT32 = 3, | |||
| ACL_UINT8 = 4, | |||
| ACL_INT16 = 6, | |||
| ACL_UINT16 = 7, | |||
| ACL_UINT32 = 8, | |||
| ACL_INT64 = 9, | |||
| ACL_UINT64 = 10, | |||
| ACL_DOUBLE = 11, | |||
| ACL_BOOL = 12, | |||
| ACL_STRING = 13, | |||
| } aclDataType; | |||
| typedef enum { | |||
| ACL_FORMAT_UNDEFINED = -1, | |||
| ACL_FORMAT_NCHW = 0, | |||
| ACL_FORMAT_NHWC = 1, | |||
| ACL_FORMAT_ND = 2, | |||
| ACL_FORMAT_NC1HWC0 = 3, | |||
| ACL_FORMAT_FRACTAL_Z = 4, | |||
| ACL_FORMAT_NC1HWC0_C04 = 12, | |||
| ACL_FORMAT_FRACTAL_NZ = 29, | |||
| } aclFormat; | |||
| typedef enum { | |||
| ACL_DEBUG = 0, | |||
| ACL_INFO = 1, | |||
| ACL_WARNING = 2, | |||
| ACL_ERROR = 3, | |||
| } aclLogLevel; | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Converts data of type aclFloat16 to data of type float | |||
| * | |||
| * @param value [IN] Data to be converted | |||
| * | |||
| * @retval Transformed data | |||
| */ | |||
| ACL_FUNC_VISIBILITY float aclFloat16ToFloat(aclFloat16 value); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Converts data of type float to data of type aclFloat16 | |||
| * | |||
| * @param value [IN] Data to be converted | |||
| * | |||
| * @retval Transformed data | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclFloat16 aclFloatToFloat16(float value); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create data of aclDataBuffer | |||
| * | |||
| * @param data [IN] pointer to data | |||
| * @li Need to be managed by the user, | |||
| * call aclrtMalloc interface to apply for memory, | |||
| * call aclrtFree interface to release memory | |||
| * | |||
| * @param size [IN] size of data in bytes | |||
| * | |||
| * @retval pointer to created instance. nullptr if run out of memory | |||
| * | |||
| * @see aclrtMalloc | aclrtFree | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclDataBuffer *aclCreateDataBuffer(void *data, size_t size); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief destroy data of aclDataBuffer | |||
| * | |||
| * @par Function | |||
| * Only the aclDataBuffer type data is destroyed here. | |||
| * The memory of the data passed in when the aclDataDataBuffer interface | |||
| * is called to create aclDataBuffer type data must be released by the user | |||
| * | |||
| * @param dataBuffer [IN] pointer to the aclDataBuffer | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclCreateDataBuffer | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclDestroyDataBuffer(const aclDataBuffer *dataBuffer); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get data address from aclDataBuffer | |||
| * | |||
| * @param dataBuffer [IN] pointer to the data of aclDataBuffer | |||
| * | |||
| * @retval data address | |||
| */ | |||
| ACL_FUNC_VISIBILITY void *aclGetDataBufferAddr(const aclDataBuffer *dataBuffer); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get data size of aclDataBuffer | |||
| * | |||
| * @param dataBuffer [IN] pointer to the data of aclDataBuffer | |||
| * | |||
| * @retval data size | |||
| */ | |||
| ACL_DEPRECATED_MESSAGE("aclGetDataBufferSize is deprecated, use aclGetDataBufferSizeV2 instead") | |||
| ACL_FUNC_VISIBILITY uint32_t aclGetDataBufferSize(const aclDataBuffer *dataBuffer); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get data size of aclDataBuffer to replace aclGetDataBufferSize | |||
| * | |||
| * @param dataBuffer [IN] pointer to the data of aclDataBuffer | |||
| * | |||
| * @retval data size | |||
| */ | |||
| ACL_FUNC_VISIBILITY size_t aclGetDataBufferSizeV2(const aclDataBuffer *dataBuffer); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get size of aclDataType | |||
| * | |||
| * @param dataType [IN] aclDataType data the size to get | |||
| * | |||
| * @retval size of the aclDataType | |||
| */ | |||
| ACL_FUNC_VISIBILITY size_t aclDataTypeSize(aclDataType dataType); | |||
| // interfaces of tensor desc | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create data aclTensorDesc | |||
| * | |||
| * @param dataType [IN] Data types described by tensor | |||
| * @param numDims [IN] the number of dimensions of the shape | |||
| * @param dims [IN] the size of the specified dimension | |||
| * @param format [IN] tensor format | |||
| * | |||
| * @retval aclTensorDesc pointer. | |||
| * @retval nullptr if param is invalid or run out of memory | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclTensorDesc *aclCreateTensorDesc(aclDataType dataType, int numDims, const int64_t *dims, | |||
| aclFormat format); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief destroy data aclTensorDesc | |||
| * | |||
| * @param desc [IN] pointer to the data of aclTensorDesc to destroy | |||
| */ | |||
| ACL_FUNC_VISIBILITY void aclDestroyTensorDesc(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set tensor shape range for aclTensorDesc | |||
| * | |||
| * @param desc [OUT] pointer to the data of aclTensorDesc | |||
| * @param dimsCount [IN] the number of dimensions of the shape | |||
| * @param dimsRange [IN] the range of dimensions of the shape | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorShapeRange(aclTensorDesc *desc, size_t dimsCount, | |||
| int64_t dimsRange[][ACL_TENSOR_SHAPE_RANGE_NUM]); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get data type specified by the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * | |||
| * @retval data type specified by the tensor description. | |||
| * @retval ACL_DT_UNDEFINED if description is null | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclDataType aclGetTensorDescType(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get data format specified by the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * | |||
| * @retval data format specified by the tensor description. | |||
| * @retval ACL_FORMAT_UNDEFINED if description is null | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclFormat aclGetTensorDescFormat(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get tensor size specified by the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * | |||
| * @retval data size specified by the tensor description. | |||
| * @retval 0 if description is null | |||
| */ | |||
| ACL_FUNC_VISIBILITY size_t aclGetTensorDescSize(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get element count specified by the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * | |||
| * @retval element count specified by the tensor description. | |||
| * @retval 0 if description is null | |||
| */ | |||
| ACL_FUNC_VISIBILITY size_t aclGetTensorDescElementCount(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get number of dims specified by the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * | |||
| * @retval number of dims specified by the tensor description. | |||
| * @retval 0 if description is null | |||
| * @retval ACL_UNKNOWN_RANK if the tensor dim is -2 | |||
| */ | |||
| ACL_FUNC_VISIBILITY size_t aclGetTensorDescNumDims(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Get the size of the specified dim in the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * @param index [IN] index of dims, start from 0. | |||
| * | |||
| * @retval dim specified by the tensor description and index. | |||
| * @retval -1 if description or index is invalid | |||
| */ | |||
| ACL_DEPRECATED_MESSAGE("aclGetTensorDescDim is deprecated, use aclGetTensorDescDimV2 instead") | |||
| ACL_FUNC_VISIBILITY int64_t aclGetTensorDescDim(const aclTensorDesc *desc, size_t index); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Get the size of the specified dim in the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * @param index [IN] index of dims, start from 0. | |||
| * @param dimSize [OUT] size of the specified dim. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclGetTensorDescDimV2(const aclTensorDesc *desc, size_t index, int64_t *dimSize); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Get the range of the specified dim in the tensor description | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * @param index [IN] index of dims, start from 0. | |||
| * @param dimRangeNum [IN] number of dimRange. | |||
| * @param dimRange [OUT] range of the specified dim. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclGetTensorDescDimRange(const aclTensorDesc *desc, size_t index, size_t dimRangeNum, | |||
| int64_t *dimRange); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set tensor description name | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param name [IN] tensor description name | |||
| */ | |||
| ACL_FUNC_VISIBILITY void aclSetTensorDescName(aclTensorDesc *desc, const char *name); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get tensor description name | |||
| * | |||
| * @param desc [IN] pointer to the instance of aclTensorDesc | |||
| * | |||
| * @retval tensor description name. | |||
| * @retval empty string if description is null | |||
| */ | |||
| ACL_FUNC_VISIBILITY const char *aclGetTensorDescName(aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Convert the format in the source aclTensorDesc according to | |||
| * the specified dstFormat to generate a new target aclTensorDesc. | |||
| * The format in the source aclTensorDesc remains unchanged. | |||
| * | |||
| * @param srcDesc [IN] pointer to the source tensor desc | |||
| * @param dstFormat [IN] destination format | |||
| * @param dstDesc [OUT] pointer to the pointer to the destination tensor desc | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclTransTensorDescFormat(const aclTensorDesc *srcDesc, aclFormat dstFormat, | |||
| aclTensorDesc **dstDesc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the storage format specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param format [IN] the storage format | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_DEPRECATED_MESSAGE("aclSetTensorStorageFormat is deprecated, use aclSetTensorFormat instead") | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorStorageFormat(aclTensorDesc *desc, aclFormat format); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the storage shape specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param numDims [IN] the number of dimensions of the shape | |||
| * @param dims [IN] the size of the specified dimension | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_DEPRECATED_MESSAGE("aclSetTensorStorageShape is deprecated, use aclSetTensorShape instead") | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorStorageShape(aclTensorDesc *desc, int numDims, const int64_t *dims); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the format specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param format [IN] the storage format | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorFormat(aclTensorDesc *desc, aclFormat format); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the shape specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param numDims [IN] the number of dimensions of the shape | |||
| * @param dims [IN] the size of the specified dimension | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorShape(aclTensorDesc *desc, int numDims, const int64_t *dims); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the original format specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param format [IN] the storage format | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorOriginFormat(aclTensorDesc *desc, aclFormat format); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the original shape specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param numDims [IN] the number of dimensions of the shape | |||
| * @param dims [IN] the size of the specified dimension | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorOriginShape(aclTensorDesc *desc, int numDims, const int64_t *dims); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get op description info | |||
| * | |||
| * @param desc [IN] pointer to tensor description | |||
| * @param index [IN] index of tensor | |||
| * | |||
| * @retval null for failed. | |||
| * @retval OtherValues success. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclTensorDesc *aclGetTensorDescByIndex(aclTensorDesc *desc, size_t index); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief get address of tensor | |||
| * | |||
| * @param desc [IN] pointer to tensor description | |||
| * | |||
| * @retval null for failed | |||
| * @retval OtherValues success | |||
| */ | |||
| ACL_FUNC_VISIBILITY void *aclGetTensorDescAddress(const aclTensorDesc *desc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set the dynamic input name specified by the tensor description | |||
| * | |||
| * @param desc [OUT] pointer to the instance of aclTensorDesc | |||
| * @param dynamicInputName [IN] pointer to the dynamic input name | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetTensorDynamicInput(aclTensorDesc *desc, const char *dynamicInputName); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief an interface for users to output APP logs | |||
| * | |||
| * @param logLevel [IN] the level of current log | |||
| * @param func [IN] the function where the log is located | |||
| * @param file [IN] the file where the log is located | |||
| * @param line [IN] Number of source lines where the log is located | |||
| * @param fmt [IN] the format of current log | |||
| * @param ... [IN] the value of current log | |||
| */ | |||
| ACL_FUNC_VISIBILITY void aclAppLog(aclLogLevel logLevel, const char *func, const char *file, uint32_t line, | |||
| const char *fmt, ...); | |||
| #define ACL_APP_LOG(level, fmt, ...) aclAppLog(level, __FUNCTION__, __FILE__, __LINE__, fmt, ##__VA_ARGS__) | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // INC_EXTERNAL_ACL_ACL_BASE_H_ | |||
| @@ -0,0 +1,504 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef INC_EXTERNAL_ACL_ACL_OP_H_ | |||
| #define INC_EXTERNAL_ACL_ACL_OP_H_ | |||
| #include "acl_base.h" | |||
| #include "acl_rt.h" | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| typedef struct aclopHandle aclopHandle; | |||
| typedef struct aclopAttr aclopAttr; | |||
| typedef struct aclopKernelDesc aclopKernelDesc; | |||
| typedef void (*aclDataDeallocator)(void *data, size_t length); | |||
| static const int ACL_COMPILE_FLAG_BIN_SELECTOR = 1; | |||
| typedef enum aclEngineType { | |||
| ACL_ENGINE_SYS, | |||
| ACL_ENGINE_AICORE, | |||
| ACL_ENGINE_VECTOR, | |||
| } aclopEngineType; | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Set base directory that contains single op models | |||
| * | |||
| * @par Restriction | |||
| * The aclopSetModelDir interface can be called only once in a process. | |||
| * @param modelDir [IN] path of the directory | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetModelDir(const char *modelDir); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief load single op models from memory | |||
| * | |||
| * @par Restriction | |||
| * The aclopLoad interface can be called more than one times in a process. | |||
| * @param model [IN] address of single op models | |||
| * @param modelSize [IN] size of single op models | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopLoad(const void *model, size_t modelSize); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create data of type aclopAttr | |||
| * | |||
| * @retval pointer to created instance. | |||
| * @retval nullptr if run out of memory | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclopAttr *aclopCreateAttr(); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief destroy data of typ aclopAttr | |||
| * | |||
| * @param attr [IN] pointer to the instance of aclopAttr | |||
| */ | |||
| ACL_FUNC_VISIBILITY void aclopDestroyAttr(const aclopAttr *attr); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is bool | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param attrValue [IN] attribute value | |||
| * false if attrValue is 0, true otherwise. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrBool(aclopAttr *attr, const char *attrName, uint8_t attrValue); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is int64_t | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param attrValue [IN] attribute value | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrInt(aclopAttr *attr, const char *attrName, int64_t attrValue); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is float | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param attrValue [IN] attribute value | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrFloat(aclopAttr *attr, const char *attrName, float attrValue); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is string | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param attrValue [IN] attribute value | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrString(aclopAttr *attr, const char *attrName, const char *attrValue); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is list of bools | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param numValues [IN] number of values. false if attrValue is 0, true otherwise. | |||
| * @param values [IN] pointer to values | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrListBool(aclopAttr *attr, const char *attrName, int numValues, | |||
| const uint8_t *values); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is list of ints | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param numValues [IN] number of values | |||
| * @param values [IN] pointer to values | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrListInt(aclopAttr *attr, const char *attrName, int numValues, | |||
| const int64_t *values); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is list of floats | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param numValues [IN] number of values | |||
| * @param values [IN] pointer to values | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrListFloat(aclopAttr *attr, const char *attrName, int numValues, | |||
| const float *values); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is list of strings | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param numValues [IN] number of values | |||
| * @param values [IN] pointer to values | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrListString(aclopAttr *attr, const char *attrName, int numValues, | |||
| const char **values); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set an attribute. the type of the attribute is list of list of ints | |||
| * | |||
| * @param attr [OUT] pointer to the instance of aclopAttr | |||
| * @param attrName [IN] attribute name | |||
| * @param numLists [IN] number of lists | |||
| * @param numValues [IN] pointer to number of values of each list | |||
| * @param values [IN] pointer to values | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetAttrListListInt(aclopAttr *attr, const char *attrName, int numLists, | |||
| const int *numValues, const int64_t *const values[]); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Load and execute the specified operator asynchronously | |||
| * | |||
| * @par Restriction | |||
| * @li The input and output organization of each operator is different, | |||
| * and the application needs to organize the operator strictly | |||
| * according to the operator input and output parameters when calling. | |||
| * @li When the user calls aclopExecute, | |||
| * the ACL finds the corresponding task according to the optype, | |||
| * the description of the input tesnsor, | |||
| * the description of the output tesnsor, and attr, and issues the execution. | |||
| * | |||
| * @param opType [IN] type of op | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param inputs [IN] pointer to array of input buffers | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN] pointer to array of output tensor descriptions | |||
| * @param outputs [OUT] pointer to array of output buffers | |||
| * @param attr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_DEPRECATED_MESSAGE("aclopExecute is deprecated, use aclopExecuteV2 instead") | |||
| ACL_FUNC_VISIBILITY aclError aclopExecute(const char *opType, int numInputs, const aclTensorDesc *const inputDesc[], | |||
| const aclDataBuffer *const inputs[], int numOutputs, | |||
| const aclTensorDesc *const outputDesc[], aclDataBuffer *const outputs[], | |||
| const aclopAttr *attr, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Load and execute the specified operator | |||
| * The difference with aclopExecute is that aclopExecuteV2 will refresh outputDesc | |||
| * | |||
| * @par Restriction | |||
| * @li The input and output organization of each operator is different, | |||
| * and the application needs to organize the operator strictly | |||
| * according to the operator input and output parameters when calling. | |||
| * @li When the user calls aclopExecuteV2, | |||
| * the ACL finds the corresponding task according to the optype, | |||
| * the description of the input tesnsor, | |||
| * the description of the output tesnsor, and attr, and issues the execution. | |||
| * | |||
| * @param opType [IN] type of op | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param inputs [IN] pointer to array of input buffers | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN|OUT] pointer to array of output tensor descriptions | |||
| * @param outputs [OUT] pointer to array of output buffers | |||
| * @param attr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopExecuteV2(const char *opType, int numInputs, aclTensorDesc *inputDesc[], | |||
| aclDataBuffer *inputs[], int numOutputs, aclTensorDesc *outputDesc[], | |||
| aclDataBuffer *outputs[], aclopAttr *attr, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a instance of aclopHandle. | |||
| * | |||
| * @param opType [IN] type of op | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN] pointer to array of output tensor descriptions | |||
| * @param opAttr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopCreateHandle(const char *opType, int numInputs, | |||
| const aclTensorDesc *const inputDesc[], int numOutputs, | |||
| const aclTensorDesc *const outputDesc[], const aclopAttr *opAttr, | |||
| aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief destroy aclopHandle instance | |||
| * | |||
| * @param handle [IN] pointer to the instance of aclopHandle | |||
| */ | |||
| ACL_FUNC_VISIBILITY void aclopDestroyHandle(aclopHandle *handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief execute an op with the handle. | |||
| * can save op model matching cost compared with aclopExecute | |||
| * | |||
| * @param handle [IN] pointer to the instance of aclopHandle. | |||
| * The aclopCreateHandle interface has been called | |||
| * in advance to create aclopHandle type data. | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputs [IN] pointer to array of input buffers. | |||
| * The aclCreateDataBuffer interface has been called | |||
| * in advance to create aclDataBuffer type data. | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputs [OUT] pointer to array of output buffers | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclopCreateHandle | aclCreateDataBuffer | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopExecWithHandle(aclopHandle *handle, int numInputs, | |||
| const aclDataBuffer *const inputs[], int numOutputs, | |||
| aclDataBuffer *const outputs[], aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief cast data type | |||
| * | |||
| * @param srcDesc [IN] source tensor desc | |||
| * @param srcBuffer [IN] source tensor buffer | |||
| * @param dstDesc [IN] destination tensor desc | |||
| * @param dstBuffer [OUT] destination tensor buffer | |||
| * @param truncate [IN] do not truncate if value is 0, truncate otherwise | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopCast(const aclTensorDesc *srcDesc, const aclDataBuffer *srcBuffer, | |||
| const aclTensorDesc *dstDesc, aclDataBuffer *dstBuffer, uint8_t truncate, | |||
| aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for casting datatype | |||
| * | |||
| * @param srcDesc [IN] source tensor desc | |||
| * @param dstDesc [IN] destination tensor desc | |||
| * @param truncate [IN] do not truncate if value is 0, truncate otherwise | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopCreateHandleForCast(aclTensorDesc *srcDesc, aclTensorDesc *dstDesc, uint8_t truncate, | |||
| aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create kernel | |||
| * | |||
| * @param opType [IN] op type | |||
| * @param kernelId [IN] kernel id | |||
| * @param kernelName [IN] kernel name | |||
| * @param binData [IN] kernel bin data | |||
| * @param binSize [IN] kernel bin size | |||
| * @param enginetype [IN] enigne type | |||
| * @param deallocator [IN] callback function for deallocating bin data, | |||
| * null if bin data to be deallocated by caller | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclopCompile | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopCreateKernel(const char *opType, const char *kernelId, const char *kernelName, | |||
| void *binData, int binSize, aclopEngineType enginetype, | |||
| aclDataDeallocator deallocator); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create kernel | |||
| * | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN] pointer to array of output tensor descriptions | |||
| * @param opAttr [IN] pointer to instance of aclopAttr | |||
| * @param aclopKernelDesc [IN] pointer to instance of aclopKernelDesc | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| typedef aclError (*aclopCompileFunc)(int numInputs, const aclTensorDesc *const inputDesc[], int numOutputs, | |||
| const aclTensorDesc *const outputDesc[], const aclopAttr *opAttr, | |||
| aclopKernelDesc *aclopKernelDesc); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief register compile function | |||
| * | |||
| * @param opType [IN] op type | |||
| * @param func [IN] compile function | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclopUnregisterCompileFunc | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopRegisterCompileFunc(const char *opType, aclopCompileFunc func); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief unregister compile function | |||
| * | |||
| * @param opType [IN] op type | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopUnregisterCompileFunc(const char *opType); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set kernel args | |||
| * | |||
| * @param kernelDesc [IN] pointer to instance of aclopKernelDesc | |||
| * @param kernelId [IN] kernel id | |||
| * @param blockDim [IN] block dim | |||
| * @param args [IN] args | |||
| * @param argSize [IN] size in bytes of args | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetKernelArgs(aclopKernelDesc *kernelDesc, const char *kernelId, uint32_t blockDim, | |||
| const void *args, uint32_t argSize); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set workspace sizes | |||
| * | |||
| * @param kernelDesc [IN] pointer to instance of aclopKernelDesc | |||
| * @param numWorkspaces [IN] number of workspaces | |||
| * @param workspaceSizes [IN] pointer to array of sizes of workspaces | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopSetKernelWorkspaceSizes(aclopKernelDesc *kernelDesc, int numWorkspaces, | |||
| size_t *workspaceSizes); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief compile op with dynamic shape | |||
| * | |||
| * @param opType [IN] op type | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN] pointer to array of output tensor descriptions | |||
| * @param attr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopUpdateParams(const char *opType, int numInputs, | |||
| const aclTensorDesc *const inputDesc[], int numOutputs, | |||
| const aclTensorDesc *const outputDesc[], const aclopAttr *attr); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief inferShape the specified operator synchronously | |||
| * | |||
| * @param opType [IN] type of op | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param inputs [IN] pointer to array of input buffers | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [OUT] pointer to array of output tensor descriptions | |||
| * @param attr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopInferShape(const char *opType, int numInputs, aclTensorDesc *inputDesc[], | |||
| aclDataBuffer *inputs[], int numOutputs, aclTensorDesc *outputDesc[], | |||
| aclopAttr *attr); | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // INC_EXTERNAL_ACL_ACL_OP_H_ | |||
| @@ -0,0 +1,106 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef INC_EXTERNAL_ACL_ACL_OP_COMPILER_H_ | |||
| #define INC_EXTERNAL_ACL_ACL_OP_COMPILER_H_ | |||
| #include "acl_base.h" | |||
| #include "acl_op.h" | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| typedef enum aclCompileType { ACL_COMPILE_SYS, ACL_COMPILE_UNREGISTERED } aclopCompileType; | |||
| typedef enum { | |||
| ACL_PRECISION_MODE, | |||
| ACL_AICORE_NUM, | |||
| ACL_AUTO_TUNE_MODE, | |||
| ACL_OP_SELECT_IMPL_MODE, | |||
| ACL_OPTYPELIST_FOR_IMPLMODE, | |||
| ACL_OP_DEBUG_LEVEL, | |||
| ACL_DEBUG_DIR, | |||
| ACL_OP_COMPILER_CACHE_MODE, | |||
| ACL_OP_COMPILER_CACHE_DIR | |||
| } aclCompileOpt; | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief compile op | |||
| * | |||
| * @param opType [IN] op type | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN] pointer to array of output tensor descriptions | |||
| * @param attr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * @param engineType [IN] engine type | |||
| * @param compileFlag [IN] compile flag | |||
| * @param opPath [IN] path of op | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopCompile(const char *opType, int numInputs, const aclTensorDesc *const inputDesc[], | |||
| int numOutputs, const aclTensorDesc *const outputDesc[], | |||
| const aclopAttr *attr, aclopEngineType engineType, | |||
| aclopCompileType compileFlag, const char *opPath); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief compile and execute op | |||
| * | |||
| * @param opType [IN] op type | |||
| * @param numInputs [IN] number of inputs | |||
| * @param inputDesc [IN] pointer to array of input tensor descriptions | |||
| * @param inputs [IN] pointer to array of input buffers | |||
| * @param numOutputs [IN] number of outputs | |||
| * @param outputDesc [IN] pointer to array of output tensor descriptions | |||
| * @param outputs [IN] pointer to array of outputs buffers | |||
| * @param attr [IN] pointer to instance of aclopAttr. | |||
| * may pass nullptr if the op has no attribute | |||
| * @param engineType [IN] engine type | |||
| * @param compileFlag [IN] compile flag | |||
| * @param opPath [IN] path of op | |||
| * @param stream [IN] stream handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclopCompileAndExecute( | |||
| const char *opType, int numInputs, const aclTensorDesc *const inputDesc[], const aclDataBuffer *const inputs[], | |||
| int numOutputs, const aclTensorDesc *const outputDesc[], aclDataBuffer *const outputs[], const aclopAttr *attr, | |||
| aclopEngineType engineType, aclopCompileType compileFlag, const char *opPath, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set compile option | |||
| * | |||
| * @param aclCompileOpt [IN] compile option | |||
| * @param value [IN] pointer for the option value | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclSetCompileopt(aclCompileOpt opt, const char *value); | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // INC_EXTERNAL_ACL_ACL_OP_COMPILER_H_ | |||
| @@ -0,0 +1,55 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef INC_EXTERNAL_GE_GE_ERROR_CODES_H_ | |||
| #define INC_EXTERNAL_GE_GE_ERROR_CODES_H_ | |||
| #include <stddef.h> | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| static const uint32_t ACL_ERROR_GE_PARAM_INVALID = 145000; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_NOT_INIT = 145001; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_MODEL_PATH_INVALID = 145002; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_MODEL_ID_INVALID = 145003; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_MODEL_DATA_SIZE_INVALID = 145006; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_MODEL_ADDR_INVALID = 145007; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_MODEL_QUEUE_ID_INVALID = 145008; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_LOAD_MODEL_REPEATED = 145009; | |||
| static const uint32_t ACL_ERROR_GE_DYNAMIC_INPUT_ADDR_INVALID = 145011; | |||
| static const uint32_t ACL_ERROR_GE_DYNAMIC_INPUT_LENGTH_INVALID = 145012; | |||
| static const uint32_t ACL_ERROR_GE_DYNAMIC_BATCH_SIZE_INVALID = 145013; | |||
| static const uint32_t ACL_ERROR_GE_AIPP_BATCH_EMPTY = 145014; | |||
| static const uint32_t ACL_ERROR_GE_AIPP_NOT_EXIST = 145015; | |||
| static const uint32_t ACL_ERROR_GE_AIPP_MODE_INVALID = 145016; | |||
| static const uint32_t ACL_ERROR_GE_OP_TASK_TYPE_INVALID = 145017; | |||
| static const uint32_t ACL_ERROR_GE_OP_KERNEL_TYPE_INVALID = 145018; | |||
| static const uint32_t ACL_ERROR_GE_MEMORY_ALLOCATION = 245000; | |||
| static const uint32_t ACL_ERROR_GE_INTERNAL_ERROR = 545000; | |||
| static const uint32_t ACL_ERROR_GE_LOAD_MODEL = 545001; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_LOAD_MODEL_PARTITION_FAILED = 545002; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_LOAD_WEIGHT_PARTITION_FAILED = 545003; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_LOAD_TASK_PARTITION_FAILED = 545004; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_LOAD_KERNEL_PARTITION_FAILED = 545005; | |||
| static const uint32_t ACL_ERROR_GE_EXEC_RELEASE_MODEL_DATA = 545006; | |||
| static const uint32_t ACL_ERROR_GE_COMMAND_HANDLE = 545007; | |||
| static const uint32_t ACL_ERROR_GE_GET_TENSOR_INFO = 545008; | |||
| static const uint32_t ACL_ERROR_GE_UNLOAD_MODEL = 545009; | |||
| #ifdef __cplusplus | |||
| } // namespace ge | |||
| #endif | |||
| #endif // INC_EXTERNAL_GE_GE_ERROR_CODES_H_ | |||
| @@ -0,0 +1,91 @@ | |||
| /** | |||
| * 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_EXTERNEL_RT_ERROR_CODES_H__ | |||
| #define __INC_EXTERNEL_RT_ERROR_CODES_H__ | |||
| #include <stddef.h> | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| static const int32_t ACL_RT_SUCCESS = 0; // success | |||
| static const int32_t ACL_ERROR_RT_PARAM_INVALID = 107000; // param invalid | |||
| static const int32_t ACL_ERROR_RT_INVALID_DEVICEID = 107001; // invalid device id | |||
| static const int32_t ACL_ERROR_RT_CONTEXT_NULL = 107002; // current context null | |||
| static const int32_t ACL_ERROR_RT_STREAM_CONTEXT = 107003; // stream not in current context | |||
| static const int32_t ACL_ERROR_RT_MODEL_CONTEXT = 107004; // model not in current context | |||
| static const int32_t ACL_ERROR_RT_STREAM_MODEL = 107005; // stream not in model | |||
| static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_INVALID = 107006; // event timestamp invalid | |||
| static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_REVERSAL = 107007; // event timestamp reversal | |||
| static const int32_t ACL_ERROR_RT_ADDR_UNALIGNED = 107008; // memory address unaligned | |||
| static const int32_t ACL_ERROR_RT_FILE_OPEN = 107009; // open file failed | |||
| static const int32_t ACL_ERROR_RT_FILE_WRITE = 107010; // write file failed | |||
| static const int32_t ACL_ERROR_RT_STREAM_SUBSCRIBE = 107011; // error subscribe stream | |||
| static const int32_t ACL_ERROR_RT_THREAD_SUBSCRIBE = 107012; // error subscribe thread | |||
| static const int32_t ACL_ERROR_RT_GROUP_NOT_SET = 107013; // group not set | |||
| static const int32_t ACL_ERROR_RT_GROUP_NOT_CREATE = 107014; // group not create | |||
| static const int32_t ACL_ERROR_RT_STREAM_NO_CB_REG = 107015; // callback not register to stream | |||
| static const int32_t ACL_ERROR_RT_INVALID_MEMORY_TYPE = 107016; // invalid memory type | |||
| static const int32_t ACL_ERROR_RT_FEATURE_NOT_SUPPROT = 207000; // feature not support | |||
| static const int32_t ACL_ERROR_RT_MEMORY_ALLOCATION = 207001; // memory allocation error | |||
| static const int32_t ACL_ERROR_RT_MEMORY_FREE = 207002; // memory free error | |||
| static const int32_t ACL_ERROR_RT_INTERNEL_ERROR = 507000; // runtime internel error | |||
| static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error | |||
| static const int32_t ACL_ERROR_RT_STREAM_TASK_FULL = 507002; // task full in stream | |||
| static const int32_t ACL_ERROR_RT_STREAM_TASK_EMPTY = 507003; // task empty in stream | |||
| static const int32_t ACL_ERROR_RT_STREAM_NOT_COMPLETE = 507004; // stream not complete | |||
| static const int32_t ACL_ERROR_RT_END_OF_SEQUENCE = 507005; // end of sequence | |||
| static const int32_t ACL_ERROR_RT_EVENT_NOT_COMPLETE = 507006; // event not complete | |||
| static const int32_t ACL_ERROR_RT_CONTEXT_RELEASE_ERROR = 507007; // context release error | |||
| static const int32_t ACL_ERROR_RT_SOC_VERSION = 507008; // soc version error | |||
| static const int32_t ACL_ERROR_RT_TASK_TYPE_NOT_SUPPORT = 507009; // task type not support | |||
| static const int32_t ACL_ERROR_RT_LOST_HEARTBEAT = 507010; // ts lost heartbeat | |||
| static const int32_t ACL_ERROR_RT_MODEL_EXECUTE = 507011; // model execute failed | |||
| static const int32_t ACL_ERROR_RT_REPORT_TIMEOUT = 507012; // report timeout | |||
| static const int32_t ACL_ERROR_RT_SYS_DMA = 507013; // sys dma error | |||
| static const int32_t ACL_ERROR_RT_AICORE_TIMEOUT = 507014; // aicore timeout | |||
| static const int32_t ACL_ERROR_RT_AICORE_EXCEPTION = 507015; // aicore exception | |||
| static const int32_t ACL_ERROR_RT_AICORE_TRAP_EXCEPTION = 507016; // aicore trap exception | |||
| static const int32_t ACL_ERROR_RT_AICPU_TIMEOUT = 507017; // aicpu timeout | |||
| static const int32_t ACL_ERROR_RT_AICPU_EXCEPTION = 507018; // aicpu exception | |||
| static const int32_t ACL_ERROR_RT_AICPU_DATADUMP_RSP_ERR = 507019; // aicpu datadump response error | |||
| static const int32_t ACL_ERROR_RT_AICPU_MODEL_RSP_ERR = 507020; // aicpu model operate response error | |||
| static const int32_t ACL_ERROR_RT_PROFILING_ERROR = 507021; // profiling error | |||
| static const int32_t ACL_ERROR_RT_IPC_ERROR = 507022; // ipc error | |||
| static const int32_t ACL_ERROR_RT_MODEL_ABORT_NORMAL = 507023; // model abort normal | |||
| static const int32_t ACL_ERROR_RT_KERNEL_UNREGISTERING = 507024; // kernel unregistering | |||
| static const int32_t ACL_ERROR_RT_RINGBUFFER_NOT_INIT = 507025; // ringbuffer not init | |||
| static const int32_t ACL_ERROR_RT_RINGBUFFER_NO_DATA = 507026; // ringbuffer no data | |||
| static const int32_t ACL_ERROR_RT_KERNEL_LOOKUP = 507027; // kernel lookup error | |||
| static const int32_t ACL_ERROR_RT_KERNEL_DUPLICATE = 507028; // kernel register duplicate | |||
| static const int32_t ACL_ERROR_RT_DEBUG_REGISTER_FAIL = 507029; // debug register failed | |||
| static const int32_t ACL_ERROR_RT_DEBUG_UNREGISTER_FAIL = 507030; // debug unregister failed | |||
| static const int32_t ACL_ERROR_RT_LABEL_CONTEXT = 507031; // label not in current context | |||
| static const int32_t ACL_ERROR_RT_PROGRAM_USE_OUT = 507032; // program register num use out | |||
| static const int32_t ACL_ERROR_RT_DEV_SETUP_ERROR = 507033; // device setup error | |||
| static const int32_t ACL_ERROR_RT_DRV_INTERNEL_ERROR = 507899; // drv internel error | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // __INC_EXTERNEL_RT_ERROR_CODES_H__ | |||
| @@ -0,0 +1,334 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef INC_EXTERNAL_ACL_OPS_ACL_CBLAS_H_ | |||
| #define INC_EXTERNAL_ACL_OPS_ACL_CBLAS_H_ | |||
| #include "acl/acl.h" | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| typedef enum aclTransType { ACL_TRANS_N, ACL_TRANS_T, ACL_TRANS_NZ, ACL_TRANS_NZ_T } aclTransType; | |||
| typedef enum aclComputeType { ACL_COMPUTE_HIGH_PRECISION, ACL_COMPUTE_LOW_PRECISION } aclComputeType; | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief perform the matrix-vector multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param m [IN] number of rows of matrix A | |||
| * @param n [IN] number of columns of matrix A | |||
| * @param alpha [IN] pointer to scalar used for multiplication. | |||
| * of same type as dataTypeC | |||
| * @param a [IN] pointer to matrix A | |||
| * @param lda [IN] leading dimension used to store the matrix A | |||
| * @param dataTypeA [IN] datatype of matrix A | |||
| * @param x [IN] pointer to vector x | |||
| * @param incx [IN] stride between consecutive elements of vector x | |||
| * @param dataTypeX [IN] datatype of vector x | |||
| * @param beta [IN] pointer to scalar used for multiplication. | |||
| * of same type as dataTypeC If beta == 0, | |||
| * then y does not have to be a valid input | |||
| * @param y [IN|OUT] pointer to vector y | |||
| * @param incy [IN] stride between consecutive elements of vector y | |||
| * @param dataTypeY [IN] datatype of vector y | |||
| * @param type [IN] computation type | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasGemvEx(aclTransType transA, int m, int n, const void *alpha, const void *a, int lda, | |||
| aclDataType dataTypeA, const void *x, int incx, aclDataType dataTypeX, | |||
| const void *beta, void *y, int incy, aclDataType dataTypeY, | |||
| aclComputeType type, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for performing the matrix-vector multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param m [IN] number of rows of matrix A | |||
| * @param n [IN] number of columns of matrix A | |||
| * @param dataTypeA [IN] datatype of matrix A | |||
| * @param dataTypeX [IN] datatype of vector x | |||
| * @param dataTypeY [IN] datatype of vector y | |||
| * @param type [IN] computation type | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForGemvEx(aclTransType transA, int m, int n, aclDataType dataTypeA, | |||
| aclDataType dataTypeX, aclDataType dataTypeY, | |||
| aclComputeType type, aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief perform the matrix-vector multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param m [IN] number of rows of matrix A | |||
| * @param n [IN] number of columns of matrix A | |||
| * @param alpha [IN] pointer to scalar used for multiplication | |||
| * @param a [IN] pointer to matrix A | |||
| * @param lda [IN] leading dimension used to store the matrix A | |||
| * @param x [IN] pointer to vector x | |||
| * @param incx [IN] stride between consecutive elements of vector x | |||
| * @param beta [IN] pointer to scalar used for multiplication. | |||
| * If beta value == 0, | |||
| * then y does not have to be a valid input | |||
| * @param y [IN|OUT] pointer to vector y | |||
| * @param incy [IN] stride between consecutive elements of vector y | |||
| * @param type [IN] computation type | |||
| * @param stream [IN] stream | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasHgemv(aclTransType transA, int m, int n, const aclFloat16 *alpha, | |||
| const aclFloat16 *a, int lda, const aclFloat16 *x, int incx, | |||
| const aclFloat16 *beta, aclFloat16 *y, int incy, aclComputeType type, | |||
| aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for performing the matrix-vector multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param m [IN] number of rows of matrix A | |||
| * @param n [IN] number of columns of matrix A | |||
| * @param type [IN] computation type | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForHgemv(aclTransType transA, int m, int n, aclComputeType type, | |||
| aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief perform the matrix-vector multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param m [IN] number of rows of matrix A | |||
| * @param n [IN] number of columns of matrix A | |||
| * @param alpha [IN] pointer to scalar used for multiplication | |||
| * @param a [IN] pointer to matrix A | |||
| * @param lda [IN] leading dimension used to store the matrix A | |||
| * @param x [IN] pointer to vector x | |||
| * @param incx [IN] stride between consecutive elements of vector x | |||
| * @param beta [IN] pointer to scalar used for multiplication. | |||
| * If beta value == 0, | |||
| * then y does not have to be a valid input | |||
| * @param y [IN|OUT] pointer to vector y | |||
| * @param incy [IN] stride between consecutive elements of vector y | |||
| * @param type [IN] computation type | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasS8gemv(aclTransType transA, int m, int n, const int32_t *alpha, const int8_t *a, | |||
| int lda, const int8_t *x, int incx, const int32_t *beta, int32_t *y, | |||
| int incy, aclComputeType type, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for performing the matrix-vector multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param m [IN] number of rows of matrix A | |||
| * @param n [IN] number of columns of matrix A | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * @param type [IN] computation type | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForS8gemv(aclTransType transA, int m, int n, aclComputeType type, | |||
| aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief perform the matrix-matrix multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param transB [IN] transpose type of matrix B | |||
| * @param transC [IN] transpose type of matrix C | |||
| * @param m [IN] number of rows of matrix A and matrix C | |||
| * @param n [IN] number of columns of matrix B and matrix C | |||
| * @param k [IN] number of columns of matrix A and rows of matrix B | |||
| * @param alpha [IN] pointer to scalar used for multiplication. of same type as dataTypeC | |||
| * @param matrixA [IN] pointer to matrix A | |||
| * @param lda [IN] leading dimension array used to store matrix A | |||
| * @param dataTypeA [IN] datatype of matrix A | |||
| * @param matrixB [IN] pointer to matrix B | |||
| * @param ldb [IN] leading dimension array used to store matrix B | |||
| * @param dataTypeB [IN] datatype of matrix B | |||
| * @param beta [IN] pointer to scalar used for multiplication. | |||
| * of same type as dataTypeC If beta == 0, | |||
| * then matrixC does not have to be a valid input | |||
| * @param matrixC [IN|OUT] pointer to matrix C | |||
| * @param ldc [IN] leading dimension array used to store matrix C | |||
| * @param dataTypeC [IN] datatype of matrix C | |||
| * @param type [IN] computation type | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasGemmEx(aclTransType transA, aclTransType transB, aclTransType transC, int m, int n, | |||
| int k, const void *alpha, const void *matrixA, int lda, | |||
| aclDataType dataTypeA, const void *matrixB, int ldb, aclDataType dataTypeB, | |||
| const void *beta, void *matrixC, int ldc, aclDataType dataTypeC, | |||
| aclComputeType type, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for performing the matrix-matrix multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param transB [IN] transpose type of matrix B | |||
| * @param transC [IN] transpose type of matrix C | |||
| * @param m [IN] number of rows of matrix A and matrix C | |||
| * @param n [IN] number of columns of matrix B and matrix C | |||
| * @param k [IN] number of columns of matrix A and rows of matrix B | |||
| * @param dataTypeA [IN] datatype of matrix A | |||
| * @param dataTypeB [IN] datatype of matrix B | |||
| * @param dataTypeC [IN] datatype of matrix C | |||
| * @param type [IN] computation type | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * @param type [IN] computation type | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForGemmEx(aclTransType transA, aclTransType transB, aclTransType transC, | |||
| int m, int n, int k, aclDataType dataTypeA, | |||
| aclDataType dataTypeB, aclDataType dataTypeC, | |||
| aclComputeType type, aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief perform the matrix-matrix multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param transB [IN] transpose type of matrix B | |||
| * @param transC [IN] transpose type of matrix C | |||
| * @param m [IN] number of rows of matrix A and matrix C | |||
| * @param n [IN] number of columns of matrix B and matrix C | |||
| * @param k [IN] number of columns of matrix A and rows of matrix B | |||
| * @param alpha [IN] pointer to scalar used for multiplication | |||
| * @param matrixA [IN] pointer to matrix A | |||
| * @param lda [IN] leading dimension used to store the matrix A | |||
| * @param matrixB [IN] pointer to matrix B | |||
| * @param ldb [IN] leading dimension used to store the matrix B | |||
| * @param beta [IN] pointer to scalar used for multiplication. | |||
| * If beta value == 0, | |||
| * then matrixC does not have to be a valid input | |||
| * @param matrixC [IN|OUT] pointer to matrix C | |||
| * @param ldc [IN] leading dimension used to store the matrix C | |||
| * @param type [IN] computation type | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasHgemm(aclTransType transA, aclTransType transB, aclTransType transC, int m, int n, | |||
| int k, const aclFloat16 *alpha, const aclFloat16 *matrixA, int lda, | |||
| const aclFloat16 *matrixB, int ldb, const aclFloat16 *beta, | |||
| aclFloat16 *matrixC, int ldc, aclComputeType type, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for performing the matrix-matrix multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param transB [IN] transpose type of matrix B | |||
| * @param transC [IN] transpose type of matrix C | |||
| * @param m [IN] number of rows of matrix A and matrix C | |||
| * @param n [IN] number of columns of matrix B and matrix C | |||
| * @param k [IN] number of columns of matrix A and rows of matrix B | |||
| * @param type [IN] computation type | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForHgemm(aclTransType transA, aclTransType transB, aclTransType transC, | |||
| int m, int n, int k, aclComputeType type, | |||
| aclopHandle **handle); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief perform the matrix-matrix multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param transB [IN] transpose type of matrix B | |||
| * @param transC [IN] transpose type of matrix C | |||
| * @param m [IN] number of rows of matrix A and matrix C | |||
| * @param n [IN] number of columns of matrix B and matrix C | |||
| * @param k [IN] number of columns of matrix A and rows of matrix B | |||
| * @param alpha [IN] pointer to scalar used for multiplication | |||
| * @param matrixA [IN] pointer to matrix A | |||
| * @param lda [IN] leading dimension used to store the matrix A | |||
| * @param matrixB [IN] pointer to matrix B | |||
| * @param ldb [IN] leading dimension used to store the matrix B | |||
| * @param beta [IN] pointer to scalar used for multiplication. | |||
| * If beta value == 0, | |||
| * then matrixC does not have to be a valid input | |||
| * @param matrixC [IN|OUT] pointer to matrix C | |||
| * @param ldc [IN] leading dimension used to store the matrix C | |||
| * @param type [IN] computation type | |||
| * @param stream [IN] stream | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasS8gemm(aclTransType transA, aclTransType transB, aclTransType transC, int m, int n, | |||
| int k, const int32_t *alpha, const int8_t *matrixA, int lda, | |||
| const int8_t *matrixB, int ldb, const int32_t *beta, int32_t *matrixC, | |||
| int ldc, aclComputeType type, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief create a handle for performing the matrix-matrix multiplication | |||
| * | |||
| * @param transA [IN] transpose type of matrix A | |||
| * @param transB [IN] transpose type of matrix B | |||
| * @param transC [IN] transpose type of matrix C | |||
| * @param m [IN] number of rows of matrix A and matrix C | |||
| * @param n [IN] number of columns of matrix B and matrix C | |||
| * @param k [IN] number of columns of matrix A and rows of matrix B | |||
| * @param type [IN] computation type | |||
| * @param handle [OUT] pointer to the pointer to the handle | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForS8gemm(aclTransType transA, aclTransType transB, aclTransType transC, | |||
| int m, int n, int k, aclComputeType type, | |||
| aclopHandle **handle); | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // INC_EXTERNAL_ACL_OPS_ACL_CBLAS_H_ | |||
| @@ -0,0 +1,353 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef INC_EXTERNAL_ACL_OPS_ACL_RETR_H_ | |||
| #define INC_EXTERNAL_ACL_OPS_ACL_RETR_H_ | |||
| #include "acl/acl.h" | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| typedef struct aclfvInitPara aclfvInitPara; | |||
| typedef struct aclfvFeatureInfo aclfvFeatureInfo; | |||
| typedef struct aclfvRepoRange aclfvRepoRange; | |||
| typedef struct aclfvQueryTable aclfvQueryTable; | |||
| typedef struct aclfvSearchInput aclfvSearchInput; | |||
| typedef struct aclfvSearchResult aclfvSearchResult; | |||
| // search operation type | |||
| enum aclfvSearchType { | |||
| SEARCH_1_N, // 1:N operation type | |||
| SEARCH_N_M // N:M operation type | |||
| }; | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Create fv init param. | |||
| * | |||
| * @param fsNum [IN] The feature num | |||
| * | |||
| * @retval null for failed. | |||
| * @retval OtherValues success. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclfvInitPara *aclfvCreateInitPara(uint64_t fsNum); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Destroy fv init param. | |||
| * | |||
| * @par Function | |||
| * Can only destroy fv init param information created | |||
| * through aclfvCreateInitPara interface. | |||
| * | |||
| * @param initPara [IN] fv init param. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclfvCreateInitPara | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDestroyInitPara(aclfvInitPara *initPara); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set value for maxTopNumFor1N which in fv init param. | |||
| * | |||
| * @param initPara [IN|OUT] fv init param. | |||
| * @param maxTopNumFor1N [IN] maxTopNumFor1N value for init param. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvSet1NTopNum(aclfvInitPara *initPara, uint32_t maxTopNumFor1N); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief set value for maxTopNumForNM which in fv init param. | |||
| * | |||
| * @param initPara [IN|OUT] fv init param. | |||
| * @param maxTopNumForNM [IN] maxTopNumForNM value for init param. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvSetNMTopNum(aclfvInitPara *initPara, uint32_t maxTopNumForNM); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Create fv feature info. | |||
| * | |||
| * @param id0 [IN] The first level library id0 | |||
| * @param id1 [IN] Secondary library id1 | |||
| * @param offset [IN] The offset of the first feature in the library | |||
| * @param featureLen [IN] Single feature length | |||
| * @param featureCount [IN] Single feature count | |||
| * @param featureData [IN] Feature value list | |||
| * @param featureDataLen [IN] Feature value list length | |||
| * | |||
| * @retval null for failed. | |||
| * @retval OtherValues success. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclfvFeatureInfo *aclfvCreateFeatureInfo(uint32_t id0, uint32_t id1, uint32_t offset, | |||
| uint32_t featureLen, uint32_t featureCount, | |||
| uint8_t *featureData, uint32_t featureDataLen); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Destroy fv feature info. | |||
| * | |||
| * @par Function | |||
| * Can only destroy fv feature info information created | |||
| * through aclfvCreateFeatureInfo interface. | |||
| * | |||
| * @param featureInfo [IN] fv feature info. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclfvCreateFeatureInfo | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDestroyFeatureInfo(aclfvFeatureInfo *featureInfo); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Create fv repo range. | |||
| * | |||
| * @param id0Min [IN] id0 start value | |||
| * @param id0Min [IN] id0 max | |||
| * @param id1Min [IN] id0 start value | |||
| * @param id1Max [IN] id1 max | |||
| * | |||
| * @retval null for failed. OtherValues success | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclfvRepoRange *aclfvCreateRepoRange(uint32_t id0Min, uint32_t id0Max, uint32_t id1Min, | |||
| uint32_t id1Max); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Destroy fv repo range. | |||
| * | |||
| * @par Function | |||
| * Can only destroy fv repo range information created | |||
| * through aclfvCreateRepoRange interface. | |||
| * | |||
| * @param repoRange [IN] fv repo range. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclfvCreateRepoRange | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDestroyRepoRange(aclfvRepoRange *repoRange); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Create query table. | |||
| * | |||
| * @param queryCnt [IN] Number of tables, the maximum number is 6 | |||
| * @param tableLen [IN] Single table length, table length is 32KB | |||
| * @param tableData [IN] Feature value list | |||
| * @param tableDataLen [IN] The length of memory requested by the featureData pointer | |||
| * | |||
| * @retval null for failed. OtherValues success | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclfvQueryTable *aclfvCreateQueryTable(uint32_t queryCnt, uint32_t tableLen, uint8_t *tableData, | |||
| uint32_t tableDataLen); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Destroy query table. | |||
| * | |||
| * @par Function | |||
| * Can only destroy query table information created | |||
| * through aclfvCreateQueryTable interface. | |||
| * | |||
| * @param queryTable [IN] query table. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclfvCreateQueryTable | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDestroyQueryTable(aclfvQueryTable *queryTable); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Create search input. | |||
| * | |||
| * @param queryTable [IN] query table | |||
| * @param repoRange [IN] query repo range | |||
| * @param topk [IN] query topk | |||
| * | |||
| * @retval null for failed. OtherValues success | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclfvSearchInput *aclfvCreateSearchInput(aclfvQueryTable *queryTable, aclfvRepoRange *repoRange, | |||
| uint32_t topk); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Destroy search input. | |||
| * | |||
| * @par Function | |||
| * Can only destroy search input information created | |||
| * through aclfvCreateSearchInput interface. | |||
| * | |||
| * @param searchInput [IN] search input. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclfvCreateSearchInput | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDestroySearchInput(aclfvSearchInput *searchInput); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Create search result. | |||
| * | |||
| * @param queryCnt [IN] Retrieve the number of features | |||
| * @param resultNum [IN] The number of search results for each feature, the number is queryCnt | |||
| * @param resultNumDataLen [IN] resultNum memory length | |||
| * @param id0 [IN] Level 1 library id0 | |||
| * @param id1 [IN] Secondary library id1 | |||
| * @param resultOffset [IN] The offset of the bottom library corresponding | |||
| * to each feature retrieval result, total length topK * queryCnt | |||
| * @param resultDistance [IN] Distance, total length topK * queryCnt | |||
| * @param dataLen [IN] The memory size requested by | |||
| * id0\id1\reslutOffset\resultDistance | |||
| * | |||
| * @retval null for failed. OtherValues success | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclfvSearchResult *aclfvCreateSearchResult(uint32_t queryCnt, uint32_t *resultNum, | |||
| uint32_t resultNumDataLen, uint32_t *id0, uint32_t *id1, | |||
| uint32_t *resultOffset, float *resultDistance, | |||
| uint32_t dataLen); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief Destroy search result. | |||
| * | |||
| * @par Function | |||
| * Can only destroy search result information created | |||
| * through aclfvCreateSearchResult interface. | |||
| * | |||
| * @param searchResult [IN] search result. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure | |||
| * | |||
| * @see aclfvCreateSearchResult | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDestroySearchResult(aclfvSearchResult *searchResult); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief fv IP initialize. | |||
| * | |||
| * @param initPara [IN] fv init param. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvInit(aclfvInitPara *initPara); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief release fv resources. | |||
| * | |||
| * @par Function | |||
| * Can only release fv resources created | |||
| * through aclfvInit interface. | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| * | |||
| * @see aclfvInit | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvRelease(); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief fv repo add. | |||
| * | |||
| * @param type [IN] repo add type | |||
| * @param featureInfo [IN] add feature information | |||
| * @param stream [IN] stream of task execute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvRepoAdd(aclfvSearchType type, aclfvFeatureInfo *featureInfo, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief fv repo del. | |||
| * | |||
| * @param type [IN] repo delete type | |||
| * @param repoRange [IN] repo range information | |||
| * @param stream [IN] stream of task execute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvRepoDel(aclfvSearchType type, aclfvRepoRange *repoRange, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief fv accurate del. | |||
| * | |||
| * @param featureInfo [IN] accurate delete feature information | |||
| * @param stream [IN] stream of task execute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvDel(aclfvFeatureInfo *featureInfo, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief fv accurate modify. | |||
| * | |||
| * @param featureInfo [IN] accurate modify feature information | |||
| * @param stream [IN] stream of task execute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvModify(aclfvFeatureInfo *featureInfo, aclrtStream stream); | |||
| /** | |||
| * @ingroup AscendCL | |||
| * @brief fv search. | |||
| * | |||
| * @param type [IN] search type | |||
| * @param searchInput [IN] search input | |||
| * @param searchRst [OUT] search result | |||
| * @param stream [IN] stream of task execute | |||
| * | |||
| * @retval ACL_SUCCESS The function is successfully executed. | |||
| * @retval OtherValues Failure. | |||
| */ | |||
| ACL_FUNC_VISIBILITY aclError aclfvSearch(aclfvSearchType type, aclfvSearchInput *searchInput, | |||
| aclfvSearchResult *searchRst, aclrtStream stream); | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // INC_EXTERNAL_ACL_OPS_ACL_RETR_H_ | |||
| @@ -0,0 +1,91 @@ | |||
| /** | |||
| * 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_EXTERNEL_RT_ERROR_CODES_H__ | |||
| #define __INC_EXTERNEL_RT_ERROR_CODES_H__ | |||
| #include <stddef.h> | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| static const int32_t ACL_RT_SUCCESS = 0; // success | |||
| static const int32_t ACL_ERROR_RT_PARAM_INVALID = 107000; // param invalid | |||
| static const int32_t ACL_ERROR_RT_INVALID_DEVICEID = 107001; // invalid device id | |||
| static const int32_t ACL_ERROR_RT_CONTEXT_NULL = 107002; // current context null | |||
| static const int32_t ACL_ERROR_RT_STREAM_CONTEXT = 107003; // stream not in current context | |||
| static const int32_t ACL_ERROR_RT_MODEL_CONTEXT = 107004; // model not in current context | |||
| static const int32_t ACL_ERROR_RT_STREAM_MODEL = 107005; // stream not in model | |||
| static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_INVALID = 107006; // event timestamp invalid | |||
| static const int32_t ACL_ERROR_RT_EVENT_TIMESTAMP_REVERSAL = 107007; // event timestamp reversal | |||
| static const int32_t ACL_ERROR_RT_ADDR_UNALIGNED = 107008; // memory address unaligned | |||
| static const int32_t ACL_ERROR_RT_FILE_OPEN = 107009; // open file failed | |||
| static const int32_t ACL_ERROR_RT_FILE_WRITE = 107010; // write file failed | |||
| static const int32_t ACL_ERROR_RT_STREAM_SUBSCRIBE = 107011; // error subscribe stream | |||
| static const int32_t ACL_ERROR_RT_THREAD_SUBSCRIBE = 107012; // error subscribe thread | |||
| static const int32_t ACL_ERROR_RT_GROUP_NOT_SET = 107013; // group not set | |||
| static const int32_t ACL_ERROR_RT_GROUP_NOT_CREATE = 107014; // group not create | |||
| static const int32_t ACL_ERROR_RT_STREAM_NO_CB_REG = 107015; // callback not register to stream | |||
| static const int32_t ACL_ERROR_RT_INVALID_MEMORY_TYPE = 107016; // invalid memory type | |||
| static const int32_t ACL_ERROR_RT_FEATURE_NOT_SUPPROT = 207000; // feature not support | |||
| static const int32_t ACL_ERROR_RT_MEMORY_ALLOCATION = 207001; // memory allocation error | |||
| static const int32_t ACL_ERROR_RT_MEMORY_FREE = 207002; // memory free error | |||
| static const int32_t ACL_ERROR_RT_INTERNEL_ERROR = 507000; // runtime internel error | |||
| static const int32_t ACL_ERROR_RT_TS_ERROR = 507001; // ts internel error | |||
| static const int32_t ACL_ERROR_RT_STREAM_TASK_FULL = 507002; // task full in stream | |||
| static const int32_t ACL_ERROR_RT_STREAM_TASK_EMPTY = 507003; // task empty in stream | |||
| static const int32_t ACL_ERROR_RT_STREAM_NOT_COMPLETE = 507004; // stream not complete | |||
| static const int32_t ACL_ERROR_RT_END_OF_SEQUENCE = 507005; // end of sequence | |||
| static const int32_t ACL_ERROR_RT_EVENT_NOT_COMPLETE = 507006; // event not complete | |||
| static const int32_t ACL_ERROR_RT_CONTEXT_RELEASE_ERROR = 507007; // context release error | |||
| static const int32_t ACL_ERROR_RT_SOC_VERSION = 507008; // soc version error | |||
| static const int32_t ACL_ERROR_RT_TASK_TYPE_NOT_SUPPORT = 507009; // task type not support | |||
| static const int32_t ACL_ERROR_RT_LOST_HEARTBEAT = 507010; // ts lost heartbeat | |||
| static const int32_t ACL_ERROR_RT_MODEL_EXECUTE = 507011; // model execute failed | |||
| static const int32_t ACL_ERROR_RT_REPORT_TIMEOUT = 507012; // report timeout | |||
| static const int32_t ACL_ERROR_RT_SYS_DMA = 507013; // sys dma error | |||
| static const int32_t ACL_ERROR_RT_AICORE_TIMEOUT = 507014; // aicore timeout | |||
| static const int32_t ACL_ERROR_RT_AICORE_EXCEPTION = 507015; // aicore exception | |||
| static const int32_t ACL_ERROR_RT_AICORE_TRAP_EXCEPTION = 507016; // aicore trap exception | |||
| static const int32_t ACL_ERROR_RT_AICPU_TIMEOUT = 507017; // aicpu timeout | |||
| static const int32_t ACL_ERROR_RT_AICPU_EXCEPTION = 507018; // aicpu exception | |||
| static const int32_t ACL_ERROR_RT_AICPU_DATADUMP_RSP_ERR = 507019; // aicpu datadump response error | |||
| static const int32_t ACL_ERROR_RT_AICPU_MODEL_RSP_ERR = 507020; // aicpu model operate response error | |||
| static const int32_t ACL_ERROR_RT_PROFILING_ERROR = 507021; // profiling error | |||
| static const int32_t ACL_ERROR_RT_IPC_ERROR = 507022; // ipc error | |||
| static const int32_t ACL_ERROR_RT_MODEL_ABORT_NORMAL = 507023; // model abort normal | |||
| static const int32_t ACL_ERROR_RT_KERNEL_UNREGISTERING = 507024; // kernel unregistering | |||
| static const int32_t ACL_ERROR_RT_RINGBUFFER_NOT_INIT = 507025; // ringbuffer not init | |||
| static const int32_t ACL_ERROR_RT_RINGBUFFER_NO_DATA = 507026; // ringbuffer no data | |||
| static const int32_t ACL_ERROR_RT_KERNEL_LOOKUP = 507027; // kernel lookup error | |||
| static const int32_t ACL_ERROR_RT_KERNEL_DUPLICATE = 507028; // kernel register duplicate | |||
| static const int32_t ACL_ERROR_RT_DEBUG_REGISTER_FAIL = 507029; // debug register failed | |||
| static const int32_t ACL_ERROR_RT_DEBUG_UNREGISTER_FAIL = 507030; // debug unregister failed | |||
| static const int32_t ACL_ERROR_RT_LABEL_CONTEXT = 507031; // label not in current context | |||
| static const int32_t ACL_ERROR_RT_PROGRAM_USE_OUT = 507032; // program register num use out | |||
| static const int32_t ACL_ERROR_RT_DEV_SETUP_ERROR = 507033; // device setup error | |||
| static const int32_t ACL_ERROR_RT_DRV_INTERNEL_ERROR = 507899; // drv internel error | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif // __INC_EXTERNEL_RT_ERROR_CODES_H__ | |||
| @@ -21,13 +21,15 @@ | |||
| namespace aicpu { | |||
| #pragma pack(push, 1) | |||
| struct AicpuParamHead | |||
| { | |||
| uint32_t length; // Total length: include cunstom message | |||
| uint32_t ioAddrNum; // Input and output address number | |||
| uint32_t extInfoLength; // extInfo struct Length | |||
| uint64_t extInfoAddr; // extInfo address | |||
| } __attribute__ ((packed)); | |||
| }; | |||
| #pragma pack(pop) | |||
| } // namespace aicpu | |||
| @@ -17,6 +17,8 @@ | |||
| #ifndef AICPU_ENGINE_H__ | |||
| #define AICPU_ENGINE_H__ | |||
| #include <stdint.h> | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| @@ -36,12 +38,23 @@ typedef enum { | |||
| /** | |||
| * @ingroup aicpu engine | |||
| * @brief aeCallInterface: | |||
| * a interface to call a function in a op kernfel lib | |||
| * a interface to call a function in a op kernfel lib | |||
| * @param [in] addr void *, should be STR_KERNEL * format | |||
| * @return aeStatus_t | |||
| */ | |||
| aeStatus_t aeCallInterface(void *addr); | |||
| /** | |||
| * @ingroup aicpu engine | |||
| * @brief aeBatchLoadKernelSo: | |||
| * a interface to load kernel so | |||
| * @param [in] loadSoNum load so number | |||
| * @param [in] soPaths load so paths | |||
| * @param [in] soNames load so names | |||
| * @return aeStatus_t | |||
| */ | |||
| aeStatus_t aeBatchLoadKernelSo(const uint32_t loadSoNum, const char *soPaths[], const char *soNames[]); | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| @@ -1,101 +0,0 @@ | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| /** | |||
| * @file hccl_types.h | |||
| * @brief HCCL data type definition | |||
| * | |||
| */ | |||
| #ifndef HCCL_TYPES_H_ | |||
| #define HCCL_TYPES_H_ | |||
| #include <stdint.h> | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif // __cplusplus | |||
| /** | |||
| * @brief HCCL functions return value definition | |||
| */ | |||
| typedef enum { | |||
| HCCL_SUCCESS = 0, /**< success */ | |||
| HCCL_E_PARA = 1, /**< parameter error */ | |||
| HCCL_E_PTR = 2, /**< empty pointer */ | |||
| HCCL_E_MEMORY = 3, /**< memory error */ | |||
| HCCL_E_INTERNAL = 4, /**< internal error */ | |||
| HCCL_E_NOT_SUPPORT = 5, /**< not support feature */ | |||
| HCCL_E_NOT_FOUND = 6, /**< not found specific resource */ | |||
| HCCL_E_UNAVAIL = 7, /**< resource unavailable */ | |||
| HCCL_E_SYSCALL = 8, /**< call system interface error */ | |||
| HCCL_E_TIMEOUT = 9, /**< timeout */ | |||
| HCCL_E_OPEN_FILE_FAILURE = 10, /**< open file fail */ | |||
| HCCL_E_TCP_CONNECT = 11, /**< tcp connect fail */ | |||
| HCCL_E_ROCE_CONNECT = 12, /**< roce connect fail */ | |||
| HCCL_E_TCP_TRANSFER = 13, /**< tcp transfer fail */ | |||
| HCCL_E_ROCE_TRANSFER = 14, /**< roce transfer fail */ | |||
| HCCL_E_RUNTIME = 15, /**< call runtime api fail */ | |||
| HCCL_E_DRV = 16, /**< call driver api fail */ | |||
| HCCL_E_PROFILING = 17, /**< call profiling api fail */ | |||
| HCCL_E_CCE = 18, /**< call cce api fail */ | |||
| HCCL_E_NETWORK = 19, /**< call network api fail */ | |||
| HCCL_E_RESERVED /**< reserved */ | |||
| } HcclResult; | |||
| /** | |||
| * @brief handle to HCCL communicator | |||
| */ | |||
| typedef void *HcclComm; | |||
| /** | |||
| * @brief HCCL Reduction opperation | |||
| */ | |||
| typedef enum { | |||
| HCCL_REDUCE_SUM = 0, /**< sum */ | |||
| HCCL_REDUCE_PROD = 1, /**< prod */ | |||
| HCCL_REDUCE_MAX = 2, /**< max */ | |||
| HCCL_REDUCE_MIN = 3, /**< min */ | |||
| HCCL_REDUCE_RESERVED /**< reserved */ | |||
| } HcclReduceOp; | |||
| /** | |||
| * @brief HCCL data type | |||
| */ | |||
| typedef enum { | |||
| HCCL_DATA_TYPE_INT8 = 0, /**< int8 */ | |||
| HCCL_DATA_TYPE_INT16 = 1, /**< int16 */ | |||
| HCCL_DATA_TYPE_INT32 = 2, /**< int32 */ | |||
| HCCL_DATA_TYPE_FP16 = 3, /**< fp16 */ | |||
| HCCL_DATA_TYPE_FP32 = 4, /**< fp32 */ | |||
| HCCL_DATA_TYPE_INT64 = 5, /**< int64 */ | |||
| HCCL_DATA_TYPE_UINT64 = 6, /**< uint64 */ | |||
| HCCL_DATA_TYPE_RESERVED /**< reserved */ | |||
| } HcclDataType; | |||
| const uint32_t HCCL_ROOT_INFO_BYTES = 4108; // 4108: root info length | |||
| /** | |||
| * @brief HCCL root info | |||
| */ | |||
| typedef struct HcclRootInfoDef { | |||
| char internal[HCCL_ROOT_INFO_BYTES]; | |||
| } HcclRootInfo; | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif // __cplusplus | |||
| #endif // HCCL_TYPES_H_ | |||
| @@ -29,104 +29,7 @@ | |||
| extern "C" { | |||
| #endif // __cplusplus | |||
| /** | |||
| * @brief Initialize HCOM. | |||
| * | |||
| * @param rank_table A string identifying the rank table file path, include file name. | |||
| * @param identify A string identifying the identify for the rank. | |||
| * @return HcclResult | |||
| * @see hcom_destroy() | |||
| */ | |||
| extern HcclResult hcom_init(const char *rank_table, const char *identify); | |||
| /** | |||
| * @brief Destroy HCOM | |||
| * | |||
| * @return HcclResult | |||
| * @see hcom_init() | |||
| */ | |||
| extern HcclResult hcom_destroy(void); | |||
| /** | |||
| * @brief Bind the model. | |||
| * | |||
| * @param model A pointer identifying the model information. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| * @see hcom_unbind_model() | |||
| */ | |||
| extern HcclResult hcom_bind_model(rtModel_t model, rtStream_t stream); | |||
| /** | |||
| * @brief Unbind the model. | |||
| * | |||
| * @param model An pointer identifying the model information. | |||
| * @return HcclResult | |||
| * @see hcom_unbind_model() | |||
| */ | |||
| extern HcclResult hcom_unbind_model(rtModel_t model); | |||
| /** | |||
| * @brief All-gather operator. | |||
| * | |||
| * @param tag A string identifying the tag of the operator. | |||
| * @param inputPtr A pointer identifying the input data address of the operator. | |||
| * @param outputPtr A pointer identifying the output data address of the operator. | |||
| * @param inputCount An integer(u64) identifying the number of the input data. | |||
| * @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32. | |||
| * @param group A string identifying the group name of ranks participating in the operator. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| */ | |||
| extern HcclResult hcom_all_gather(const char *tag, void *inputPtr, void *outputPtr, u64 inputCount, | |||
| HcclDataType dataType, const char *group, rtStream_t stream); | |||
| /** | |||
| * @brief All-reduce operator. | |||
| * | |||
| * @param tag A string identifying the tag of the operator. | |||
| * @param inputPtr A pointer identifying the input data address of the operator. | |||
| * @param outputPtr A pointer identifying the output data address of the operator. | |||
| * @param count An integer(u64) identifying the number of the output data. | |||
| * @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32. | |||
| * @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod. | |||
| * @param group A string identifying the group name of ranks participating in the operator. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| */ | |||
| extern HcclResult hcom_all_reduce(const char *tag, void *inputPtr, void *outputPtr, u64 count, | |||
| HcclDataType dataType, HcclReduceOp op, const char *group, rtStream_t stream); | |||
| /** | |||
| * @brief Broadcast operator. | |||
| * | |||
| * @param tag A string identifying the tag of the operator. | |||
| * @param ptr A pointer identifying the data address of the operator. | |||
| * @param count An integer(u64) identifying the number of the data. | |||
| * @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32. | |||
| * @param root An integer(u32) identifying the the root rank in the operator. | |||
| * @param group A string identifying the group name of ranks participating in the operator. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| */ | |||
| extern HcclResult hcom_broadcast(const char *tag, void *ptr, u64 count, HcclDataType dataType, u32 root, | |||
| const char *group, rtStream_t stream); | |||
| /** | |||
| * @brief Reduce-scatter operator. | |||
| * | |||
| * @param tag A string identifying the tag of the operator. | |||
| * @param inputPtr A pointer identifying the input data address of the operator. | |||
| * @param outputPtr A pointer identifying the output data address of the operator. | |||
| * @param count An integer(u64) identifying the number of the data. | |||
| * @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32. | |||
| * @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod. | |||
| * @param group A string identifying the group name of ranks participating in the operator. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| */ | |||
| extern HcclResult hcom_reduce_scatter(const char *tag, void *inputPtr, void *outputPtr, u64 count, | |||
| HcclDataType dataType, HcclReduceOp op, const char *group, rtStream_t stream); | |||
| /** | |||
| * @brief Get the rank number in the group. | |||
| @@ -202,54 +105,6 @@ HcclResult hcom_create_group(const char *group, u32 rankNum, u32 *rankIds); | |||
| */ | |||
| HcclResult hcom_destroy_group(const char *group); | |||
| /** | |||
| * @brief Send operator. | |||
| * | |||
| * @param tag A string identifying the tag of the operator. | |||
| * @param inputPtr A pointer identifying the input data address of the operator. | |||
| * @param count An integer(u64) identifying the number of the data. | |||
| * @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32. | |||
| * @param destRank An integer identifying the destination rank. | |||
| * @param srTag An integer identifying the send/recv message tag. | |||
| * The message will be send by the receive operator with the same "sr_tag". | |||
| * @param group A string identifying the group name of ranks participating in the operator. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| */ | |||
| HcclResult hcom_send(const char *tag, void *inputPtr, u64 count, HcclDataType dataType, | |||
| u32 destRank, u32 srTag, const char *group, rtStream_t stream); | |||
| /** | |||
| * @brief Receive operator. | |||
| * | |||
| * @param tag A string identifying the tag of the operator. | |||
| * @param outputPtr A pointer identifying the output data address of the operator. | |||
| * @param count An integer(u64) identifying the number of the data. | |||
| * @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32. | |||
| * @param srcRank An integer identifying the source rank. | |||
| * @param srTag An integer identifying the send/recv message tag. | |||
| * The message will be send by the send operator with the same "sr_tag". | |||
| * @param group A string identifying the group name of ranks participating in the operator. | |||
| * @param stream A pointer identifying the stream information. | |||
| * @return HcclResult | |||
| */ | |||
| HcclResult hcom_receive(const char *tag, void *outputPtr, u64 count, HcclDataType dataType, | |||
| u32 srcRank, u32 srTag, const char *group, rtStream_t stream); | |||
| /** | |||
| * @brief Get the gradient split strategy with in the group. | |||
| * | |||
| * @param group A string identifying the group name. | |||
| * @param feature A pointer identifying the feature of the model. | |||
| * @param maxSegmentNum An integer(u32) identifying the max segments of gradients. | |||
| * @param segmentNum A pointer identifying the segments number of gradients. | |||
| * @param segmentIdx A list identifying the index of end gradient in each segment. | |||
| * @return HcclResult | |||
| */ | |||
| HcclResult hcom_get_split_strategy(const char *group, const struct model_feature *feature, u32 maxSegmentNum, | |||
| u32 *segmentNum, u32 *segmentIdx, GradSplitForceMode force = FORCE_NONE, | |||
| OriginalGraphShapeType shapeType = KNOWN_SHAPE); | |||
| /** | |||
| * @brief Set the gradient split strategy with in the group, according to gradient index. | |||
| * | |||
| @@ -227,6 +227,7 @@ typedef struct { | |||
| #define M_BINARY O_RDONLY | |||
| #define M_TRUNC O_TRUNC | |||
| #define M_IRWXU S_IRWXU | |||
| #define M_APPEND O_APPEND | |||
| #define M_IN_CREATE IN_CREATE | |||
| #define M_IN_CLOSE_WRITE IN_CLOSE_WRITE | |||
| @@ -342,17 +343,17 @@ MMPA_FUNC_VISIBILITY INT32 mmCloseSocket(mmSockHandle sockFd); | |||
| MMPA_FUNC_VISIBILITY mmSsize_t mmSocketSend(mmSockHandle sockFd, VOID *sendBuf, INT32 sendLen, INT32 sendFlag); | |||
| MMPA_FUNC_VISIBILITY mmSsize_t mmSocketRecv(mmSockHandle sockFd, VOID *recvBuf, INT32 recvLen, INT32 recvFlag); | |||
| MMPA_FUNC_VISIBILITY INT32 mmSocketSendTo(mmSockHandle sockFd, | |||
| VOID *sendMsg, | |||
| INT32 sendLen, | |||
| UINT32 sendFlag, | |||
| const mmSockAddr* addr, | |||
| INT32 tolen); | |||
| VOID *sendMsg, | |||
| INT32 sendLen, | |||
| UINT32 sendFlag, | |||
| const mmSockAddr* addr, | |||
| INT32 tolen); | |||
| MMPA_FUNC_VISIBILITY mmSsize_t mmSocketRecvFrom(mmSockHandle sockFd, | |||
| VOID *recvBuf, | |||
| mmSize recvLen, | |||
| UINT32 recvFlag, | |||
| mmSockAddr* addr, | |||
| mmSocklen_t *FromLen); | |||
| VOID *recvBuf, | |||
| mmSize recvLen, | |||
| UINT32 recvFlag, | |||
| mmSockAddr* addr, | |||
| mmSocklen_t *FromLen); | |||
| MMPA_FUNC_VISIBILITY INT32 mmSAStartup(); | |||
| MMPA_FUNC_VISIBILITY INT32 mmSACleanup(); | |||
| MMPA_FUNC_VISIBILITY VOID *mmDlopen(const CHAR *fileName, INT32 mode); | |||
| @@ -360,7 +361,10 @@ MMPA_FUNC_VISIBILITY INT32 mmDladdr(VOID *addr, mmDlInfo *info); | |||
| MMPA_FUNC_VISIBILITY VOID *mmDlsym(VOID *handle, const CHAR *funcName); | |||
| MMPA_FUNC_VISIBILITY INT32 mmDlclose(VOID *handle); | |||
| MMPA_FUNC_VISIBILITY CHAR *mmDlerror(); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCreateAndSetTimer(mmTimer *timerHandle, mmUserBlock_t *timerBlock, UINT milliSecond, UINT period); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCreateAndSetTimer(mmTimer *timerHandle, | |||
| mmUserBlock_t *timerBlock, | |||
| UINT milliSecond, | |||
| UINT period); | |||
| MMPA_FUNC_VISIBILITY INT32 mmDeleteTimer(mmTimer timerHandle); | |||
| MMPA_FUNC_VISIBILITY INT32 mmStatGet(const CHAR *path, mmStat_t *buffer); | |||
| MMPA_FUNC_VISIBILITY INT32 mmStat64Get(const CHAR *path, mmStat64_t *buffer); | |||
| @@ -454,8 +458,11 @@ MMPA_FUNC_VISIBILITY VOID mmSetOpOpt(INT32 mmOptOpt); | |||
| MMPA_FUNC_VISIBILITY CHAR *mmGetOptArg(); | |||
| MMPA_FUNC_VISIBILITY VOID mmSetOptArg(CHAR *mmOptArg); | |||
| MMPA_FUNC_VISIBILITY INT32 mmGetOpt(INT32 argc, char *const *argv, const char *opts); | |||
| MMPA_FUNC_VISIBILITY INT32 mmGetOptLong(INT32 argc, char *const *argv, const char *opts, const mmStructOption *longOpts, | |||
| INT32 *longIndex); | |||
| MMPA_FUNC_VISIBILITY INT32 mmGetOptLong(INT32 argc, | |||
| char *const *argv, | |||
| const char *opts, | |||
| const mmStructOption *longOpts, | |||
| INT32 *longIndex); | |||
| MMPA_FUNC_VISIBILITY LONG mmLseek(INT32 fd, INT64 offset, INT32 seekFlag); | |||
| MMPA_FUNC_VISIBILITY INT32 mmFtruncate(mmProcess fd, UINT32 length); | |||
| @@ -521,11 +528,14 @@ MMPA_FUNC_VISIBILITY INT32 mmGetMac(mmMacInfo **list, INT32 *count); | |||
| MMPA_FUNC_VISIBILITY INT32 mmGetMacFree(mmMacInfo *list, INT32 count); | |||
| MMPA_FUNC_VISIBILITY INT32 mmGetCpuInfo(mmCpuDesc **cpuInfo, INT32 *count); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCpuInfoFree(mmCpuDesc *cpuInfo, INT32 count); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCreateProcess(const CHAR *fileName, const mmArgvEnv *env, const char *stdoutRedirectFile, | |||
| mmProcess *id); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCreateTaskWithThreadAttr(mmThread *threadHandle, const mmUserBlock_t *funcBlock, | |||
| const mmThreadAttr *threadAttr); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCreateProcess(const CHAR *fileName, | |||
| const mmArgvEnv *env, | |||
| const char *stdoutRedirectFile, | |||
| mmProcess *id); | |||
| MMPA_FUNC_VISIBILITY INT32 mmCreateTaskWithThreadAttr(mmThread *threadHandle, | |||
| const mmUserBlock_t *funcBlock, | |||
| const mmThreadAttr *threadAttr); | |||
| MMPA_FUNC_VISIBILITY mmFileHandle mmShmOpen(const CHAR *name, INT32 oflag, mmMode_t mode); | |||
| MMPA_FUNC_VISIBILITY INT32 mmShmUnlink(const CHAR *name); | |||
| MMPA_FUNC_VISIBILITY VOID *mmMmap(mmFd_t fd, mmSize_t size, mmOfft_t offset, mmFd_t *extra, INT32 prot, INT32 flags); | |||
| @@ -1,4 +1,4 @@ | |||
| /** | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| @@ -1,4 +1,4 @@ | |||
| /** | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| @@ -249,6 +249,7 @@ typedef VOID (*mmPf)(VOID); | |||
| #define M_CREAT _O_CREAT | |||
| #define M_BINARY _O_BINARY | |||
| #define M_TRUNC _O_TRUNC | |||
| #define M_APPEND _O_APPEND | |||
| #define M_IREAD _S_IREAD | |||
| #define M_IRUSR _S_IREAD | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_BASE_H__ | |||
| #define __CCE_RUNTIME_BASE_H__ | |||
| @@ -32,309 +32,8 @@ extern "C" { | |||
| #endif | |||
| #endif | |||
| /** | |||
| * @ingroup dvrt_base | |||
| * @brief runtime error numbers. | |||
| */ | |||
| typedef enum tagRtError { | |||
| RT_ERROR_NONE = 0x0, // success | |||
| RT_ERROR_DEVICE_BASE = 0x07010000, | |||
| RT_ERROR_DEVICE_NULL, | |||
| RT_ERROR_DEVICE_NEW, | |||
| RT_ERROR_DEVICE_ID, | |||
| RT_ERROR_DEVICE_CHIPTYPE, | |||
| RT_ERROR_DEVICE_DEPLOY, | |||
| RT_ERROR_DEVICE_RETAIN, | |||
| RT_ERROR_DEVICE_PLATFORM, | |||
| RT_ERROR_DEVICE_LOADER, | |||
| RT_ERROR_DEVICE_LIMIT, | |||
| RT_ERROR_DEVICE_PROC_HANG_OUT, | |||
| RT_ERROR_DEVICE_POWER_UP_FAIL, | |||
| RT_ERROR_DEVICE_POWER_DOWN_FAIL, | |||
| RT_ERROR_DEVICE_INVALID, | |||
| RT_ERROR_DRV_BASE = 0x07020000, | |||
| RT_ERROR_DRV_NULL, | |||
| RT_ERROR_DRV_NEW, | |||
| RT_ERROR_DRV_MEMORY, | |||
| RT_ERROR_DRV_INPUT, | |||
| RT_ERROR_DRV_PTRNULL, | |||
| RT_ERROR_DRV_OPEN_AICPU, | |||
| RT_ERROR_DRV_CLOSE_AICPU, | |||
| RT_ERROR_DRV_SYM_AICPU, | |||
| RT_ERROR_DRV_OPEN_TSD, | |||
| RT_ERROR_DRV_CLOSE_TSD, | |||
| RT_ERROR_DRV_SYM_TSD, | |||
| RT_ERROR_DRV_SOURCE, | |||
| RT_ERROR_DRV_REPORT, | |||
| RT_ERROR_DRV_COMMAND, | |||
| RT_ERROR_DRV_OCCUPY, | |||
| RT_ERROR_DRV_ERR, | |||
| RT_ERROR_STREAM_BASE = 0x07030000, | |||
| RT_ERROR_STREAM_NULL, | |||
| RT_ERROR_STREAM_NEW, | |||
| RT_ERROR_STREAM_CONTEXT, | |||
| RT_ERROR_STREAM_INVALID, | |||
| RT_ERROR_STREAM_MODEL, | |||
| RT_ERROR_STREAM_FUSION, | |||
| RT_ERROR_STREAM_FULL, | |||
| RT_ERROR_STREAM_EMPTY, | |||
| RT_ERROR_STREAM_NOT_COMPLETE, | |||
| RT_ERROR_STREAM_SYNC, | |||
| RT_ERROR_STREAM_NO_CB_REG, | |||
| RT_ERROR_STREAM_DUPLICATE, | |||
| RT_ERROR_STREAM_NOT_EXIST, | |||
| RT_ERROR_SQ_NO_EXIST_SQ_TO_REUSE, | |||
| RT_ERROR_SQID_FULL, | |||
| RT_ERROR_MODEL_BASE = 0x07040000, | |||
| RT_ERROR_MODEL_NULL, | |||
| RT_ERROR_MODEL_NEW, | |||
| RT_ERROR_MODEL_CONTEXT, | |||
| RT_ERROR_MODEL_ENDGRAPH, | |||
| RT_ERROR_MODEL_STREAM, | |||
| RT_ERROR_MODEL_EXCUTOR, | |||
| RT_ERROR_MODEL_SETUP, | |||
| RT_ERROR_MODEL_ID, | |||
| RT_ERROR_MODEL_EXE_FAILED, | |||
| RT_ERROR_END_OF_SEQUENCE, // end of sequence | |||
| RT_ERROR_MODEL_EXIT, | |||
| RT_ERROR_MODEL_EXIT_STREAM_UNBIND, | |||
| RT_ERROR_MODEL_EXIT_ID, | |||
| RT_ERROR_MODEL_ABORT_NORMAL, | |||
| RT_ERROR_EVENT_BASE = 0x07050000, | |||
| RT_ERROR_EVENT_NULL, | |||
| RT_ERROR_EVENT_NEW, | |||
| RT_ERROR_EVENT_RECORDER_NULL, | |||
| RT_ERROR_EVENT_TIMESTAMP_INVALID, | |||
| RT_ERROR_EVENT_TIMESTAMP_REVERSAL, | |||
| RT_ERROR_EVENT_NOT_COMPLETE, | |||
| RT_ERROR_NOTIFY_BASE = 0x07060000, | |||
| RT_ERROR_NOTIFY_NULL, | |||
| RT_ERROR_NOTIFY_NEW, | |||
| RT_ERROR_NOTIFY_TYPE, | |||
| RT_ERROR_NOTIFY_NOT_COMPLETE, | |||
| RT_ERROR_CONTEXT_BASE = 0x07070000, | |||
| RT_ERROR_CONTEXT_NULL, | |||
| RT_ERROR_CONTEXT_NEW, | |||
| RT_ERROR_CONTEXT_DEL, | |||
| RT_ERROR_CONTEXT_DEFAULT_STREAM_NULL, | |||
| RT_ERROR_CONTEXT_ONLINE_STREAM_NULL, | |||
| RT_ERROR_KERNEL_BASE = 0x07080000, | |||
| RT_ERROR_KERNEL_NULL, | |||
| RT_ERROR_KERNEL_NEW, | |||
| RT_ERROR_KERNEL_LOOKUP, | |||
| RT_ERROR_KERNEL_NAME, | |||
| RT_ERROR_KERNEL_TYPE, | |||
| RT_ERROR_KERNEL_OFFSET, | |||
| RT_ERROR_KERNEL_DUPLICATE, | |||
| RT_ERROR_KERNEL_UNREGISTERING, | |||
| RT_ERROR_PROGRAM_BASE = 0x07090000, | |||
| RT_ERROR_PROGRAM_NULL, | |||
| RT_ERROR_PROGRAM_NEW, | |||
| RT_ERROR_PROGRAM_DATA, | |||
| RT_ERROR_PROGRAM_SIZE, | |||
| RT_ERROR_PROGRAM_MEM_TYPE, | |||
| RT_ERROR_PROGRAM_MACHINE_TYPE, | |||
| RT_ERROR_PROGRAM_USEOUT, | |||
| RT_ERROR_MODULE_BASE = 0x070a0000, | |||
| RT_ERROR_MODULE_NULL, | |||
| RT_ERROR_MODULE_NEW, | |||
| RT_ERROR_INSTANCE_BASE = 0x070b0000, | |||
| RT_ERROR_INSTANCE_NULL, | |||
| RT_ERROR_INSTANCE_NEW, | |||
| RT_ERROR_INSTANCE_VERSION, | |||
| RT_ERROR_API_BASE = 0x070c0000, | |||
| RT_ERROR_API_NULL, | |||
| RT_ERROR_API_NEW, | |||
| RT_ERROR_DATADUMP_BASE = 0x070d0000, | |||
| RT_ERROR_DATADUMP_NULL, | |||
| RT_ERROR_DATADUMP_NEW, | |||
| RT_ERROR_DATADUMP_TIME, | |||
| RT_ERROR_DATADUMP_FILE, | |||
| RT_ERROR_DATADUMP_ADDRESS, | |||
| RT_ERROR_DATADUMP_LOAD_FAILED, | |||
| RT_ERROR_DUMP_ADDR_SET_FAILED, | |||
| RT_ERROR_PROF_BASE = 0x070e0000, | |||
| RT_ERROR_PROF_NULL, | |||
| RT_ERROR_PROF_NEW, | |||
| RT_ERROR_PROF_START, | |||
| RT_ERROR_PROF_DEVICE_MEM, | |||
| RT_ERROR_PROF_HOST_MEM, | |||
| RT_ERROR_PROF_SET_DIR, | |||
| RT_ERROR_PROF_OPER, | |||
| RT_ERROR_PROF_FULL, | |||
| RT_ERROR_PROF_NAME, | |||
| RT_ERROR_PCTRACE_BASE = 0x070f0000, | |||
| RT_ERROR_PCTRACE_NULL, | |||
| RT_ERROR_PCTRACE_NEW, | |||
| RT_ERROR_PCTRACE_TIME, | |||
| RT_ERROR_PCTRACE_FILE, | |||
| RT_ERROR_TASK_BASE = 0x07100000, | |||
| RT_ERROR_TASK_NULL, | |||
| RT_ERROR_TASK_NEW, | |||
| RT_ERROR_TASK_TYPE, | |||
| RT_ERROR_TASK_ALLOCATOR, | |||
| RT_ERROR_COMMON_BASE = 0x07110000, | |||
| RT_ERROR_INVALID_VALUE, // RT_ERROR_INPUT_INVALID | |||
| RT_ERROR_MEMORY_ADDRESS_UNALIGNED, | |||
| RT_ERROR_SEC_HANDLE, | |||
| RT_ERROR_OS_HANDLE, | |||
| RT_ERROR_MUTEX_LOCK, | |||
| RT_ERROR_MUTEX_UNLOCK, | |||
| RT_ERROR_CALLOC, | |||
| RT_ERROR_POOL_RESOURCE, | |||
| RT_ERROR_TRANS_ARGS, | |||
| RT_ERROR_METADATA, | |||
| RT_ERROR_LOST_HEARTBEAT, | |||
| RT_ERROR_REPORT_TIMEOUT, | |||
| RT_ERROR_FEATURE_NOT_SUPPROT, | |||
| RT_ERROR_MEMORY_ALLOCATION, | |||
| RT_ERROR_MEMORY_FREE, | |||
| RT_ERROR_INVALID_MEMORY_TYPE, | |||
| RT_ERROR_DEBUG_BASE = 0x07120000, | |||
| RT_ERROR_DEBUG_NULL, | |||
| RT_ERROR_DEBUG_NEW, | |||
| RT_ERROR_DEBUG_SIGNAL, | |||
| RT_ERROR_DEBUG_OPEN, | |||
| RT_ERROR_DEBUG_WRITE, | |||
| RT_ERROR_DEBUG_REGISTER_FAILED, | |||
| RT_ERROR_DEBUG_UNREGISTER_FAILED, | |||
| RT_ERROR_ENGINE_BASE = 0x07130000, | |||
| RT_ERROR_ENGINE_NULL, | |||
| RT_ERROR_ENGINE_NEW, | |||
| RT_ERROR_ENGINE_THREAD, | |||
| RT_ERROR_LABEL_BASE = 0x07140000, | |||
| RT_ERROR_LABEL_NULL, | |||
| RT_ERROR_LABEL_NEW, | |||
| RT_ERROR_LABEL_CONTEXT, | |||
| RT_ERROR_LABEL_STREAM, | |||
| RT_ERROR_LABEL_MODEL, | |||
| RT_ERROR_LABEL_ALLOCATOR, | |||
| RT_ERROR_LABEL_FREE, | |||
| RT_ERROR_LABEL_SET, | |||
| RT_ERROR_LABEL_ID, | |||
| RT_ERROR_TSFW_BASE = 0x07150000, | |||
| RT_ERROR_TSFW_UNKNOWN, | |||
| RT_ERROR_TSFW_NULL_PTR, | |||
| RT_ERROR_TSFW_ILLEGAL_AI_CORE_ID, | |||
| RT_ERROR_TSFW_ILLEGAL_PARAM, | |||
| RT_ERROR_TSFW_TASK_CMD_QUEUE_FULL, | |||
| RT_ERROR_TSFW_TASK_CMD_QUEUE_EMPTY, | |||
| RT_ERROR_TSFW_TASK_REPORT_QUEUE_FULL, | |||
| RT_ERROR_TSFW_TASK_REPORT_QUEUE_EMPTY, | |||
| RT_ERROR_TSFW_TASK_NODE_BUFF_ALL_OCCUPYED, | |||
| RT_ERROR_TSFW_TASK_NODE_BUFF_ALL_FREED, | |||
| RT_ERROR_TSFW_L2_MEM_INSUFFICIENT_SPACE, | |||
| RT_ERROR_TSFW_L2_MALLOC_FAILED, | |||
| RT_ERROR_TSFW_DMA_CHANNEL_ALL_OCCUPYED, | |||
| RT_ERROR_TSFW_MEMCPY_OP_FAILED, | |||
| RT_ERROR_TSFW_BS_SLOT_ALL_OCCUPYED, | |||
| RT_ERROR_TSFW_TBS_SLOT_REPEAT_FREE, | |||
| RT_ERROR_TSFW_PRIORITY_TASK_LIST_FULL, | |||
| RT_ERROR_TSFW_PRIORITY_TASK_LIST_EMPTY, | |||
| RT_ERROR_TSFW_NO_STREAM_LIST_NEED_TO_BE_PROCESSED, | |||
| RT_ERROR_TSFW_REPEAT_MARK_STREAM_NEED_SERVICE, | |||
| RT_ERROR_TSFW_SYS_DMA_CHANNEL_ALL_OCCUPAPYED, | |||
| RT_ERROR_TSFW_NO_HBML2TASKNODE_FOUND, | |||
| RT_ERROR_TSFW_SQNODE_NODE_SLOT_ALL_OCCUPAPYED, | |||
| RT_ERROR_TSFW_CQNODE_NODE_SLOT_ALL_OCCUPAPYED, | |||
| RT_ERROR_TSFW_SQNODE_NOT_ENOUGH, | |||
| RT_ERROR_TSFW_SQNODE_SLOT_REPEAT_FREE, | |||
| RT_ERROR_TSFW_CQNODE_SLOT_REPEAT_FREE, | |||
| RT_ERROR_TSFW_CQ_REPORT_FAILED, | |||
| RT_ERROR_TSFW_SYS_DMA_RESET_SUCCESS, | |||
| RT_ERROR_TSFW_SYS_DMA_RESET_FAILED, | |||
| RT_ERROR_TSFW_SYS_DMA_TRNSFER_FAILED, | |||
| RT_ERROR_TSFW_SYS_DMA_MEMADDRALIGN_FAILED, | |||
| RT_ERROR_TSFW_SYS_DMA_ERROR_QUEUE_FULL, | |||
| RT_ERROR_TSFW_SYS_DMA_ERROR_QUEUE_EMPTY, | |||
| RT_ERROR_TSFW_TIMER_EVENT_FULL, | |||
| RT_ERROR_TSFW_TASK_L2_DESC_ENTRY_NOT_ENOUGH, | |||
| RT_ERROR_TSFW_AICORE_TIMEOUT, | |||
| RT_ERROR_TSFW_AICORE_EXCEPTION, | |||
| RT_ERROR_TSFW_AICORE_TRAP_EXCEPTION, | |||
| RT_ERROR_TSFW_AICPU_TIMEOUT, | |||
| RT_ERROR_TSFW_SDMA_L2_TO_DDR_MALLOC_FAIL, | |||
| RT_ERROR_TSFW_AICPU_EXCEPTION, | |||
| RT_ERROR_TSFW_AICPU_DATADUMP_RSP_ERR, | |||
| RT_ERROR_TSFW_AICPU_MODEL_RSP_ERR, | |||
| RT_ERROR_TSFW_REPEAT_ACTIVE_MODEL_STREAM, | |||
| RT_ERROR_TSFW_REPEAT_NOTIFY_WAIT, | |||
| RT_ERROR_TSFW_DEBUG_INVALID_SQCQ, | |||
| RT_ERROR_TSFW_DEBUG_WRONG_COMMAND_TYPE, | |||
| RT_ERROR_TSFW_DEBUG_CMD_PROCESS, | |||
| RT_ERROR_TSFW_DEBUG_INVALID_DEVICE_STATUS, | |||
| RT_ERROR_TSFW_DEBUG_NOT_IN_DEBUG_STATUS, | |||
| RT_ERROR_TSFW_DEBUG_INVALID_TASK_STATUS, | |||
| RT_ERROR_TSFW_DEBUG_TASK_EMPTY, | |||
| RT_ERROR_TSFW_DEBUG_TASK_FULL, | |||
| RT_ERROR_TSFW_DEBUG_TASK_NOT_EXIST, | |||
| RT_ERROR_TSFW_DEBUG_AI_CORE_FULL, | |||
| RT_ERROR_TSFW_DEBUG_AI_CORE_NOT_EXIST, | |||
| RT_ERROR_TSFW_DEBUG_AI_CORE_EXCEPTION, | |||
| RT_ERROR_TSFW_DEBUG_AI_CORE_TIMEOUT, | |||
| RT_ERROR_TSFW_DEBUG_BREAKPOINT_FULL, | |||
| RT_ERROR_TSFW_DEBUG_READ_ERROR, | |||
| RT_ERROR_TSFW_DEBUG_WRITE_FAIL, | |||
| RT_ERROR_TSFW_QUEUE_FULL, | |||
| RT_ERROR_TSFW_QUEUE_EMPTY, | |||
| RT_ERROR_TSFW_QUEUE_ALLOC_MEM_FAIL, | |||
| RT_ERROR_TSFW_QUEUE_DATA_SIZE_UNMATCH, | |||
| RT_ERROR_TSFW_PCIE_DMA_INVLD_CPY_TYPE, | |||
| RT_ERROR_TSFW_INVLD_CPY_DIR, | |||
| RT_ERROR_TSFW_PCIE_DMA_INVLD_CQ_DES, | |||
| RT_ERROR_TSFW_PCIE_DMA_CPY_ERR, | |||
| RT_ERROR_TSFW_PCIE_DMA_LNK_CHN_BUSY, | |||
| RT_ERROR_TSFW_PROFILE_BUFF_FULL, | |||
| RT_ERROR_TSFW_PROFILE_MODE_CONFLICT, | |||
| RT_ERROR_TSFW_PROFILE_OTHER_PID_ON, | |||
| RT_ERROR_TSFW_SCHD_AIC_TASK_PRELOAD_FAILED, | |||
| RT_ERROR_TSFW_TSCPU_CLOSE_FAILED, | |||
| RT_ERROR_TSFW_EXPECT_FAIL, | |||
| RT_ERROR_TSFW_REPEAT_MODEL_STREAM, | |||
| RT_ERROR_TSFW_STREAM_MODEL_UNBIND, | |||
| RT_ERROR_TSFW_MODEL_EXE_FAILED, | |||
| RT_ERROR_TSFW_IPC_SEND_FAILED, | |||
| RT_ERROR_TSFW_IPC_PROC_REG_FAILED, | |||
| RT_ERROR_TSFW_STREAM_FULL, | |||
| RT_ERROR_TSFW_END_OF_SEQUENCE, | |||
| RT_ERROR_TSFW_SWITCH_STREAM_LABEL, | |||
| RT_ERROR_TSFW_TRANS_SQE_FAIL, | |||
| RT_ERROR_TSFW_RESERVED, | |||
| RT_ERROR_SUBSCRIBE_BASE = 0x07160000, | |||
| RT_ERROR_SUBSCRIBE_NULL, | |||
| RT_ERROR_SUBSCRIBE_NEW, | |||
| RT_ERROR_SUBSCRIBE_STREAM, | |||
| RT_ERROR_SUBSCRIBE_THREAD, | |||
| RT_ERROR_SUBSCRIBE_GROUP, | |||
| RT_ERROR_GROUP_BASE = 0x07170000, | |||
| RT_ERROR_GROUP_NOT_SET, | |||
| RT_ERROR_GROUP_NOT_CREATE, | |||
| RT_ERROR_RESERVED = 0x07ff0000, | |||
| }rtError_t; | |||
| typedef int32_t rtError_t; | |||
| static const int32_t RT_ERROR_NONE = 0; // success | |||
| /** | |||
| * @ingroup dvrt_base | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_CONFIG_H__ | |||
| #define __CCE_RUNTIME_CONFIG_H__ | |||
| @@ -185,6 +185,14 @@ RTS_API rtError_t rtSetPlatformType(rtPlatformType_t platformType); | |||
| */ | |||
| RTS_API rtError_t rtMemGetL2Info(rtStream_t stream, void **ptr, uint32_t *size); | |||
| /** | |||
| * @ingroup | |||
| * @brief get runtime version. The version is returned as (1000 major + 10 minor). For example, RUNTIME 9.2 would be represented by 9020. | |||
| * @param [out] runtimeVersion | |||
| * @return RT_ERROR_NONE for ok | |||
| * @return RT_ERROR_INVALID_VALUE for error input | |||
| */ | |||
| RTS_API rtError_t rtGetRuntimeVersion(uint32_t *runtimeVersion); | |||
| #if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE) | |||
| } | |||
| #endif | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_CONTEXT_H__ | |||
| #define __CCE_RUNTIME_CONTEXT_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_DEVICE_H__ | |||
| #define __CCE_RUNTIME_DEVICE_H__ | |||
| @@ -330,12 +330,12 @@ RTS_API rtError_t rtGetPairDevicesInfo(uint32_t devId, uint32_t otherDevId, int3 | |||
| FEATURE_TYPE_MEMCPY = 0, | |||
| FEATURE_TYPE_RSV, | |||
| } rtFeatureType_t; | |||
| * @param [in] infoType info type | |||
| * @param [in] featureInfo info type | |||
| typedef enum tagMemcpyInfo { | |||
| MEMCPY_INFO_SUPPORT_ZEROCOPY = 0, | |||
| MEMCPY_INFO _RSV, | |||
| } rtMemcpyInfo_t; | |||
| * @param [out] value the capability info | |||
| * @param [out] value the capability info RT_CAPABILITY_SUPPORT or RT_CAPABILITY_NOT_SUPPORT | |||
| * @return RT_ERROR_NONE for ok | |||
| */ | |||
| RTS_API rtError_t rtGetRtCapability(rtFeatureType_t featureType, int32_t featureInfo, int64_t *value); | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_DVFSPROFILE_H__ | |||
| #define __CCE_RUNTIME_DVFSPROFILE_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_EVENT_H__ | |||
| #define __CCE_RUNTIME_EVENT_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_KERNEL_H__ | |||
| #define __CCE_RUNTIME_KERNEL_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_MEM_H__ | |||
| #define __CCE_RUNTIME_MEM_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_RT_H__ | |||
| #define __CCE_RUNTIME_RT_H__ | |||
| @@ -28,4 +28,4 @@ | |||
| #include "rt_model.h" | |||
| #include "stream.h" | |||
| #endif // __CCE_RUNTIME_RT_H__ | |||
| #endif // __CCE_RUNTIME_RT_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_MODEL_H__ | |||
| #define __CCE_RUNTIME_MODEL_H__ | |||
| @@ -1,18 +1,18 @@ | |||
| /** | |||
| * Copyright 2020 Huawei Technologies Co., Ltd | |||
| * 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 __CCE_RUNTIME_STREAM_H__ | |||
| #define __CCE_RUNTIME_STREAM_H__ | |||
| @@ -1,10 +1,18 @@ | |||
| /** | |||
| * @file index_transform.h | |||
| * | |||
| * Copyright (C) Huawei Technologies Co., Ltd. 2018-2019. All Rights Reserved. | |||
| * | |||
| * This program is used to get logical device id by phy device id. | |||
| */ | |||
| * 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_TDT_INDEX_TRANSFORM_H | |||
| #define INC_TDT_INDEX_TRANSFORM_H | |||
| @@ -1,4 +1,4 @@ | |||
| /** | |||
| /** | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| @@ -34,9 +34,16 @@ using TDT_StatusT = uint32_t; | |||
| typedef uint32_t TDT_StatusT; | |||
| #endif | |||
| #define LINUX 0 | |||
| #define WINDOWS 1 | |||
| #ifndef TDT_LIB_EXPORT | |||
| #if(TARGET_SYSTEM_NAME == WINDOWS) | |||
| #define TDT_LIB_EXPORT __declspec(dllexport) | |||
| #else | |||
| #define TDT_LIB_EXPORT __attribute__((visibility("default"))) | |||
| #endif | |||
| #endif | |||
| /** | |||
| * @ingroup tdt status. | |||
| * | |||
| @@ -1,12 +1,18 @@ | |||
| /** | |||
| * @file adx_datadump_server.h | |||
| * | |||
| * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. 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. | |||
| */ | |||
| * 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 ADX_DATADUMP_SERVER_H | |||
| #define ADX_DATADUMP_SERVER_H | |||
| @@ -14,11 +14,20 @@ | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef MSPROF_ENGINE_PROF_ACL_API_H_ | |||
| #define MSPROF_ENGINE_PROF_ACL_API_H_ | |||
| #ifndef MSPROFILER_API_PROF_ACL_API_H_ | |||
| #define MSPROFILER_API_PROF_ACL_API_H_ | |||
| #define MSVP_MAX_DEV_NUM 64 | |||
| #ifndef OS_TYPE | |||
| #define OS_TYPE 0 | |||
| #endif // OS_TYPE | |||
| #if (OS_TYPE != LINUX) | |||
| #define MSVP_PROF_API __declspec(dllexport) | |||
| #else | |||
| #define MSVP_PROF_API __attribute__((visibility("default"))) | |||
| #endif | |||
| // DataTypeConfig | |||
| #define PROF_ACL_API 0x0001 | |||
| @@ -78,6 +87,9 @@ enum ProfErrorCode { | |||
| PROF_ERROR_UNSUPPORTED, // unsupported data type or ai core metrics | |||
| PROF_ERROR_REPEAT_START, // profiilng has already been started | |||
| PROF_ERROR_NOT_STARTED, // profiling has not been started | |||
| PROF_ERROR_REPEAT_SUBSCRIBE, // same model id has already been subscribed | |||
| PROF_ERROR_MODEL_ID_INVALID, // model id does not exist or has not been subscribed | |||
| PROF_ERROR_API_CONFLICT, // prof ctrl api mode conflicts with subscribe mode | |||
| }; | |||
| /** | |||
| @@ -107,7 +119,8 @@ enum ProfAicoreMetrics { | |||
| PROF_AICORE_MEMORY = 3, | |||
| PROF_AICORE_INTERNAL_MEMORY = 4, | |||
| PROF_AICORE_STALL = 5, | |||
| PROF_AICORE_EVENT = 255 | |||
| PROF_AICORE_METRICS_COUNT, | |||
| PROF_AICORE_NONE = 0xff, | |||
| }; | |||
| /** | |||
| @@ -130,12 +143,54 @@ struct ProfConfig { | |||
| MSVP_PROF_API int32_t ProfStartProfiling(const ProfConfig *profStartCfg); | |||
| /** | |||
| * @name ProfStopConfig | |||
| * @brief struct of ProfStop | |||
| * @name ProfStopProfiling | |||
| * @brief stop profiling | |||
| * @param profStopCfg [IN] config to stop profiling | |||
| * @return ProfErrorCode | |||
| */ | |||
| struct ProfStopConfig { | |||
| uint64_t padding; | |||
| }; | |||
| MSVP_PROF_API int32_t ProfStopProfiling(const ProfConfig *profStopCfg); | |||
| /** | |||
| * @name ProfFinalize | |||
| * @brief finalize profiling task | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfFinalize(); | |||
| /** | |||
| * @name ProfGetDataTypeConfig | |||
| * @brief get dataTypeConfig started with of one device | |||
| * @param deviceId [IN] deviceId to get dataTypeConfig | |||
| * @param dataTypeConfig [OUT] result get | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfGetDataTypeConfig(uint32_t deviceId, uint64_t &dataTypeConfig); | |||
| namespace Msprofiler { | |||
| namespace Api { | |||
| /** | |||
| * @brief transfer profiling config in acl.json to sample config | |||
| * @param aclCfg [IN] profiling json string from acl.json as {"switch":"on", "result_path":"/home",...} | |||
| * @param sampleCfg [OUT] json string for GE as {"startCfg":[{"deviceID":"all","jobID":"1234",...}]} | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfAclCfgToSampleCfg(const std::string &aclCfg, std::string &sampleCfg); | |||
| /** | |||
| * @name ProfInit | |||
| * @brief init profiling | |||
| * @param profInitCfg [IN] config of init profiling of json format | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfInit(const std::string &profInitCfg); | |||
| /** | |||
| * @name ProfStartProfiling | |||
| * @brief start profiling | |||
| * @param profStartCfg [IN] config to start profiling | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfStartProfiling(const ProfConfig *profStartCfg); | |||
| /** | |||
| * @name ProfStopProfiling | |||
| @@ -161,4 +216,181 @@ MSVP_PROF_API int32_t ProfFinalize(); | |||
| */ | |||
| MSVP_PROF_API int32_t ProfGetDataTypeConfig(uint32_t deviceId, uint64_t &dataTypeConfig); | |||
| #endif // MSPROF_ENGINE_PROF_ACL_API_H_ | |||
| /** | |||
| * @name WorkMode | |||
| * @brief profiling api work mode | |||
| */ | |||
| enum WorkMode { | |||
| WORK_MODE_OFF, // profiling not at work | |||
| WORK_MODE_API_CTRL, // profiling work on api ctrl mode, (ProfInit) | |||
| WORK_MODE_SUBSCRIBE, // profiling work on subscribe mode | |||
| }; | |||
| /** | |||
| * @name ProfGetApiWorkMode | |||
| * @brief get profiling api work mode | |||
| * @return WorkMode | |||
| */ | |||
| MSVP_PROF_API WorkMode ProfGetApiWorkMode(); | |||
| /** | |||
| * @name ProfSubscribeConfig | |||
| * @brief config of subscribe api | |||
| */ | |||
| struct ProfSubscribeConfig { | |||
| bool timeInfo; // subscribe op time | |||
| ProfAicoreMetrics aicoreMetrics; // subscribe ai core metrics | |||
| void* fd; // pipe fd | |||
| }; | |||
| /** | |||
| * @name ProfGetDataTypeConfig | |||
| * @brief get DataTypeConfig of subscribe | |||
| * @param profSubscribeConfig [IN] config to subscribe data | |||
| * @return DataTypeConfig | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetDataTypeConfig(const ProfSubscribeConfig *profSubscribeConfig); | |||
| /** | |||
| * @name ProfModelSubscribe | |||
| * @brief subscribe data of one model id | |||
| * @param modelId [IN] model id to subscribe data | |||
| * @param devId [IN] device id of model | |||
| * @param profSubscribeConfig [IN] config to subscribe data | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfModelSubscribe(uint32_t modelId, uint32_t devId, | |||
| const ProfSubscribeConfig *profSubscribeConfig); | |||
| /** | |||
| * @name ProfIsModelSubscribed | |||
| * @brief check if a model id is subscribed | |||
| * @param modeiId [IN] modei id to check | |||
| * @return true: subscribed, false: not | |||
| */ | |||
| MSVP_PROF_API bool ProfIsModelSubscribed(uint32_t modelId); | |||
| /** | |||
| * @name ProfModelUnSubscribe | |||
| * @brief unsubscribe a model id | |||
| * @param modeiId [IN] modei id to unsubscribe | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfModelUnSubscribe(uint32_t modelId); | |||
| /** | |||
| * @name ProfGetOpDescSize | |||
| * @brief get profiling data struct size | |||
| * @param opDescSize [OUT] bytes of profiling subscribe data struct | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfGetOpDescSize(uint32_t *opDescSize); | |||
| /** | |||
| * @name ProfGetOpNum | |||
| * @brief get how many op data there are in data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param opNum [OUT] number of op in data | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfGetOpNum(const void *data, uint32_t len, uint32_t *opNum); | |||
| /** | |||
| * @name ProfGetModelId | |||
| * @brief get model id of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return model id | |||
| */ | |||
| MSVP_PROF_API uint32_t ProfGetModelId(const void *data, uint32_t len, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpType | |||
| * @brief get op type of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param opType [OUT] op type buffer | |||
| * @param opTypeLen [IN] buffer size of param opType | |||
| * @param index [IN] index of part(op) | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfGetOpType(const void *data, uint32_t len, char *opType, uint32_t opTypeLen, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpName | |||
| * @brief get op name of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param opType [OUT] op name buffer | |||
| * @param opTypeLen [IN] buffer size of param opName | |||
| * @param index [IN] index of part(op) | |||
| * @return ProfErrorCode | |||
| */ | |||
| MSVP_PROF_API int32_t ProfGetOpName(const void *data, uint32_t len, char *opName, uint32_t opNameLen, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpStart | |||
| * @brief get op start timestamp of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return op start timestamp (us) | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetOpStart(const void *data, uint32_t len, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpEnd | |||
| * @brief get op end timestamp of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return op end timestamp (us) | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetOpEnd(const void *data, uint32_t len, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpDuration | |||
| * @brief get op duration of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return op duration (us) | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetOpDuration(const void *data, uint32_t len, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpExecutionTime | |||
| * @brief get op execution time of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return op execution time (us) | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetOpExecutionTime(const void *data, uint32_t len, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpCubeOps | |||
| * @brief get op cube fops of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return op cube fops | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetOpCubeOps(const void *data, uint32_t len, uint32_t index); | |||
| /** | |||
| * @name ProfGetOpVectorOps | |||
| * @brief get op vector fops of specific part of data | |||
| * @param data [IN] data read from pipe | |||
| * @param len [IN] data length | |||
| * @param index [IN] index of part(op) | |||
| * @return op vector fops | |||
| */ | |||
| MSVP_PROF_API uint64_t ProfGetOpVectorOps(const void *data, uint32_t len, uint32_t index); | |||
| } // namespace Api | |||
| } // namespace Msprofiler | |||
| #endif // MSPROFILER_API_PROF_ACL_API_H_ | |||
| @@ -16,7 +16,16 @@ | |||
| #ifndef MSPROF_ENGINE_PROF_MGR_CORE_H_ | |||
| #define MSPROF_ENGINE_PROF_MGR_CORE_H_ | |||
| #ifndef OS_TYPE | |||
| #define OS_TYPE 0 | |||
| #endif // OS_TYPE | |||
| #if (OS_TYPE != LINUX) | |||
| #define MSVP_PROF_API __declspec(dllexport) | |||
| #else | |||
| #define MSVP_PROF_API __attribute__((visibility("default"))) | |||
| #endif | |||
| #include <string> | |||
| #include <vector> | |||
| @@ -16,7 +16,15 @@ | |||
| #ifndef MSPROF_ENGINE_PROF_REPORTER_H_ | |||
| #define MSPROF_ENGINE_PROF_REPORTER_H_ | |||
| #ifndef OS_TYPE | |||
| #define OS_TYPE 0 | |||
| #endif // OS_TYPE | |||
| #if (OS_TYPE != LINUX) | |||
| #define MSVP_PROF_API __declspec(dllexport) | |||
| #else | |||
| #define MSVP_PROF_API __attribute__((visibility("default"))) | |||
| #endif | |||
| /** | |||
| * @file prof_reporter.h | |||
| @@ -86,4 +94,4 @@ class MSVP_PROF_API Reporter { | |||
| } // namespace Engine | |||
| } // namespace Msprof | |||
| #endif // MSPROF_ENGINE_PROF_REPORTER_H_ | |||
| #endif // MSPROF_ENGINE_PROF_REPORTER_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,8 @@ 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 | |||
| #endif // D_SYSLOG_H_ | |||
| @@ -1,13 +1,19 @@ | |||
| /** | |||
| * @file tune_api.h | |||
| * Copyright 2019-2020 Huawei Technologies Co., Ltd | |||
| * | |||
| * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.\n | |||
| * 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 | |||
| * | |||
| * 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.\n | |||
| * 描述:mstune调优接口头文件 | |||
| * 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. | |||
| */ | |||
| /** @defgroup mstune mstune调优接口 */ | |||
| #ifndef TUNE_API_H | |||
| #define TUNE_API_H | |||