@@ -84,9 +84,9 @@ if (ENABLE_OPEN_SRC) | |||||
elseif(ENABLE_GE_COV OR ENABLE_GE_UT) | elseif(ENABLE_GE_COV OR ENABLE_GE_UT) | ||||
add_subdirectory(tests) | add_subdirectory(tests) | ||||
else() | else() | ||||
find_module(slog libalog.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") | if(PLATFORM STREQUAL "train") | ||||
find_module(hccl libhccl.so ${ASCEND_RUNTIME_DIR}) | find_module(hccl libhccl.so ${ASCEND_RUNTIME_DIR}) | ||||
find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR}) | find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR}) | ||||
@@ -5,14 +5,10 @@ endif() | |||||
include(ExternalProject) | include(ExternalProject) | ||||
set(JSON_SRC_DIR ${CMAKE_BINARY_DIR}/opensrc/json/include) | set(JSON_SRC_DIR ${CMAKE_BINARY_DIR}/opensrc/json/include) | ||||
if (GE_PB_PKG) | |||||
set(REQ_URL "${GE_PB_PKG}/libs/ge_nlohmann_json/include.zip") | |||||
set(MD5 "0dc903888211db3a0f170304cd9f3a89") | |||||
set(JSON_INCLUDE_DIR ${JSON_SRC_DIR}) | |||||
#elseif (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") | |||||
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() | else() | ||||
set(REQ_URL "https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip") | set(REQ_URL "https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip") | ||||
set(MD5 "0dc903888211db3a0f170304cd9f3a89") | set(MD5 "0dc903888211db3a0f170304cd9f3a89") | ||||
@@ -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__ |
@@ -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_ |
@@ -110,34 +110,6 @@ HcclResult HcomDestroyGroup(const char *group); | |||||
/** | /** | ||||
* @brief Set the gradient split strategy with in the group, according to gradient index. | * @brief Set the gradient split strategy with in the group, according to gradient index. | ||||
* | * | ||||
* @param group A string identifying the group name. | |||||
* @param segmentNum An integer(u32) identifying the segments number of gradients. | |||||
* @param IdxList A list identifying the index of end gradient in each segment. | |||||
* @return HcclResult | |||||
*/ | |||||
extern HcclResult HcomSetGradFusionByIndex(const char *group, u32 segmentNum, const u32 *IdxList); | |||||
/** | |||||
* @brief Set the gradient split strategy with in the group, according to gradient data size. | |||||
* | |||||
* @param group A string identifying the group name. | |||||
* @param segmentNum An integer(u32) identifying the segments number of gradients. | |||||
* @param sizeList A list identifying the percent of each segment. | |||||
* @return HcclResult | |||||
*/ | |||||
extern HcclResult HcomSetGradFusionBySize(const char *group, u32 segmentNum, const float *sizeList); | |||||
/** | |||||
* @brief Initialize hcom executor. | |||||
* | |||||
* @param void | |||||
* @return HcclResult | |||||
*/ | |||||
HcclResult HcomExecInitialize(); | |||||
/** | |||||
* @brief Finalize hcom executor. | |||||
* | |||||
* @param void | * @param void | ||||
* @return HcclResult | * @return HcclResult | ||||
*/ | */ | ||||
@@ -1,4 +1,4 @@ | |||||
/** | |||||
/** | |||||
* Copyright 2019-2020 Huawei Technologies Co., Ltd | * Copyright 2019-2020 Huawei Technologies Co., Ltd | ||||
* | * | ||||
* Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
@@ -1,4 +1,4 @@ | |||||
/** | |||||
/** | |||||
* Copyright 2019-2020 Huawei Technologies Co., Ltd | * Copyright 2019-2020 Huawei Technologies Co., Ltd | ||||
* | * | ||||
* Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
@@ -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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_BASE_H__ | #ifndef __CCE_RUNTIME_BASE_H__ | ||||
#define __CCE_RUNTIME_BASE_H__ | #define __CCE_RUNTIME_BASE_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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_CONFIG_H__ | #ifndef __CCE_RUNTIME_CONFIG_H__ | ||||
#define __CCE_RUNTIME_CONFIG_H__ | #define __CCE_RUNTIME_CONFIG_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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_CONTEXT_H__ | #ifndef __CCE_RUNTIME_CONTEXT_H__ | ||||
#define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_DEVICE_H__ | #ifndef __CCE_RUNTIME_DEVICE_H__ | ||||
#define __CCE_RUNTIME_DEVICE_H__ | #define __CCE_RUNTIME_DEVICE_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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_DVFSPROFILE_H__ | #ifndef __CCE_RUNTIME_DVFSPROFILE_H__ | ||||
#define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_EVENT_H__ | #ifndef __CCE_RUNTIME_EVENT_H__ | ||||
#define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_KERNEL_H__ | #ifndef __CCE_RUNTIME_KERNEL_H__ | ||||
#define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_MEM_H__ | #ifndef __CCE_RUNTIME_MEM_H__ | ||||
#define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_RT_H__ | #ifndef __CCE_RUNTIME_RT_H__ | ||||
#define __CCE_RUNTIME_RT_H__ | #define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_MODEL_H__ | #ifndef __CCE_RUNTIME_MODEL_H__ | ||||
#define __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"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
* you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
* You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
* distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
* See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
* limitations under the License. | * limitations under the License. | ||||
*/ | |||||
*/ | |||||
#ifndef __CCE_RUNTIME_STREAM_H__ | #ifndef __CCE_RUNTIME_STREAM_H__ | ||||
#define __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 | #ifndef INC_TDT_INDEX_TRANSFORM_H | ||||
#define INC_TDT_INDEX_TRANSFORM_H | #define INC_TDT_INDEX_TRANSFORM_H | ||||
@@ -1,4 +1,4 @@ | |||||
/** | |||||
/** | |||||
* Copyright 2019-2020 Huawei Technologies Co., Ltd | * Copyright 2019-2020 Huawei Technologies Co., Ltd | ||||
* | * | ||||
* Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
@@ -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 | #ifndef ADX_DATADUMP_SERVER_H | ||||
#define ADX_DATADUMP_SERVER_H | #define ADX_DATADUMP_SERVER_H | ||||
@@ -14,11 +14,20 @@ | |||||
* limitations under the License. | * 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 | #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"))) | #define MSVP_PROF_API __attribute__((visibility("default"))) | ||||
#endif | |||||
// DataTypeConfig | // DataTypeConfig | ||||
#define PROF_ACL_API 0x0001 | #define PROF_ACL_API 0x0001 | ||||
@@ -78,6 +87,9 @@ enum ProfErrorCode { | |||||
PROF_ERROR_UNSUPPORTED, // unsupported data type or ai core metrics | PROF_ERROR_UNSUPPORTED, // unsupported data type or ai core metrics | ||||
PROF_ERROR_REPEAT_START, // profiilng has already been started | PROF_ERROR_REPEAT_START, // profiilng has already been started | ||||
PROF_ERROR_NOT_STARTED, // profiling has not 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_MEMORY = 3, | ||||
PROF_AICORE_INTERNAL_MEMORY = 4, | PROF_AICORE_INTERNAL_MEMORY = 4, | ||||
PROF_AICORE_STALL = 5, | 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); | 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 | * @name ProfStopProfiling | ||||
@@ -161,4 +216,181 @@ MSVP_PROF_API int32_t ProfFinalize(); | |||||
*/ | */ | ||||
MSVP_PROF_API int32_t ProfGetDataTypeConfig(uint32_t deviceId, uint64_t &dataTypeConfig); | 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_ | #ifndef MSPROF_ENGINE_PROF_MGR_CORE_H_ | ||||
#define 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"))) | #define MSVP_PROF_API __attribute__((visibility("default"))) | ||||
#endif | |||||
#include <string> | #include <string> | ||||
#include <vector> | #include <vector> | ||||
@@ -26,8 +26,6 @@ | |||||
#define MSVP_PROF_API __attribute__((visibility("default"))) | #define MSVP_PROF_API __attribute__((visibility("default"))) | ||||
#endif | #endif | ||||
#include "prof_callback.h" | |||||
/** | /** | ||||
* @file prof_reporter.h | * @file prof_reporter.h | ||||
* @defgroup reporter the reporter group | * @defgroup reporter the reporter group | ||||
@@ -120,15 +120,15 @@ typedef struct tagKV { | |||||
} KeyValue; | } KeyValue; | ||||
typedef enum { | typedef enum { | ||||
APPLICATION = 0, | |||||
SYSTEM | |||||
APPLICATION = 0, | |||||
SYSTEM | |||||
} ProcessType; | } ProcessType; | ||||
typedef struct { | typedef struct { | ||||
ProcessType type; | |||||
unsigned int pid; | |||||
unsigned int deviceId; | |||||
char reserved[RESERVERD_LENGTH]; | |||||
ProcessType type; | |||||
unsigned int pid; | |||||
unsigned int deviceId; | |||||
char reserved[RESERVERD_LENGTH]; | |||||
} LogAttr; | } LogAttr; | ||||
/** | /** | ||||
@@ -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调优接口 */ | /** @defgroup mstune mstune调优接口 */ | ||||
#ifndef TUNE_API_H | #ifndef TUNE_API_H | ||||
#define TUNE_API_H | #define TUNE_API_H | ||||