算子编译
对算子代码进行编译,生成算子的二进制文件及算子描述文件。
- 算子编译依赖DDK的版本号,所以编译算子前需要获取当前使用的DDK的版本号。
在“$HOME/tools/che/ddk/ddk/ddk_info”文件中查看DDK版本号。
如图1所示,VERSION字段即为当前DDK版本。
- 执行如下命令设置版本号信息、编译算子。
- 在customop_te/operator目录下执行如下命令进入python交互模式。
python
- 在python交互模式下依次执行如下命令设置DDK的版本号。
from topi.cce import te_set_version
import subprocess
te_set_version("1.3.T18.B850")
执行示例如图2所示。
- 执行如下命令编译reduction.py文件,生成算子二进制文件与描述文件。
subprocess.call("python reduction.py",shell=True)
图3 编译算子文件 - 退出python交互模式。
quit(0)
- 在customop_te/operator目录下执行如下命令进入python交互模式。
- 算子编译完成后,会在当前operator目录下生成kernel_meta文件夹,kernel_meta文件夹下为编译生成的算子二进制文件*.o文件(运行目标为AI Core的算子)或者*.so文件(运行目标为AI CPU的算子)及算子描述文件*.json文件。
- *.o或者*.so是算子的二进制文件。
- .json文件是对应的算子描述文件,用于定义算子属性及运行时所需要的资源。
json文件解析如下所示:
{ "binFileName":"Reduction", //生成的算子的二进制文件名称 "binFileSuffix":".o", //生成的算子的二进制文件后缀,运行目标为AI CPU时后缀为".so" "blockDim":1, //计算时用到的AI Core的数量 "kernelName":"Reduction__kernel0", //算子的kernel函数名 "magic":"RT_DEV_BINARY_MAGIC_ELF", //代表算子运行目标为AI Core,若magic值为RT_DEV_BINARY_MAGIC_ELF_AICPU,代表运行目标是AI CPU "sha256":"d5158df2ff2e64743eec7f527ddd9078b99c1d670f5adbd8b789224657ab0f91" //对.o文件进行加密得到的值 }