build
功能说明
对schedule对象进行编译生成算子二进制文件与算子描述文件。
函数原型
build(sch, config_map=None)
参数说明
- sch:计算schedule对象。
- config_map:build的参数配置,是一个字典,默认是None,则直接使用默认配置,包含如下key。
- print_ir:是否打印lower IR code,默认值:False。
- need_build:是否进行build,默认是True。
- name:算子的名字,默认是`cce_op`。
- tensor_list:算子的输入和输出tensor列表,输入是placeholder接口返回的tensor对象,输出是经过计算后的tensor对象,必填值,否则会报错。而且这个列表决定了生成算子的kernel函数的参数的顺序,和此list中的输入和输出的顺序是一致的。
- bool_storage_as_1bit:Bool类型存储时是否按照1 bit存储。
- True:按照1bit存储。
- False:按照8bit存储。
默认值是True。
- kernel_meta_parent_dir:设置算子编译过程中存储调试文件的“kernel_meta”文件夹的父路径。其中调试过程文件包括算子.o(算子二进制文件)、.json(算子描述文件)、.cce等文件。
取值:数据类型为string,配置为执行编译命令所在路径的相对路径。
默认值为“.”,即调试过程文件存储在执行编译命令当前路径的./kernel_meta文件夹中。
- tbe_debug_level:debug等级设置。
有以下几种取值:
- 0:不开启debug功能,仅在kernel_meta文件夹中生成.o(算子二进制文件)和.json文件(算子描述文件)。
- 1:单算子调试时,开启算子debug功能,AI Core指令串行执行,会导致执行性能下降,并在kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件)。
- 2:单算子调试时,开启算子debug功能,AI Core指令串行执行,会导致执行性能下降,并在kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),并关闭CCEC编译器的编译优化开关且打开CCEC调试功能(CCEC编译器选项设置为-O0-g)。
默认值为“0”。
- 若执行ATC模型转换或者执行训练脚本时配置了“op_debug_level”参数,则以“op_debug_level”参数的值为准。
- 配置为2,即开启ccec调试功能的场景下,会增大算子Kernel(*.o文件)的大小。动态shape场景下,由于算子编译时会遍历可能存在的所有场景,最终可能会导致由于算子Kernel文件过大而无法进行编译的情况,此种场景下,建议不要配置为2。
message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o:(xxxx)
返回值
无。
支持的型号
Atlas 200/300/500 推理产品
Atlas 训练系列产品
Atlas 推理系列产品(Ascend 310P处理器)
Atlas 200/500 A2推理产品
Atlas A2训练系列产品/Atlas 800I A2推理产品
调用示例
from tbe import tvm from tbe import dsl # 定义输入占位符 data = tvm.placeholder(shape, name="data", dtype=dtype) with tvm.target.cce(): # 描述算子计算过程 res = tbe.vabs(data) # 生成schedule对象 sch = dsl.auto_schedule(res) # 定义build配置参数 config = {"print_ir" : True, "need_build" : True, "name" : "abs_28_28_float16", "tensor_list" : [data,res] } # build算子 dsl.build(sch, config)
父主题: 编译接口