233 lines
7.5 KiB
C
233 lines
7.5 KiB
C
![]() |
/*
|
||
|
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
|
||
|
*/
|
||
|
|
||
|
#ifndef SVP_ACL_BASE_H
|
||
|
#define SVP_ACL_BASE_H
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <stdlib.h>
|
||
|
#ifdef SVP_FUNC_VISIBILITY
|
||
|
#include <stddef.h>
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#ifdef SVP_FUNC_VISIBILITY
|
||
|
#define SVP_ACL_FUNC_VISIBILITY __attribute__((visibility("default")))
|
||
|
#else
|
||
|
#define SVP_ACL_FUNC_VISIBILITY
|
||
|
#endif
|
||
|
|
||
|
typedef void *svp_acl_rt_stream;
|
||
|
typedef void *svp_acl_rt_context;
|
||
|
typedef int svp_acl_error;
|
||
|
typedef uint16_t svp_acl_float16;
|
||
|
typedef struct svp_acl_data_buffer svp_acl_data_buffer;
|
||
|
|
||
|
#define SVP_ACL_ERROR_NONE 0
|
||
|
#define SVP_ACL_SUCCESS 0
|
||
|
|
||
|
#define SVP_ACL_ERROR_INVALID_PARAM 100000
|
||
|
#define SVP_ACL_ERROR_UNINITIALIZE 100001
|
||
|
#define SVP_ACL_ERROR_REPEAT_INITIALIZE 100002
|
||
|
#define SVP_ACL_ERROR_INVALID_FILE 100003
|
||
|
#define SVP_ACL_ERROR_WRITE_FILE 100004
|
||
|
#define SVP_ACL_ERROR_INVALID_FILE_SIZE 100005
|
||
|
#define SVP_ACL_ERROR_PARSE_FILE 100006
|
||
|
#define SVP_ACL_ERROR_FILE_MISSING_ATTR 100007
|
||
|
#define SVP_ACL_ERROR_FILE_ATTR_INVALID 100008
|
||
|
#define SVP_ACL_ERROR_INVALID_DUMP_CONFIG 100009
|
||
|
#define SVP_ACL_ERROR_INVALID_PROFILING_CONFIG 100010
|
||
|
#define SVP_ACL_ERROR_INVALID_MODEL_ID 100011
|
||
|
#define SVP_ACL_ERROR_DESERIALIZE_MODEL 100012
|
||
|
#define SVP_ACL_ERROR_PARSE_MODEL 100013
|
||
|
#define SVP_ACL_ERROR_READ_MODEL_FAILURE 100014
|
||
|
#define SVP_ACL_ERROR_MODEL_SIZE_INVALID 100015
|
||
|
#define SVP_ACL_ERROR_MODEL_MISSING_ATTR 100016
|
||
|
#define SVP_ACL_ERROR_MODEL_INPUT_NOT_MATCH 100017
|
||
|
#define SVP_ACL_ERROR_MODEL_OUTPUT_NOT_MATCH 100018
|
||
|
#define SVP_ACL_ERROR_MODEL_NOT_DYNAMIC 100019
|
||
|
#define SVP_ACL_ERROR_OP_TYPE_NOT_MATCH 100020
|
||
|
#define SVP_ACL_ERROR_OP_INPUT_NOT_MATCH 100021
|
||
|
#define SVP_ACL_ERROR_OP_OUTPUT_NOT_MATCH 100022
|
||
|
#define SVP_ACL_ERROR_OP_ATTR_NOT_MATCH 100023
|
||
|
#define SVP_ACL_ERROR_OP_NOT_FOUND 100024
|
||
|
#define SVP_ACL_ERROR_OP_LOAD_FAILED 100025
|
||
|
#define SVP_ACL_ERROR_UNSUPPORTED_DATA_TYPE 100026
|
||
|
#define SVP_ACL_ERROR_FORMAT_NOT_MATCH 100027
|
||
|
#define SVP_ACL_ERROR_BIN_SELECTOR_NOT_REGISTERED 100028
|
||
|
#define SVP_ACL_ERROR_KERNEL_NOT_FOUND 100029
|
||
|
#define SVP_ACL_ERROR_BIN_SELECTOR_ALREADY_REGISTERED 100030
|
||
|
#define SVP_ACL_ERROR_KERNEL_ALREADY_REGISTERED 100031
|
||
|
#define SVP_ACL_ERROR_INVALID_QUEUE_ID 100032
|
||
|
#define SVP_ACL_ERROR_REPEAT_SUBSCRIBE 100033
|
||
|
#define SVP_ACL_ERROR_STREAM_NOT_SUBSCRIBE 100034
|
||
|
#define SVP_ACL_ERROR_THREAD_NOT_SUBSCRIBE 100035
|
||
|
#define SVP_ACL_ERROR_WAIT_CALLBACK_TIMEOUT 100036
|
||
|
#define SVP_ACL_ERROR_REPEAT_FINALIZE 100037
|
||
|
#define SVP_ACL_ERROR_NOT_STATIC_AIPP 100038
|
||
|
#define SVP_ACL_ERROR_COMPILING_STUB_MODE 100039
|
||
|
#define SVP_ACL_ERROR_GROUP_NOT_SET 100040
|
||
|
#define SVP_ACL_ERROR_GROUP_NOT_CREATE 100041
|
||
|
#define SVP_ACL_ERROR_PROF_ALREADY_RUN 100042
|
||
|
#define SVP_ACL_ERROR_PROF_NOT_RUN 100043
|
||
|
#define SVP_ACL_ERROR_DUMP_ALREADY_RUN 100044
|
||
|
#define SVP_ACL_ERROR_DUMP_NOT_RUN 100045
|
||
|
#define SVP_ACL_ERROR_PROF_REPEAT_SUBSCRIBE 148046
|
||
|
#define SVP_ACL_ERROR_PROF_API_CONFLICT 148047
|
||
|
#define SVP_ACL_ERROR_INVALID_MAX_OPQUEUE_NUM_CONFIG 148048
|
||
|
|
||
|
#define SVP_ACL_ERROR_BAD_ALLOC 200000
|
||
|
#define SVP_ACL_ERROR_API_NOT_SUPPORT 200001
|
||
|
#define SVP_ACL_ERROR_INVALID_DEVICE 200002
|
||
|
#define SVP_ACL_ERROR_MEMORY_ADDRESS_UNALIGNED 200003
|
||
|
#define SVP_ACL_ERROR_RESOURCE_NOT_MATCH 200004
|
||
|
#define SVP_ACL_ERROR_INVALID_RESOURCE_HANDLE 200005
|
||
|
#define SVP_ACL_ERROR_FEATURE_UNSUPPORTED 200006
|
||
|
#define SVP_ACL_ERROR_PROF_MODULES_UNSUPPORTED 200007
|
||
|
|
||
|
#define SVP_ACL_ERROR_STORAGE_OVER_LIMIT 300000
|
||
|
|
||
|
#define SVP_ACL_ERROR_INTERNAL_ERROR 500000
|
||
|
#define SVP_ACL_ERROR_FAILURE 500001
|
||
|
#define SVP_ACL_ERROR_GE_FAILURE 500002
|
||
|
#define SVP_ACL_ERROR_RT_FAILURE 500003
|
||
|
#define SVP_ACL_ERROR_DRV_FAILURE 500004
|
||
|
#define SVP_ACL_ERROR_PROFILING_FAILURE 500005
|
||
|
#define SVP_ACL_ERROR_RT_REPORT_TIMEOUT 507012
|
||
|
|
||
|
typedef enum {
|
||
|
SVP_ACL_DT_UNDEFINED = -1,
|
||
|
SVP_ACL_FLOAT = 0,
|
||
|
SVP_ACL_FLOAT16 = 1,
|
||
|
SVP_ACL_INT8 = 2,
|
||
|
SVP_ACL_INT32 = 3,
|
||
|
SVP_ACL_UINT8 = 4,
|
||
|
SVP_ACL_INT16 = 6,
|
||
|
SVP_ACL_UINT16 = 7,
|
||
|
SVP_ACL_UINT32 = 8,
|
||
|
SVP_ACL_INT64 = 9,
|
||
|
SVP_ACL_UINT64 = 10,
|
||
|
SVP_ACL_DOUBLE = 11,
|
||
|
SVP_ACL_BOOL = 12,
|
||
|
SVP_ACL_STRING = 13,
|
||
|
|
||
|
SVP_ACL_INT10 = 100,
|
||
|
SVP_ACL_UINT10 = 101,
|
||
|
SVP_ACL_INT12 = 102,
|
||
|
SVP_ACL_UINT12 = 103,
|
||
|
SVP_ACL_INT14 = 104,
|
||
|
SVP_ACL_UINT14 = 105,
|
||
|
SVP_ACL_INT24 = 106,
|
||
|
SVP_ACL_UINT24 = 107,
|
||
|
} svp_acl_data_type;
|
||
|
|
||
|
typedef enum {
|
||
|
SVP_ACL_FORMAT_UNDEFINED = -1,
|
||
|
SVP_ACL_FORMAT_NCHW = 0,
|
||
|
SVP_ACL_FORMAT_NHWC = 1,
|
||
|
SVP_ACL_FORMAT_ND = 2,
|
||
|
SVP_ACL_FORMAT_NC1HWC0 = 3,
|
||
|
SVP_ACL_FORMAT_FRACTAL_Z = 4,
|
||
|
SVP_ACL_FORMAT_NC1HWC0_C04 = 12,
|
||
|
SVP_ACL_FORMAT_FRACTAL_NZ = 29,
|
||
|
} svp_acl_format;
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief create data of svp_acl_data_buffer
|
||
|
*
|
||
|
* @param data [IN] pointer to data
|
||
|
* @li Need to be managed by the user,
|
||
|
* call svp_acl_rt_malloc interface to apply for memory,
|
||
|
* call svp_acl_rt_free interface to release memory
|
||
|
* @param size [IN] size of data in bytes
|
||
|
* @param stride [IN] stride of data in bytes
|
||
|
* @retval pointer to created instance. nullptr if run out of memory
|
||
|
*
|
||
|
* @see svp_acl_rt_malloc | svp_acl_rt_free
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY svp_acl_data_buffer *svp_acl_create_data_buffer(void *data, size_t size, size_t stride);
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief destroy data of svp_acl_data_buffer
|
||
|
*
|
||
|
* @par Function
|
||
|
* Only the svp_acl_data_buffer type data is destroyed here.
|
||
|
* The memory of the data passed in when the svp_acl_data_buffer interface
|
||
|
* is called to create svp_acl_data_buffer type data must be released by the user
|
||
|
*
|
||
|
* @param data_buffer [IN] pointer to the svp_acl_data_buffer
|
||
|
*
|
||
|
* @retval SVP_ACL_SUCCESS The function is successfully executed.
|
||
|
* @retval OtherValues Failure
|
||
|
*
|
||
|
* @see svp_acl_create_data_buffer
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY svp_acl_error svp_acl_destroy_data_buffer(const svp_acl_data_buffer *data_buffer);
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief get data address from svp_acl_data_buffer
|
||
|
*
|
||
|
* @param data_buffer [IN] pointer to the data of svp_acl_data_buffer
|
||
|
*
|
||
|
* @retval data address
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY void *svp_acl_get_data_buffer_addr(const svp_acl_data_buffer *data_buffer);
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief get data size of svp_acl_data_buffer
|
||
|
*
|
||
|
* @param data_buffer [IN] pointer to the data of svp_acl_data_buffer
|
||
|
*
|
||
|
* @retval data size
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY size_t svp_acl_get_data_buffer_size(const svp_acl_data_buffer *data_buffer);
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief get stride of svp_acl_data_buffer
|
||
|
*
|
||
|
* @param data_buffer [IN] pointer to the data of svp_acl_data_buffer
|
||
|
* @retval stride
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY size_t svp_acl_get_data_buffer_stride(const svp_acl_data_buffer *data_buffer);
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief update svp_acl_data_buffer
|
||
|
*
|
||
|
* @param data_buffer [IN] pointer to the data of svp_acl_data_buffer
|
||
|
* @param data [IN] pointer to data
|
||
|
* @li Need to be managed by the user,
|
||
|
* call svp_acl_rt_malloc interface to apply for memory,
|
||
|
* call svp_acl_rt_free interface to release memory
|
||
|
* @param size [IN] size of data in bytes
|
||
|
* @param stride [IN] stride of data in bytes
|
||
|
* @retval SVP_ACL_SUCCESS The function is successfully executed.
|
||
|
* @retval OtherValues Failure
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY svp_acl_error svp_acl_update_data_buffer(svp_acl_data_buffer *data_buffer, void *data,
|
||
|
size_t size, size_t stride);
|
||
|
|
||
|
/**
|
||
|
* @ingroup svp_acl
|
||
|
* @brief get size of svp_acl_data_type
|
||
|
*
|
||
|
* @param data_type [IN] svp_acl_data_type data the size to get
|
||
|
* @retval bit num of the svp_acl_data_type
|
||
|
*/
|
||
|
SVP_ACL_FUNC_VISIBILITY size_t svp_acl_data_type_size(svp_acl_data_type data_type);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* SVP_ACL_BASE_H */
|