本章中的接口涉及对算子的算子二进制、核函数、核函数参数列表以及参数的操作,为便于理解,您可以先通过下图了解它们之间的关系。

自定义算子的开发、编译请参见《Ascend C算子开发》。

关键流程说明如下:
AI CPU算子还支持从内存加载算子二进制数据的方式(调用aclrtBinaryLoadFromData接口),但加载算子二进制数据后,还需配合使用aclrtRegisterCpuFunc接口注册AI CPU算子信息。
当前支持由系统管理内存(调用aclrtKernelArgsInit接口)、由用户管理内存(调用aclrtKernelArgsInitByUserMem接口)两种方式。
核函数参数列表中包含不同类型的参数,例如指针类型参数、placeholder、uint8_t类型参数等,其中:

不同类型参数,可调用不同的参数追加接口:
注意,核函数参数列表中,实际可能存在多个参数,并且不同类型的参数可能交错出现,因此需要按照参数列表中的参数顺序从左到右进行追加,追加的参数最多支持128个。
在所有参数追加之后,调用aclrtKernelArgsFinalize接口以标识参数组装完毕。但aclrtKernelArgsFinalize接口之后,也支持继续更新参数值,更新之后,还要再调用一次aclrtKernelArgsFinalize接口。
若使用aclrtArgsHandle参数列表句柄组装核函数的入参数据,则调用aclrtLaunchKernelWithConfig接口启动对应算子的计算任务。该方式下,用户只需按顺序在参数列表中追加参数,无需关注内存中的组装细节,也无需关注内部参数。
若核函数的入参数据都存放在Host或Device内存中,则调用aclrtLaunchKernel、aclrtLaunchKernelV2或aclrtLaunchKernelWithHostArgs接口启动对应算子的计算任务。