aclopUnregisterCompileFunc
aclnn返回码
调用算子接口时,常见的接口返回码如表1所示。
表1 返回状态码
| 状态码名称 | 状态码值 | 状态码说明 |
|---|---|---|
| ACLNN_SUCCESS | 0 | 成功。 |
| ACLNN_ERR_PARAM_NULLPTR | 161001 | 参数校验错误,参数中存在非法的nullptr。 |
| ACLNN_ERR_PARAM_INVALID | 161002 | 参数校验错误,如输入的两个数据类型不满足输入类型推导关系。 详细的错误消息,可以通过aclGetRecentErrMsg接口获取(该接口在acl.h中)。 |
| ACLNN_ERR_RUNTIME_ERROR | 361001 | API内存调用npu runtime的接口异常。 |
| ACLNN_ERR_INNER_XXX | 561xxx | API发生内部异常,详细的错误消息,可以通过aclGetRecentErrMsg接口获取。请根据报错排查问题,或者联系技术支持。(您可以获取日志后单击Link联系技术支持。) |
更多关于ACLNN_ERR_INNER_XXX类状态码的说明如表2所示。
表2 异常状态码
| 状态码名称 | 状态码值 | 状态码说明 |
|---|---|---|
| ACLNN_ERR_INNER | 561000 | 内部异常:API发生内部异常。 |
| ACLNN_ERR_INNER_INFERSHAPE_ERROR | 561001 | 内部异常:API内部进行输出shape推导发生错误。 |
| ACLNN_ERR_INNER_TILING_ERROR | 561002 | 内部异常:API内部做npu kernel的tiling时发生异常。 |
| ACLNN_ERR_INNER_FIND_KERNEL_ERROR | 561003 | 内部异常:API内部做查找npu kernel异常(可能因为opp kernel的包未安装)。 |
| ACLNN_ERR_INNER_CREATE_EXECUTOR | 561101 | 内部异常:API内部创建aclOpExecutor失败(可能因为操作系统异常)。 |
| ACLNN_ERR_INNER_NOT_TRANS_EXECUTOR | 561102 | 内部异常:API内部未调用uniqueExecutor ReleaseTo。 |
| ACLNN_ERR_INNER_NULLPTR | 561103 | 内部异常:aclnn API内部发生异常,出现了nullptr的异常。 |
| ACLNN_ERR_INNER_WRONG_ATTR_INFO_SIZE | 561104 | 内部异常:aclnn API内部发生异常,算子的属性个数异常。 |
| ACLNN_ERR_INNER_KEY_CONFILICT | 561105 | 内部异常:aclnn API内部发生异常,算子的kernel匹配的hash key发生冲突。 |
| ACLNN_ERR_INNER_INVALID_IMPL_MODE | 561106 | 内部异常:aclnn API内部发生异常,算子的实现模式参数错误。 |
| ACLNN_ERR_INNER_OPP_PATH_NOT_FOUND | 561107 | 内部异常:aclnn API内部发生异常,没有检测到需要配置的环境变量ASCEND_OPP_PATH。 |
| ACLNN_ERR_INNER_LOAD_JSON_FAILED | 561108 | 内部异常:aclnn API内部发生异常,加载算子kernel库中算子信息json文件失败。 |
| ACLNN_ERR_INNER_JSON_VALUE_NOT_FOUND | 561109 | 内部异常:aclnn API内部发生异常,加载算子kernel库中算子信息json文件的某个字段失败。 |
| ACLNN_ERR_INNER_JSON_FORMAT_INVALID | 561110 | 内部异常:aclnn API内部发生异常,算子kernel库中算子信息json文件的format填写为非法值。 |
| ACLNN_ERR_INNER_JSON_DTYPE_INVALID | 561111 | 内部异常:aclnn API内部发生异常,算子kernel库中算子信息json文件的dtype填写为非法值。 |
| ACLNN_ERR_INNER_OPP_KERNEL_PKG_NOT_FOUND | 561112 | 内部异常:aclnn API内部发生异常,没有加载到算子的二进制kernel库。 |
| ACLNN_ERR_INNER_OP_FILE_INVALID | 561113 | 内部异常:aclnn API内部发生异常,加载算子json文件字段时,发生异常。 |
| ACLNN_ERR_INNER_ATTR_NUM_OUT_OF_BOUND | 561114 | 内部异常:aclnn API内部发生异常,算子的属性个数与算子信息json中不一致,超过了json中指定的attr个数。 |
| ACLNN_ERR_INNER_ATTR_LEN_NOT_ENOUGH | 561115 | 内部异常:aclnn API内部发生异常,算子的属性个数与算子信息json中不一致,少于json中指定的attr个数。 |
| ACLNN_ERR_INNER_INPUT_NUM_IN_JSON_TOO_LARGE | 561116 | 内部异常:aclnn API内部发生异常,算子的输入个数超出32的限制。 |
| ACLNN_ERR_INNER_INPUT_JSON_IS_NULL | 561117 | 内部异常:aclnn API内部发生异常,算子信息json文件中,不存在对输出的信息描述。 |
| ACLNN_ERR_INNER_STATIC_WORKSPACE_INVALID | 561118 | 内部异常:aclnn API内部发生异常,解析静态二进制json文件中的workspace信息时,发生异常。 |
| ACLNN_ERR_INNER_STATIC_BLOCK_DIM_INVALID | 561119 | 内部异常:aclnn API内部发生异常,解析静态二进制json文件中的核数使用信息时,发生异常。 |
父主题: 融合类算子接口
aclopRegisterCompileFunc
函数功能
动态Shape场景下,注册算子选择器,用于在算子执行时,能针对不同shape,选择相应的Tiling策略。
约束说明
如果某算子已注册算子选择器,则不允许重新注册,如果需要变更算子选择器,必须先调用aclopUnregisterCompileFunc接口取消注册,然后再调用aclopRegisterCompileFunc接口重新注册。
函数原型
aclError aclopRegisterCompileFunc(const char *opType, aclopCompileFunc func)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| opType | 输入 | 算子类型的指针。 |
| func | 输入 | 算子选择器回调函数,函数定义: text<br>typedef aclError (*aclopCompileFunc)(int numInputs, const aclTensorDesc *const inputDesc[], int numOutputs, const aclTensorDesc *const outputDesc[], const aclopAttr *opAttr, aclopKernelDesc *aclopKernelDesc);<br> |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 算子编译
aclopUnregisterCompileFunc
函数功能
动态Shape场景下,取消注册算子选择器。
函数原型
aclError aclopUnregisterCompileFunc(const char *opType)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| opType | 输入 | 算子类型的指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 算子编译
aclopCreateKernel
函数功能
动态Shape场景下,将算子注册到系统内部,运行算子时使用。
函数原型
aclError aclopCreateKernel(const char *opType,
const char *kernelId,
const char *kernelName,
void *binData,
int binSize,
aclopEngineType enginetype,
aclDataDeallocator deallocator)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| opType | 输入 | 算子类型的指针。 |
| kernelId | 输入 | 算子执行时要指定的Kernel ID的指针。 |
| kernelName | 输入 | 算子Kernel名称的指针,和算子二进制文件中的kernelName保持一致。 |
| binData | 输入 | 算子Kernel文件的内存地址指针。 |
| binSize | 输入 | 算子Kernel文件的内存大小,单位为Byte。 |
| enginetype | 输入 | 表示算子执行引擎。 text<br>typedef enum aclEngineType {<br> ACL_ENGINE_SYS, //不关心具体执行引擎时填写<br> ACL_ENGINE_AICORE, //将算子编译成AI Core算子<br> ACL_ENGINE_VECTOR, //将算子编译成Vector Core算子<br>} aclopEngineType;<br> |
| deallocator | 输入 | 释放binData内存的回调函数,调用者根据binData的构造方法设置对应的释放函数。如果数据由调用者释放则设置为空。 函数签名为: typedef void (*aclDataDeallocator)(void *data, size_t length); |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 算子编译
aclopSetKernelArgs
函数功能
动态Shape场景下,设置算子Tiling参数、执行并发数。
函数原型
aclError aclopSetKernelArgs(aclopKernelDesc *kernelDesc,
const char *kernelId,
uint32_t blockDim,
const void *args,
uint32_t argSize)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| kernelDesc | 输入 | Kernel描述缓存,aclopKernelDesc类型的指针。 text<br>typedef struct aclopKernelDesc aclopKernelDesc;<br> |
| kernelId | 输入 | 算子执行时要指定的Kernel ID的指针,与调用aclopCreateKernel时传递的kernelId一致。 |
| blockDim | 输入 | Kernel执行的并发AI Core核数。 建议此处设置的blockDim和TIK算子实现时的使用的AI Core核数保持一致。 |
| args | 输入 | Tiling参数的指针。 |
| argSize | 输入 | Tiling参数内存大小,单位为Byte。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 算子编译
在线提单