BuildCCE
功能说明
BuildCCE的功能是,生成用户在目标机上定义的TIK描述语言,并将TIK描述语言编译成昇腾AI处理器上可执行的二进制代码,以及对应的配置文件。
函数原型
BuildCCE(kernel_name, inputs, outputs, output_files_path=None, enable_l2=False, config=None, flowtable=None, evaluates=None, extend_params=None)
参数说明
参数名称 |
输入/输出 |
含义 |
---|---|---|
kernel_name |
输入 |
|
inputs |
输入 |
|
outputs |
输入 |
|
output_files_path |
输入 |
编译后目标文件输出文件路径,支持string类型。
|
enable_l2 |
输入 |
外存是否是L2,支持Bool类型。默认值为False。 该参数不生效。 |
config |
输入 |
字典类型,包括key和value,key为字符串格式,用于配置算子编译信息。 配置格式: config = {"key":value} 配置示例: config = {"tbe_debug_level":2,"enable_const_fold":True,"double_buffer_non_reuse":True} 当前支持的key为:
|
flowtable |
输入 |
传入类型:由scope为“scope_gm”的Tensor或InputScalar组成的list或者tuple。 flowtable参数列表,用于传入Tiling参数(例如在动态shape场景下,由算子选择器计算得到)。该列表中的参数个数和inputs的参数个数之和小于等于64。 |
evaluates |
输入 |
调试参数,用户在编译阶段给已定义的全局的scalar变量赋值。 字典类型,包括key和value,key为scalar的变量名,是Scalar格式;value为具体值,支持python的int, float。 配置格式: evaluates = {key : value} 配置示例: a = tik_instance.Scalar(dtype="float16") a.set_as(1) tik_instance.BuildCCE(..., evaluates = {a : 2}) |
extend_params |
输入 |
扩展参数,字典类型,包括key和value, key表示扩展参数名称,数据类型为字符串, value表示扩展参数值,具体类型和key相关。 示例: extend_params = {"param1": value1, "param2": value2} 当前支持的扩展参数请见表2。 |
扩展参数名称 |
参数说明 |
---|---|
build_multi_kernels |
根据tiling策略集合编译生成tiling策略对应的kernel,kernel名与tiling策略在集合里的索引有关,并会将这些kernel封装在同一个.o文件中,运行的框架会自动根据tiling策略调用相应的功能。 配置示例: tik_instance.BuildCCE(..., extend_params={"build_multi_kernels":{ "tiling_key":[Scalar1, Scalar2], "tiling_key_value": [[Scalar1_val_1,Scalar2_val_1], [Scalar1_val_2,Scalar2_val_2]]}}) 其中, tiling_key为tiling策略的关键词,配置要求为:
tiling_key_value为tiling策略的关键词所对应的值,配置要求为:
|
支持的型号
Atlas 200/300/500 推理产品
Atlas 训练系列产品
Atlas推理系列产品AI Core
Atlas推理系列产品Vector Core
Atlas A2训练系列产品/Atlas 800I A2推理产品
Atlas 200/500 A2推理产品
注意事项
- 同一tensor不能同时在inputs和outputs中,不然TIK将报错。
- 所有scope_gm中的tensor必须在inputs或者在outputs中(除非是workspace中的Tensor或者是有赋初值init_value的Tensor),否则编译报错。
- BuildCCE在无输出时会指定一个长度为1的数据为0的数组,即设置outputs=[],返回值为[ [0] ]。
- inputs中需要将Tensor放置在InputScalar前面。
- flowtable中需要将Tensor放置在InputScalar前面,并且只允许存在一个Tensor。
- evaluates只会改变初次scalar定义的值, evaluates字典最大支持16个元素。
返回值
无
调用示例
from tbe import tik tik_instance = tik.Tik() data_A = tik_instance.Tensor("float16", (128,), name="data_A", scope=tik.scope_gm) data_B = tik_instance.Tensor("float16", (128,), name="data_B", scope=tik.scope_gm) data_C = tik_instance.Tensor("float16", (128,), name="data_C", scope=tik.scope_gm) tik_instance.BuildCCE(kernel_name="simple_add",inputs=[data_A,data_B],outputs=[data_C])