宏和类简介

常用宏

表1 常用宏表

宏定义

宏功能

宏所属头文件

L2_DFX_PHASE_1

必须在一阶段接口最前方调用,用于接口及一阶段入参打印。

aclnn/opdev/op_dfx.h

L2_DFX_PHASE_2

必须在二阶段接口最前方调用,用于接口打印。

DFX_IN

在L2_DFX_PHASE_1中,用于打包所有的host侧api输入参数。

DFX_OUT

在L2_DFX_PHASE_1中,用于打包所有的host侧api输出参数。

L0_DFX

必须在host侧API L0接口中使用,用于接口及L0接口入参打印。

CREATE_EXECUTOR

创建一个UniqueExcutor对象,该对象为aclOpExecutor的生成工厂类。

aclnn/opdev/make_op_executor.h

INFER_SHAPE

针对指定算子,运行其infershape函数,推导输出shape。

ADD_TO_LAUNCHER_LIST_AICORE

创建某个AICore算子的执行任务,并置入aclOpExecutor的执行队列,在二阶段时执行。

OP_INPUT

ADD_TO_LAUNCHER_LIST_AICORE中,打包算子输入aclTensor。

aclnn/opdev/op_arg_def.h

OP_OUTPUT

ADD_TO_LAUNCHER_LIST_AICORE中,打包算子输出aclTensor。

OP_ATTR

ADD_TO_LAUNCHER_LIST_AICORE中,打包算子属性参数。

OP_WORKSPACE

ADD_TO_LAUNCHER_LIST_AICORE中,打包算子显式指定的workspace参数。

OP_OUTSHAPE

ADD_TO_LAUNCHER_LIST_AICORE中,针对第三类算子,设置存放输出shape的aclTensor。

OP_OPTION

ADD_TO_LAUNCHER_LIST_AICORE中,打包算子指定的精度模式。

OP_EMPTY_ARG

ADD_TO_LAUNCHER_LIST_AICORE中,用于占位一个空的输入或输出。

OP_MODE

ADD_TO_LAUNCHER_LIST_AICORE中,打包算子运行选项,例如是否使能HF32。

OP_ATTR_NAMES({attr1, ....})

string类型的vector,打包AI CPU算子的字符类型属性

aclnn/opdev/aicpu/aicpu_task.h

ADD_TO_LAUNCHER_LIST_AICPU(

KERNEL_NAME, attrNames, opArgs...)

创建某个AI CPU算子的执行任务,并置入aclOpExecutor的执行队列,在二阶段时执行。

常用类

表2 常用类表

类名称

类说明

类所属头文件

aclOpExecutor

在aclnn一阶段接口中产生,内部记录aclnn一阶段中入栈的算子task列表及其图结构。

aclnn/opdev/op_executor.h

aclTensor

用于描述一个张量,包括shape、dtype、format、address等信息,数据可以放在host侧或device侧。

aclnn/opdev/common_type.h

aclScalar

用于描述一个host侧标量数字。

aclTensorList

用于描述一组aclTensor。

aclScalarList

用于描述一组aclScalar。

aclBoolArray

用于描述一个host侧bool类型的数组。

aclIntArray

用于描述一个host侧int64类型的数组。

aclFloatArray

用于描述一个host侧fp32类型的数组。

aclFp16Array

用于描述一个host侧fp16类型的数组。

aclBf16Array

用于描述一个host侧bf16类型的数组。

FVector

使用内部内存池实现的vector容器,基础功能与std::vector相同

aclnn/opdev/fast_vector.h