跳到主要内容

函数:set_kernel_workspace_sizes

函数:create_kernel

C函数原型aclError aclopCreateKernel(const char *opType, const char *kernelId, const char *kernelName, void *binData, int binSize, aclopEngineType enginetype, aclDataDeallocator deallocator)
Python函数ret = acl.op.create_kernel(op_type, kernel_id, kernel_name, bin_data, bin_size, enginetype, deallocator)
函数功能动态Shape场景下,将算子注册到系统内部,运行算子时使用。
输入说明op_type:str,算子类型。 kernel_id:str,算子执行时要指定的Kernel ID。 kernel_name:str,算子Kernel名称,和算子二进制文件中的kernelName保持一致。 bin_data:int,算子Kernel文件的内存地址。 bin_size:int,算子Kernel文件的内存大小,单位为byte。 enginetype:int,表示算子执行引擎,该参数只有acl.op.update.params接口的compile_flag参数值为ACL_COMPILE_SYS时有效。
- 0:ACL_ENGINE_SYS,不关心具体执行引擎时填写。
- 1:ACL_ENGINE_AICORE,将算子编译成AI Core算子。
- 2:ACL_ENGINE_VECTOR,将算子编译成Vector Core算子。
**deallocator:**int,指定是否自动释放bin_data内存。
- 0:不自动释放,数据由调用者自行编写代码进行释放。
- 1:自动释放,内部会设置回调函数释放bin_data内存。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 算子编译

函数:set_kernel_args

C函数原型aclError aclopSetKernelArgs(aclopKernelDesc *kernelDesc, const char *kernelId, uint32_t blockDim, const void *args, uint32_t argSize)
Python函数ret = acl.op.set_kernel_args(kernel_desc, kernel_id, block_dim, args, arg_size)
函数功能动态Shape场景下,设置算子Tiling参数、执行并发数。
输入说明kernel_desc:int,Kernel描述缓存,aclopKernelDesc类型的指针地址。 kernel_id:str,算子执行时要指定的Kernel ID,与调用acl.op.create.kernel时传递的kernel_id一致。 **block_dim:**int,Kernel执行的并发数。 bin_data:int,算子Kernel文件的内存地址。 bin_size:int,算子Kernel文件的内存大小,单位为byte。 **args:**int,Tiling参数,需要通过numpy数组tobytes方法获取bytes对象,然后使用acl.utils.bytes_to_ptr()接口获取Tiling参数指针地址。 arg_size:int,Tiling参数内存大小,单位为Byte,为numpy.tobytes()转换得到bytes的对象长度,可用len函数获取。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 算子编译

函数:set_kernel_workspace_sizes

C函数原型aclError aclopSetKernelWorkspaceSizes(aclopKernelDesc *kernelDesc, int numWorkspaces, size_t *workspaceSizes)
Python函数ret = acl.op.set_kernel_workspace_sizes(kernel_desc, num_workspaces, workspace_sizes)
函数功能动态Shape场景下,设置算子Workspace参数。
输入说明kernel_desc:int,Kernel描述缓存,aclopKernelDesc类型的指针地址。 num_workspaces:int,Workspaces个数。 **workspace_sizes:**int,Workspaces大小的数组地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明为非必须接口,根据算子情况可选。

父主题: 算子编译

函数:update_params

C函数原型aclError aclopUpdateParams(const char *opType, int numInputs, const aclTensorDesc *const inputDesc[], int numOutputs, const aclTensorDesc *const outputDesc[], const aclopAttr *attr**)**
Python函数ret = acl.op.update_params(op_type, input_desc, output_desc, attr)
函数功能动态Shape场景下,设置算子Tiling参数、执行并发数。
输入说明op_type:str,算子类型名称。 input_desc:list,算子输入tensor的描述。 output_desc:list,算子输出tensor的描述。 attr:int,算子属性。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 算子编译

总体说明

在图像检索场景,通常使用深度学习算法处理目标等感兴趣的图像,提取出高维特征向量,并将一组感兴趣的图像提取得到的特征向量作为底库,待搜索的特征向量与底库中的向量依次进行相似度计算,按相似度排序返回检索结果。为了进一步降低存储和计算的开销,对浮点型长特征向量进行量化处理、转换为短特征再进行检索比对的技术被广泛应用。

昇腾AI处理器支持基于硬件加速的PQ短特征检索,提供特征底库的添加/删除接口,特征向量的修改/删除接口、以及执行检索接口,支持长度为32 Byte的短特征向量,支持设置返回TOP结果的数量,支持1:N和N:M检索模式。用户需要自行准备短特征底库,以及生成待检索向量的ADC表,流程如下:

图1 流程示意

检索比对过程示意图如下所示:

ADC表是大小为32KByte的查找表,使用时需要将表的内容以无符号字符的格式传入对应接口。

父主题: 特征向量检索

函数:init

C函数原型aclError **aclfvInit(**aclfvInitPara *initPara)
Python函数ret = acl.fv.init(init_para)
函数功能初始化特征检索模块。同步接口。与 acl.fv.release接口配套使用。 Atlas 200/500 A2推理产品不支持该接口。
输入说明init_para:int,指定特征向量检索的初始化参数。
- 调用acl.fv.create_init_para接口创建aclfvInitPara类型的数据。
- 1:N场景下调用acl.fv.set_1n_top_num接口设置返回的topK结果数量的最大值,不设置时,默认返回的topK结果数量的最大值为4800。
- N:M场景下调用acl.fv.set_nm_top_num接口设置返回的topK结果数量的最大值,不设置时,默认返回的topK结果数量的最大值为500。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明一个进程内只能调用一次acl.fv.init接口。

父主题: 特征向量检索

在线提单